luckiest-co 1.0.41 → 1.0.42

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 (64) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/package.json +1 -1
  4. package/skills/video-studio/ATTRIBUTION.md +2 -0
  5. package/skills/video-studio/CHANGELOG.md +9 -0
  6. package/skills/video-studio/LICENSE-huashu-art-motion +21 -0
  7. package/skills/video-studio/LICENSE-mg-styles-15 +21 -0
  8. package/skills/video-studio/SKILL.md +11 -7
  9. package/skills/video-studio/references/interview.md +10 -2
  10. package/skills/video-studio/references/step-2b-storyboard.md +6 -0
  11. package/skills/video-studio/references/step-3-compose.md +13 -0
  12. package/skills/video-studio/references/step-4-deliver.md +5 -0
  13. package/skills/video-studio/references/storyboard.md +1 -0
  14. package/skills/video-studio/references/styles/3d-render.md +39 -0
  15. package/skills/video-studio/references/styles/anime-light.md +55 -0
  16. package/skills/video-studio/references/styles/aurora-glass.md +40 -0
  17. package/skills/video-studio/references/styles/bauhaus.md +46 -0
  18. package/skills/video-studio/references/styles/cel-boil.md +41 -0
  19. package/skills/video-studio/references/styles/chiaroscuro.md +53 -0
  20. package/skills/video-studio/references/styles/collage.md +46 -0
  21. package/skills/video-studio/references/styles/comic-pop.md +49 -0
  22. package/skills/video-studio/references/styles/constructivist.md +54 -0
  23. package/skills/video-studio/references/styles/cubist.md +49 -0
  24. package/skills/video-studio/references/styles/cut-paper.md +57 -0
  25. package/skills/video-studio/references/styles/era-styles.md +29 -0
  26. package/skills/video-studio/references/styles/finance-chart.md +60 -0
  27. package/skills/video-studio/references/styles/flat-vector.md +41 -0
  28. package/skills/video-studio/references/styles/grain-flat-illustration.md +48 -0
  29. package/skills/video-studio/references/styles/hud.md +41 -0
  30. package/skills/video-studio/references/styles/impressionist.md +48 -0
  31. package/skills/video-studio/references/styles/ink-wash.md +49 -0
  32. package/skills/video-studio/references/styles/isometric.md +40 -0
  33. package/skills/video-studio/references/styles/keynote-ui.md +59 -0
  34. package/skills/video-studio/references/styles/kinetic-type.md +58 -0
  35. package/skills/video-studio/references/styles/line-art.md +41 -0
  36. package/skills/video-studio/references/styles/liquid.md +40 -0
  37. package/skills/video-studio/references/styles/math-explainer.md +58 -0
  38. package/skills/video-studio/references/styles/morph.md +39 -0
  39. package/skills/video-studio/references/styles/mosaic.md +52 -0
  40. package/skills/video-studio/references/styles/newsroom-collage.md +60 -0
  41. package/skills/video-studio/references/styles/pixel.md +46 -0
  42. package/skills/video-studio/references/styles/pointillist.md +49 -0
  43. package/skills/video-studio/references/styles/presenter-explainer.md +57 -0
  44. package/skills/video-studio/references/styles/retro-cgi.md +52 -0
  45. package/skills/video-studio/references/styles/science-explainer.md +59 -0
  46. package/skills/video-studio/references/styles/sticker-explainer.md +40 -0
  47. package/skills/video-studio/references/styles/storytime.md +60 -0
  48. package/skills/video-studio/references/styles/swirl-brushwork.md +53 -0
  49. package/skills/video-studio/references/styles/synthwave.md +47 -0
  50. package/skills/video-studio/references/styles/variety-show.md +40 -0
  51. package/skills/video-studio/references/styles/watercolor-anime.md +50 -0
  52. package/skills/video-studio/references/styles/whiteboard.md +60 -0
  53. package/skills/video-studio/references/styles.md +117 -0
  54. package/skills/video-studio/scripts/qa.mjs +40 -0
  55. package/skills/video-studio/scripts/qa.test.mjs +23 -1
  56. package/skills/video-studio/scripts/storyboard.schema.json +2 -0
  57. package/skills/video-studio-art-director/CHANGELOG.md +7 -0
  58. package/skills/video-studio-art-director/SKILL.md +66 -5
  59. package/skills/video-studio-art-director/references/palettes.md +22 -0
  60. package/skills/video-studio-director/CHANGELOG.md +6 -0
  61. package/skills/video-studio-director/SKILL.md +21 -5
  62. package/skills/video-studio-director/references/jury.md +63 -0
  63. package/skills/video-studio-motion/CHANGELOG.md +4 -0
  64. package/skills/video-studio-motion/SKILL.md +34 -5
@@ -9,7 +9,7 @@
9
9
  "name": "luckiest",
10
10
  "source": "./",
11
11
  "description": "Plan, go, finish, plus bundled free Luckiest skills that work in Claude Code, web chat, and Cowork.",
12
- "version": "0.1.40",
12
+ "version": "0.1.41",
13
13
  "author": { "name": "Luckiest" }
14
14
  }
15
15
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luckiest",
3
3
  "description": "Plan, go, finish. Guided planning, progress dashboards, and your luckiest.co tribe inside Claude Code.",
4
- "version": "0.1.40",
4
+ "version": "0.1.41",
5
5
  "author": { "name": "Luckiest" }
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luckiest-co",
3
- "version": "1.0.41",
3
+ "version": "1.0.42",
4
4
  "description": "Luckiest for Claude Code: plan, go, finish. Your luckiest.co skills and tribe, inside Claude.",
5
5
  "bin": {
6
6
  "luckiest-co": "./bin/install.js"
@@ -13,6 +13,8 @@ projects. Upstream license texts are kept beside this file.
13
13
  | **HyperFrames student kit** by Nate Herk and contributors (`hyperframes-student-kit`) | MIT for the original kit; the Student Kit Use Permission for its pipeline skills, style library, templates, and editing tools | Rewritten rules and ported scripts in the `luckiest-video-studio-cuts`, `-talk`, and `-reel` sub-skills | `LICENSE-student-kit`, `LICENSE-student-kit-pipeline` |
14
14
  | **Motion OS** by Jason Lee (`jasonlee-breadcrumb/motion-os`) | MIT | The review player in the `luckiest-video-studio-review` sub-skill (`editor/index.html`, `editor/serve.mjs`) and the `reel.json` format; see that sub-skill's `ATTRIBUTION.md` | `luckiest-video-studio-review/LICENSE-motion-os` |
15
15
  | **motionmaxxing** by Tejas Makwana (`Tejashmakwana/motionmaxxing`, FinalMotion, finalmotion.video), commit 8c8ec0f2 | Apache-2.0 | The beat contract, render-gate posture and `NOTE.md` review note, the `endhold`, `blankframes` and `hud` gate thresholds in `scripts/qa.mjs`, the no-crossfade transition table, and the sound-arc numbers in `references/audio.md`. Rewritten in our own words; no code, runtime, media, studies or `library/` rows are copied | `LICENSE-motionmaxxing` |
16
+ | **mg-styles-15** by Vincentwei1021 (`vincentwei1021/mg-styles-15`) | MIT | The 15 motion-design styles in `references/styles/` (palettes, signature features, beat seeds), the shared craft checklist, and the two-round jury review rubric. Translated and rewritten for HyperFrames; no films, audio code, samples or fonts are copied | `LICENSE-mg-styles-15` |
17
+ | **huashu-art-motion** by alchaincyf (`alchaincyf/huashu-art-motion`) | MIT | The animation-grammar and art-style cards in `references/styles/` and `references/styles/era-styles.md`, plus the techniques noted in `CHANGELOG.md` 1.16.0. Translated from Chinese and rewritten; no engine code, scenes, fonts or images are copied | `LICENSE-huashu-art-motion` |
16
18
 
17
19
  Studied, not copied:
18
20
 
@@ -1,5 +1,14 @@
1
1
  # Changelog — luckiest-video-studio
2
2
 
3
+ ## 1.16.0 — 2026-10-12
4
+
5
+ - Style library: 38 style cards in `references/styles/` plus 18 era styles in `styles/era-styles.md`, indexed by `references/styles.md`. 15 motion-design styles from mg-styles-15 (flat vector, line art, isometric, soft 3D, cel boil, paper cut collage, liquid, morph, Bauhaus, synthwave, aurora glass, variety show, sticker explainer, pixel, HUD), 9 explainer grammars and 14 art styles from huashu-art-motion. Each card: palette, motion numbers, signature features, a beat seed, sound, and how to build it in HyperFrames. Both sources MIT; famous names appear only as trigger words.
6
+ - Styles are picked from the prompt (trigger match), `--style <id>`, or a new Style question in the interview with 3 offers per video type plus "Pick one for me". When all three offers are glossy, one hand-made style is offered. `style` is stored in `brief.md`, `storyboard.json` and `art-direction.json`.
7
+ - The paper cut collage card reuses the showreel `papercut` look and the cards `01-paper-collage` pack.
8
+ - New `qa.mjs storyboard` gate (with tests): flat pictures, scenes over 8 s, text-led opening or ending, text-led share over 30%, unknown style; yellows for camera streaks, accent overuse and weak verbs. New optional `scenes[].camera`.
9
+ - Key frames before motion and one shared cue sheet (`step-3-compose.md`), final checks for tofu, edge clipping, thin-line shimmer and banding (`step-4-deliver.md`), and `NOTE.md` part 6 is now the ranked top three weaknesses plus how each signature feature is realized.
10
+ - Ideas held for later: pace gate, audio QC gate, motion blur by sub-frame averaging, determinism gate, one-command delivery (see `.luckiest/upstream-mg-huashu.md`).
11
+
3
12
  ## 1.15.0 — 2026-10-12
4
13
 
5
14
  - Three new QA gates in `scripts/qa.mjs`, each with a failing and a passing test: `endhold` (end card held over 1.4 s, or a final shot over a quarter of the film), `blankframes` (more than 3 empty swatch frames in a row) and `hud` (HUD counters, timecodes, BPM/FPS, greetings, "label · $value"; text in `data-ui` product UI is exempt, tracked caps only warn).
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 alchaincyf (花叔 · 花生)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Vincentwei1021
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,10 +1,10 @@
1
1
  ---
2
- name: video-studio
3
- description: "Make product launch videos, product demos with motion design between demo shots, and logo showcases, all editable after render. Starts with a short context interview, plans a scripted storyboard the user approves scene by scene in a review player before anything renders, builds motion scenes with HyperFrames, records or places demo footage, renders each scene as its own clip, then hands back an MP4 plus a storyboard.json that re-renders one scene at a time, a review player for edits and notes (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', 'portfolio reel', 'animate my logos', 'brand reel', 'turn my talking-head recording into a reel', 'add graphics over me talking', or 'change scene 3 of the video'. For AI-generated footage, avatars, and text-to-video models use luckiest-video. For what to post and when use luckiest-social."
2
+ name: luckiest-video-studio
3
+ description: "Make product launch videos, product demos with motion design between demo shots, and logo showcases, all editable after render, in 38 named styles. Starts with a short context interview, plans a scripted storyboard the user approves scene by scene in a review player before anything renders, builds motion scenes with HyperFrames, records or places demo footage, renders each scene as its own clip, then hands back an MP4 plus a storyboard.json that re-renders one scene at a time, a review player for edits and notes (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', 'portfolio reel', 'animate my logos', 'brand reel', 'turn my talking-head recording into a reel', 'add graphics over me talking', or 'change scene 3 of the video'. 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.15.0"
7
+ version: "1.16.0"
8
8
  listing_id: luckiest-video-studio
9
9
  author: luckiest
10
10
  ---
@@ -19,13 +19,13 @@ an MP4.
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.15.0" }`. If it returns
22
+ `{ listingId: "aff888e4-9ee9-4f73-af08-74d5d09d3c10", installedSemver: "1.16.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.15.0", matched: true, success: <true if the skill completed, false otherwise> }`.
28
+ `{ listing_id: "luckiest-video-studio", skill_version: "1.16.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
 
@@ -69,6 +69,7 @@ in `<skill-dir>/assets/sfx/`. Resolve it; never assume an install path.
69
69
  |---|---|---|
70
70
  | `--mode` | `launch`, `demo`, `logos` | inferred |
71
71
  | `--tone` | preset or freeform ([references/tones.md](references/tones.md)) | inferred |
72
+ | `--style` | a style id from [references/styles.md](references/styles.md); its card is `references/styles/<id>.md`. 38 looks (flat vector, synthwave, whiteboard explainer, paper collage, ink wash...) plus era styles | named in the request, else asked |
72
73
  | `--format` | `landscape`, `vertical`, `square`: the master size scenes are designed at | `landscape` |
73
74
  | `--formats` | comma list of `landscape`, `vertical`, `square`: render the same video once per format, one file each | master only |
74
75
  | `--duration` | seconds | per mode |
@@ -129,7 +130,9 @@ produces `final.mp4` and `storyboard.json`.
129
130
  Before anything else on a new run, find out who the video is for, the one
130
131
  message, where it will be posted (platform, format, length), why now (the call to
131
132
  action), and the type: HyperFrames motion graphics, AI-generated video, or a mix.
132
- Also references, must-show assets, and voice. Infer what the request and the repo
133
+ Also the style ([references/styles.md](references/styles.md): taken from the
134
+ request when it names one, otherwise offered as a choice), references, must-show
135
+ assets, and voice. Infer what the request and the repo
133
136
  already answer and say so in one line, then ask the rest with AskUserQuestion: at
134
137
  most 4 questions per call, at most 2 calls. Write the answers to `brief.md`. With
135
138
  `--yes`, ask nothing: infer the brief, write it, and show it.
@@ -377,7 +380,8 @@ changes too small to see are left.
377
380
  any gate skipped and why in one line.
378
381
  5. One sentence per contact-sheet frame: what is on screen, what the hero is, and
379
382
  whether it would pass as a slide.
380
- 6. What you would still improve.
383
+ 6. The honest top three weaknesses, ranked, and with a `style`, how each
384
+ signature feature on its card is realized.
381
385
 
382
386
  Write part 5 from the contact sheet before reading any gate result, so the
383
387
  numbers do not decide what you see. Describe what was checked. Never call the
@@ -14,6 +14,12 @@ repo states one value for it, not when you could guess it. When sources disagree
14
14
  candidates (two audiences), the field is open: ask, with those candidates as the
15
15
  options.
16
16
 
17
+ Style is answered when the request names one: match it against the Triggers in
18
+ [styles.md](styles.md) ("make it synthwave", "paper cut look", "like a
19
+ whiteboard explainer"). One match fills the field and is said in the inferred
20
+ line. Several matches make the Style question with only those options. A reference
21
+ link the user pastes fills References.
22
+
17
23
  ## 2. Ask what is left
18
24
 
19
25
  Use AskUserQuestion. At most 4 questions per call and at most 2 calls. Skip every
@@ -32,7 +38,7 @@ Each question offers 2 to 4 options drawn from the repo (the user can always pic
32
38
  | 1 | Where | Where will it be posted? | "X and LinkedIn, 16:9, 20s", "TikTok and Reels, 9:16, 30s", "YouTube or website, 16:9, 60-90s" |
33
39
  | 1 | Type | What kind of video? | "Motion graphics (HyperFrames)", "AI-generated video", "A mix of both" |
34
40
  | 2 | Why now | What should viewers do after watching? | "Sign up", "Join the waitlist", "Watch the launch", with the real URL |
35
- | 2 | References | Any video or style you want it to feel like? | "No reference", "I'll paste a link" |
41
+ | 2 | Style | What style should it have? | 3 styles for this video type from [styles.md](styles.md), then "Pick one for me (Recommended)". "Other" takes a style name or a reference link |
36
42
  | 2 | Must show | Anything that has to be in it? | "Our logo and the dashboard", "A real customer number", "Nothing specific" |
37
43
  | 2 | Voice | Voiceover or no voiceover? | "No voice, music and text only", "AI voice (Kokoro)", "I'll record it" |
38
44
 
@@ -54,6 +60,7 @@ generation (SKILL.md Step 3).
54
60
  - Where: <platforms>, <format>, <length>s
55
61
  - Type: <motion graphics | AI-generated | mix>
56
62
  - Call to action: <action>, <url>
63
+ - Style: <style id from styles.md, or "picked for me">
57
64
  - References: <links or none>
58
65
  - Must show: <assets or none>
59
66
  - Voice: <none | Kokoro | user recording>
@@ -71,5 +78,6 @@ lines or fewer and give its path, then go to Step 1.
71
78
  Ask nothing. Infer every field from the request and the repo, write `brief.md`
72
79
  with every field listed under "Inferred", show it, and continue. Defaults when
73
80
  nothing says otherwise: Where is "X and LinkedIn, 16:9" at the middle of the
74
- mode's default length (20s for `launch`), Type is motion graphics, Voice is none,
81
+ mode's default length (20s for `launch`), Type is motion graphics, Style is the
82
+ first style offered for the video type in styles.md, Voice is none,
75
83
  References and Must show are none, and a missing URL is `[confirm]`.
@@ -63,6 +63,12 @@ in `storyboard.json`.
63
63
 
64
64
  ## 4. Approve one style frame
65
65
 
66
+ First lint the board: `node <skill-dir>/scripts/qa.mjs storyboard <output-dir>`.
67
+ Fix every red (flat pictures, scenes over 8s, text-led opening or ending, more
68
+ than 30% text-led scenes, unknown style). Read the yellows. With a style set, the
69
+ art director offers three compositions of the hook frame before this approval
70
+ (art director section 7).
71
+
66
72
  Build only the hook scene (the first scene) as Step 3 describes, with the root
67
73
  `index.html` hosting just that scene for now, pass `hyperframes check`, and capture
68
74
  its hold frame as a still. No video render is needed:
@@ -233,6 +233,18 @@ Write every scene so the same HTML lays out at any of the three sizes:
233
233
 
234
234
  ---
235
235
 
236
+ ## Key frames before motion
237
+
238
+ Build the look as stills first: render the hold frame of 6 to 10 key moments and
239
+ look at each as a poster (hierarchy, negative space, kerning, 5% margins). Only
240
+ then animate. Preview motion at draft quality and step the fastest moves frame by
241
+ frame: spacing, arcs, overlap, anticipation and follow-through, no dead spans.
242
+
243
+ Keep one cue sheet, the beat and hit times in `storyboard.json` and the SFX cue
244
+ list, that both the picture and the sound read from. A hit moved in one is moved
245
+ in the other. With a style card, map each signature feature to a scene in
246
+ `plan.md` before building.
247
+
236
248
  ## Self-review checklist
237
249
 
238
250
  Before moving to delivery, verify:
@@ -247,4 +259,5 @@ Before moving to delivery, verify:
247
259
  - [ ] Sequential events (cards, stats, list items) snap to consecutive `beats[]` timestamps (±0.10s), marked `// beat-grid` (or natural timing was chosen for readability).
248
260
  - [ ] The composition shows at least one real UI, copy, or visual element from the project.
249
261
  - [ ] Total duration is 15-25 seconds.
262
+ - [ ] With a `style`, every signature feature on its card is on screen, and each override is listed in `plan.md`.
250
263
  - [ ] Hyperframes check passes, or any blocker is documented for the user.
@@ -9,6 +9,11 @@ npx hyperframes check # the single pre-render gate — fix every error it repo
9
9
 
10
10
  Fix all errors. `check` is the single pre-render gate — run it and fix everything it reports, including WCAG contrast failures (they gate as errors, not warnings). Each contrast finding carries a suggested compliant color, so apply it or adjust within the palette family and re-run `check` — most fixes need no screenshot. There is no per-element contrast escape hatch for real text; the only bypass is `check --no-contrast`, which skips the entire WCAG pass (all-or-nothing), not a way to accept one borderline element. For exact contrast thresholds, layout escape hatches, and reporting details, follow the current hyperframes-cli `check` guidance. `check`'s layout pass backstops the "keep all text readable" creative law — fix any reported overflow.
11
11
 
12
+ Then check what `check` cannot see: no fallback fonts or tofu (every face is a
13
+ local `@font-face` and every glyph exists), nothing clipped at the frame edges,
14
+ no shimmer on thin lines (at least 1.5px at 1080p), no gradient banding (add 1-2%
15
+ grain or dither).
16
+
12
17
  For a visual gut-check before rendering, optionally capture key frames:
13
18
 
14
19
  ```bash
@@ -13,6 +13,7 @@ this file and re-renders only what it touched. Schema:
13
13
  "title": "Acme launch",
14
14
  "mode": "demo",
15
15
  "tone": "polished",
16
+ "style": "keynote-ui",
16
17
  "format": { "width": 1920, "height": 1080, "fps": 30 },
17
18
  "formats": ["landscape", "vertical", "square"],
18
19
  "hyperframes": "0.8.84",
@@ -0,0 +1,39 @@
1
+ # Soft 3D Render
2
+
3
+ - id: `3d-render`
4
+ - Source: mg-styles-15 `prompts/04-3d-render.md` (MIT, Vincentwei1021)
5
+ - Best for: premium product ident, brand sting, phone/drink/sneaker spots, satisfying loops
6
+ - Not for: fast cutty edits, flat graphic looks, long runtimes on a weak GPU
7
+ - Triggers: 3D, C4D, Cinema 4D, Octane, Redshift, Blender render, clay render, soft pastel 3D, jelly, glossy plastic, cloner, satisfying, ASMR, product ident, Maxon reel
8
+ - Tone cell: calm-soft
9
+ - Clock: smooth 24 fps
10
+
11
+ ## Look
12
+ Pastel studio with an infinite cyc backdrop, big soft area lights plus an HDRI, shallow depth of field (about f/1.8 feel), real motion blur. Material trio: SSS gummy (candy pink, peach), glossy plastic (cream, lilac), frosted glass or chrome accent. AO, soft reflections, subtle subsurface glow. Hero is an inflated, bevelled 3D wordmark or glossy jelly logo with an invented brand name. Clean hero composition at the end.
13
+
14
+ ## Motion
15
+ Cloner-style grid of glossy pills or spheres ripples with an effector wave. Hero drops in with squash and stretch via a damped spring, collides with and displaces the field. Long-tail ease on the camera: about 80% of the move in the first 20% of the time, very slow finish. Physics-feel everywhere, nothing linear. Impacts drive the cuts.
16
+
17
+ ## Signature features (judged against these)
18
+ - Physically plausible materials: SSS soft gel, glossy plastic, glass or chrome.
19
+ - Soft studio three-point lighting plus HDRI and AO.
20
+ - Shallow depth of field with real motion blur.
21
+ - Cloner array with a wave effector.
22
+ - Damped-spring jiggle and soft-body collision on the hero.
23
+ - Camera long-tail ease, final hero held about 1s.
24
+ - 24 fps cinematic feel, candy palette.
25
+
26
+ ## 10-second beat seed
27
+ - 0-1.2s: pastel cyc, cloner field already rippling, first drop of the hero.
28
+ - 1.2-5s: wave builds, hero lands and displaces the field.
29
+ - 5-7s (hero at 60-75%): collision, wordmark inflates and jiggles, camera long-tail push.
30
+ - 7-10s: settle to a clean composition, hold 1s with a slow idle wobble.
31
+
32
+ ## Sound
33
+ Airy cinematic pad with ASMR-style soft thuds, squishes and bubbly pops, frame-synced to impacts.
34
+
35
+ ## Build it in HyperFrames
36
+ Blender is not available. Use Three.js (WebGL2) with MeshPhysicalMaterial (clearcoat, sheen, transmission, thickness for SSS-like glow), RoomEnvironment or an HDRI for lighting, SSAO plus a bokeh pass for DOF, and a sub-frame accumulation buffer (render 8-16 sub-times per frame, average) for real motion blur. Instanced mesh for the cloner, the wave as a closed-form function of (distance, t). Hero springs are closed-form damped oscillators, no stateful physics.
37
+
38
+ ## Watch out
39
+ Browser render cost: cap sub-frames and instance counts. Muddy transmission on dark backgrounds. SSS is faked, tune with a rim light. Without DOF and motion blur it reads as a game engine.
@@ -0,0 +1,55 @@
1
+ # Anime Light (volumetric cel)
2
+
3
+ - id: `anime-light`
4
+ - Source: huashu-art-motion `35_shinkai.md` (MIT)
5
+ - Best for: romantic or nostalgic brand films, travel, music visuals, summer campaigns, product reveals with a sky
6
+ - Not for: flat UI, data, gritty or dark-edgy brands
7
+ - Triggers: makoto shinkai, your name, anime sky, lens flare, god rays, cumulonimbus, cel shading, golden hour, anime light
8
+ - Tone cell: calm-soft
9
+ - Clock: smooth 30/60 fps
10
+
11
+ ## Look
12
+ A near-realistic background (cool-warm wall gradients, window frames, wires, rooftops) lit by a huge sky, with cel-shaded subjects on top.
13
+ - Skin `#ffe8dc / #f2b6a8`, hair highlight `#f8d681 / #d8a050`, white `#fbfbfe / #b9c3dc`, navy `#2c3a66 / #1b2446`, line `#6a4632` at 2.2 px.
14
+ - Cloud silhouettes `#b7c6e6` to `#8297c6` with bright white cores toward the sun.
15
+ - Light comes from the window: shadow falls lower right (light dir -1, -0.55). Backlit subjects (against a window) put shadow below and add a thin warm rim `rgba(255,220,160,0.55)`.
16
+ - Eyes: white 8x12, vertical iris gradient `#1f3f7a` to `#3f7fd0` to `#9fd4ff`, two highlights.
17
+ - Final grade: bloom plus soft-light split toning (cool shadows, warm highlights).
18
+
19
+ ## Motion
20
+ - Clouds boil and drift at about 10 px/s, each puff breathing `0.05*sin(1.3t)`.
21
+ - Light shafts pulse `0.75+0.25*sin(3.4t)`, 60 dust motes twinkle.
22
+ - Lens flare: sun core radius 130, 10 spikes rotating 0.25 rad/s, a horizontal streak 840x4, five hexagon ghosts along the sun-to-center line.
23
+ - A droplet slides down glass leaving a trail; sheer curtain and its shadow sway; birds flap; hair moves in wind.
24
+ - Transition family: a diagonal sweep of light flare, bright band with streaks and ghosts, wipes the old frame.
25
+
26
+ ## Signature features (judged against these)
27
+ - Hard-edged cel shadow shifted off the shape toward the lit side (evenodd clip), plus a rim line.
28
+ - Cumulus clouds from silhouette, offset bright core and a blur plus sharp double layer.
29
+ - Triangular or wedge light shafts with floating dust.
30
+ - Hexagonal flare ghosts aligned on one axis.
31
+ - Window-shaped light patches on floors and walls.
32
+ - Bloom pass (render small, blur 6 px, screen at 0.28).
33
+ - Sun inside the glass, never on the frame edge.
34
+
35
+ ## 10-second beat seed
36
+ - 0-1.2s: wide sky, clouds already moving, shaft of light.
37
+ - 1.2-6s: subject action, curtain, droplet, birds.
38
+ - 6-7.5s (hero): sun peeks, flare sweeps across the frame.
39
+ - 8.8-10s: hold with dust and cloud drift.
40
+
41
+ ## Sound
42
+ Piano and strings with a pop-rock lift, 110-130 BPM. Airy shimmer on the flare sweep.
43
+
44
+ ## Build it in HyperFrames
45
+ Canvas 2D layers or Three.js sky plane.
46
+ - Cel function: clip to the shape, subtract the shape shifted by `(lx*sd, ly*sd)` (evenodd) for shadow; same with reverse shift for rim. Order: fill, shadow, rim, line, so occlusion is correct without hidden-line removal.
47
+ - Clouds: draw all puffs as blue-gray silhouettes, add a bright radial 0.82r sphere offset toward the sun per puff, blur 3 px, overlay 55% sharp.
48
+ - Cache light shafts blurred 18 px, composite with screen.
49
+
50
+ ## Watch out
51
+ - Current weak spot: interior backgrounds lack detail density.
52
+ - Sun on a window corner makes the flare spill onto the wall like a lamp. Keep it inside the glass, flare radius 130 or less.
53
+ - One radial gradient per cloud with a rim arc reads as soap bubbles.
54
+ - A full-width flare streak (1800 px) looks like a bug line. Keep it near 840 px at alpha 0.35.
55
+ - Droplets drawn solid look like bubbles. Draw only a lower arc, alpha 0.22, and one highlight.
@@ -0,0 +1,40 @@
1
+ # Aurora Liquid Glass
2
+
3
+ - id: `aurora-glass`
4
+ - Source: mg-styles-15 `prompts/12-aurora-glass.md` (MIT, Vincentwei1021)
5
+ - Best for: AI product launch, premium software reveal, OS or app feature film, slow luxurious tech brand pieces
6
+ - Not for: high energy, comedy, hand-made looks, anything fast
7
+ - Triggers: glassmorphism, liquid glass, aurora, mesh gradient, frosted glass, blur gradient, iOS 26, AI launch, translucent, soft glow, premium tech
8
+ - Tone cell: calm-soft
9
+ - Clock: smooth 30/60 fps
10
+
11
+ ## Look
12
+ Deep indigo-black base. 4-5 aurora blobs in adjacent hues only (violet, blue, cyan, magenta), blurred 80-150px, blended into a mesh gradient. 3-5% noise dither across the frame to kill banding. Frosted glass cards: backdrop blur about 30px (range 20-40), 5-10% white fill, 1px inner highlight at 30% white, large corner radius. Micro-UI inside (chat bubble, voice waveform, toggles). Light elegant sans for the title, for example an invented "Aurora, think in light". Dark base with bright blobs works better than a light base.
13
+
14
+ ## Motion
15
+ Everything slow. Blobs drift on bezier paths, 20-40 second loops. Cards float in with parallax depth and slight 3D tilt. Micro-UI enters with opacity plus an 8px rise only. Easing is sine or near-linear breathing. The wow moment: a Liquid-Glass lens (true refraction, chromatic dispersion on the rim, specular edge) glides across and magnifies the aurora and cards. Nothing fast.
16
+
17
+ ## Signature features (judged against these)
18
+ - Large blurred color blobs drifting slowly, adjacent hues only.
19
+ - Glass cards with blur, 5-10% white fill, 1px 30% white edge, big radius.
20
+ - Refracting lens with rim dispersion and specular edge.
21
+ - 3-5% noise dither, no banding.
22
+ - Sine or linear easing, text enters by opacity plus 8px rise.
23
+ - Parallax depth and subtle 3D tilt on cards.
24
+ - No sudden or fast motion anywhere.
25
+
26
+ ## 10-second beat seed
27
+ - 0-1.2s: aurora already breathing, first card eases in.
28
+ - 1.2-4s: cards float in with parallax, micro-UI animates.
29
+ - 4-7s (hero at 60-75%): glass lens glides across, magnifying cards and aurora.
30
+ - 7-8.5s: title fades in with the 8px rise.
31
+ - 8.5-10s: hold, blobs still drifting.
32
+
33
+ ## Sound
34
+ Ambient cinematic pad, soft shimmer, very subtle UI ticks.
35
+
36
+ ## Build it in HyperFrames
37
+ WebGL2 shader for the aurora: sum of soft radial falloffs at Bezier/Lissajous positions, plus blue-noise dither. Glass cards in DOM with CSS backdrop-filter, or draw them in the same shader by sampling a blurred copy. Lens: SDF rounded shape that offsets the sample UV by the SDF gradient and splits RGB with slightly different offsets. Positions are closed-form sines of t, so every frame is deterministic.
38
+
39
+ ## Watch out
40
+ backdrop-filter may not render in headless capture: test, and fall back to a shader blur. Banding in the dark gradient. Muddy colors if non-adjacent hues blend. Do not speed it up to fill time.
@@ -0,0 +1,46 @@
1
+ # Bauhaus Kinetic Poster
2
+
3
+ - id: `bauhaus`
4
+ - Source: mg-styles-15 `prompts/09-bauhaus.md` (MIT, Vincentwei1021)
5
+ - Best for: beat-driven kinetic posters, music and festival intros, design-studio identity, exhibition promos
6
+ - Not for: organic or soft subjects, long copy, character stories
7
+ - Triggers: Bauhaus, geometric, Swiss, International Typographic, kinetic poster, grid, modular, Kandinsky, constructivist, primary colors, beat-synced shapes, p5.js
8
+ - Tone cell: calm-sharp
9
+ - Clock: smooth 30 fps (motion quantised to the 120 BPM beat grid)
10
+
11
+ ## Look
12
+ Cream paper #F1E9DA, red #E03C31, yellow #F2B705, blue #1E4FA3, black #111. Strict modular grid (for example 240px modules). Basic geometry only: quarter circles, semicircles, triangles, squares. Heavy geometric sans, small caps tagline. Subtle paper tooth and slight print misregistration allowed.
13
+
14
+ ## Motion
15
+ Everything anchors to the grid: every move is an integer number of modules, every landing on a grid line. 120 BPM (0.5s per beat), one module acts per beat: quarter circles rotate 90 degrees about a corner pivot, semicircles slide one module, triangles flip, squares split. Rotation pivots alternate between own centre, corner, and frame centre. Easing is power2.inOut or linear. No overshoot, mechanical is the feature. Phase-shifted cascade wave across the grid on the drop.
16
+
17
+ ## Signature features (judged against these)
18
+ - Only circle, triangle, rectangle forms in red, yellow, blue, black on cream.
19
+ - Every displacement is a whole number of grid modules.
20
+ - One action per beat, hits on the 0.5s grid.
21
+ - Rotation pivot alternates centre, corner, frame centre.
22
+ - No overshoot, power2.inOut or linear only.
23
+ - Phase-offset cascade across the grid.
24
+ - Final freeze is a balanced poster with vertical heavy sans word and small caps line.
25
+
26
+ ## 10-second beat seed
27
+ - 0-2s: grid lines draw, first red circle lands on a beat.
28
+ - 2-6s: composition assembles, one module per beat.
29
+ - 6-8s (hero at 60-75%): phase-shifted cascade wave across the grid.
30
+ - 8-10s: freeze into the finished poster, type set ("BAUHAUS", "FORM, FARBE, FUNKTION"), hold with a tiny paper-grain drift.
31
+
32
+ ## Sound
33
+ Minimal techno and clicks. Each flip is a pitched click or blip, kick on quarters, 120 BPM.
34
+
35
+ ## Build it in HyperFrames
36
+ SVG or Canvas with GSAP on a module-based coordinate system (x = col * 240). Compute beat = t / 0.5 and drive each module's step with floor and an eased fraction of the beat. Cascade phase = (col + row) * beat offset. Cue sheet shared with the audio so clicks match the flips exactly.
37
+
38
+ ## Watch out
39
+ Any overshoot or bounce breaks the style. Off-grid positions from sub-pixel rounding. Colour count creep. Keep the type grid-aligned too.
40
+
41
+ ## Art-history variant (huashu-art-motion `12_bauhaus`)
42
+ - Ground: aged cream paper `#ebe3cf` with soft mottling, one diagonal hairline. Palette adds blue `#2a58b4`, light blue `#b9cee0`, gray `#c6c3bb`, orange `#ee8a2a` to black `#161514`, red `#d3262b`, yellow `#efc12f`.
43
+ - Figures are circles, squares, triangles and thick rods with joint discs (cream disc, 5px black ring, black dot). No curved outlines.
44
+ - Motif motion: a long pole sweeps like a clock hand about a fixed hub (28 to 49.5 deg, ease out); a grid of window cells swaps colors at 13 fps (6 of 16 cells, never black); concentric arcs pulse outward; a ball rolls with rotation = distance / radius.
45
+ - Transition in: red, yellow and blue shapes rotate and scale up to cover the frame in 0.20s.
46
+ - Watch out: derive grid cell size from the inner width minus gaps, or cells overflow.
@@ -0,0 +1,41 @@
1
+ # Hand-Drawn Cel Boil
2
+
3
+ - id: `cel-boil`
4
+ - Source: mg-styles-15 `prompts/05-cel-boil.md` (MIT, Vincentwei1021)
5
+ - Best for: playful brand films, hand-made crafts, FX-driven stingers, anti-digital warmth
6
+ - Not for: precise data, luxury minimal, glossy tech
7
+ - Triggers: hand-drawn, frame by frame, cel animation, line boil, boiling lines, traditional animation, on twos, smear frame, cartoon FX, paper texture, Buck, Giant Ant
8
+ - Tone cell: kinetic-soft
9
+ - Clock: on twos (24 fps timeline, draws change every 2 frames; 1s for fast action, 3s on holds)
10
+
11
+ ## Look
12
+ Warm cream paper ground with paper grain multiplied at 10-15%. Ink linework that boils. Fills slightly off-register like hand coloring. Palette of 3-4: ink black, tomato red, sunny yellow, cream paper. Hand-lettered title, also boiling. Cel FX (smoke puffs, sparks, star bursts, speed lines) drawn rather than generated.
13
+
14
+ ## Motion
15
+ Animate on 2s (effective 12 fps) as the default, switch to 1s for fast action, 3s for still holds. Line boil: 3-4 slightly different line variants cycled every 2 frames (or noise displacement amount 2-5, size 50, re-seeded each 2 frames). Smear frame: stretch the object 150-300% along the move for a single frame. Anticipation and squash on the character. FX burst on top of the main animation as the transition.
16
+
17
+ ## Signature features (judged against these)
18
+ - Lines visibly boil every 2 frames, never static.
19
+ - On-twos rhythm with on-ones for fast action and on-threes for holds.
20
+ - At least one smear frame, 150-300% stretch, lasting 1 frame.
21
+ - Hand-drawn FX (smoke, sparks, stars, speed lines) layered on the main animation.
22
+ - Paper grain multiply 10-15% across the frame.
23
+ - Fills off-register from the lines.
24
+ - 3-4 colour palette.
25
+ - Title keeps boiling on the hold.
26
+
27
+ ## 10-second beat seed
28
+ - 0-1s: matchstick strike, smear frame, spark.
29
+ - 1-3s: flame spirit jumps out, anticipation and squash.
30
+ - 3-6s: it dances on twos; FX burst with smoke, sparks, star bursts, speed lines.
31
+ - 6-8.5s (hero at 60-75%): FX re-form into the hand-lettered title.
32
+ - 8.5-10s: title boils on 3s, held.
33
+
34
+ ## Sound
35
+ Playful jazzy pizzicato or xylophone bed with cartoon SFX (strike, fwoosh, pop, poof, sparkle), synced to the frame.
36
+
37
+ ## Build it in HyperFrames
38
+ Canvas 2D custom brush: centreline plus a pressure curve turned into an outline polygon. Generate 3-4 seeded jitter variants per stroke and choose the variant by floor(frame/2) mod N. Hold time with floor(t*12) for twos. Paper texture as a multiply-blended image or seeded noise canvas. Everything is a function of the frame index and seeded random.
39
+
40
+ ## Watch out
41
+ Jitter that is too large reads as shake, keep it subtle. Random without a seed breaks determinism. Do not smooth the stepped timing. Off-register fills should be small offsets (1-3px).
@@ -0,0 +1,53 @@
1
+ # Chiaroscuro Candlelight
2
+
3
+ - id: `chiaroscuro`
4
+ - Source: huashu-art-motion `32_rembrandt.md` (MIT)
5
+ - Best for: drama, luxury and heritage brands, documentary intros, whisky or coffee, serious narration
6
+ - Not for: bright playful products, flat explainers, kids' content
7
+ - Triggers: rembrandt, chiaroscuro, candlelight, caravaggio, dutch golden age, dark portrait, tenebrism, oil painting lighting
8
+ - Tone cell: calm-sharp
9
+ - Clock: smooth 30/60 fps
10
+
11
+ ## Look
12
+ Everything is painted in full light first, then a light map multiplies the whole frame so only a few pools of light remain.
13
+ - Ambient floor rgb(30,21,13) (about 13% light).
14
+ - Light pools stacked with lighter, then multiplied: window shaft (blurred wedge, alpha 0.8-0.95), window itself radius 330, face pool radius 250 alpha 0.95, chest 230 alpha 0.55, second subject 240 alpha 0.8, table 280 alpha 0.6, candle `190+40*flame` radius.
15
+ - A rim "separation light" on the wall behind the dark side (radius 300, alpha 0.35) lifts the figure from the background.
16
+ - Brown palette; heavy impasto only where light lands (hair, collar, porcelain, pearls, highlights).
17
+ - Glaze: soft-light `rgba(200,140,60,0.35)`, craquelure alpha 0.28, grain density 0.05 alpha 0.12, vignette 0.75.
18
+ - Lost edges: the subject layer is drawn once blurred 2.4 px, then overlaid sharp at 0.62.
19
+
20
+ ## Motion
21
+ - Flame flicker `flick(t) = 0.5*noise(2.2t) + 0.25*noise(6.5t)`; light pools drift +/-14 px on `noise(0.9t)`.
22
+ - Cloud shadow: `cloud = 0.5+0.5*sin(2.2t-0.6)` dims the window light by up to 35% while a dark patch crosses the glass at 260 px/s.
23
+ - 70 dust motes visible only inside the shaft, 24-frame flicker; steam rises.
24
+ - Transition family: an old-film iris, the picture closes to a black circle then pops open on the next scene.
25
+
26
+ ## Signature features (judged against these)
27
+ - Full-frame multiply light map, dark 87% of the image.
28
+ - Warm pools with one clear key, one dim fill.
29
+ - Bristle-stroke impasto highlights (parallel hairs), not offset stripes.
30
+ - Soft lost edges on the shadow side, sharp edges in the light.
31
+ - Rim light on the background behind the shadowed side.
32
+ - Flicker and cloud-shadow modulate the light, not the geometry.
33
+ - Amber glaze and craquelure on top.
34
+
35
+ ## 10-second beat seed
36
+ - 0-1.2s: near-black frame, candle flare, face emerges.
37
+ - 1.2-6s: slow reveal of subject, dust in the shaft, cloud passes the window.
38
+ - 6-7.5s (hero): light pool settles on the key object or title.
39
+ - 8.8-10s: hold, flame keeps flickering.
40
+
41
+ ## Sound
42
+ Low cello and lute, 55-70 BPM, room tone, soft crackle. Single warm swell on the reveal.
43
+
44
+ ## Build it in HyperFrames
45
+ Canvas 2D: paint bright version, then build the light map on an offscreen canvas and composite with multiply.
46
+ - Impasto stroke = `round(w/1.3)` parallel bristles, brightness +/-17, ends shortened 0-25%, line width 1.4-2.6, a shadow stroke at alpha 0.28.
47
+ - Props go on their own layer after the brush pass. Do not copy back regions from the base image (rectangular patches).
48
+ - Draw hands before cups so the oval does not cover the vessel.
49
+
50
+ ## Watch out
51
+ - Current weak spot: figures read flat (review 5/10). This style most needs a redo that gives volume to subjects.
52
+ - Three tidy offset lines for highlights read like a sticker or bandage. Use bristles.
53
+ - Grain density 0.12 alpha 0.22 makes the face look dirty. Use 0.05 / 0.12.
@@ -0,0 +1,46 @@
1
+ # Paper Cut Collage (stop-motion)
2
+
3
+ - id: `collage`
4
+ - Source: mg-styles-15 `prompts/06-collage.md` (MIT, Vincentwei1021)
5
+ - Best for: music and street-culture shorts, editorial magazine motion, surreal brand teasers, poster-like end cards
6
+ - Not for: clean corporate, data-heavy, precise product demos
7
+ - Triggers: collage, cutout, cut-out animation, paper-cut, papercut, paper cut, stop-motion, stop motion, handmade, not AI-looking, Dada, surreal, torn paper, newspaper, halftone, zine, constructivist, scissor cut, Monty Python, Terry Gilliam, Soviet poster
8
+ - Tone cell: kinetic-sharp
9
+ - Clock: stepped 12 fps (some holds at 6 fps), rendered on a 30 fps timeline
10
+
11
+ ## Look
12
+ Newsprint or kraft paper ground. Public-domain photo cutouts with a rough 2-4px white scissor edge plus halftone dots. Deep-space imagery spilling out of a flipped-open head. Bold constructivist red and black diagonal typography. Layer stack from back to front: paper texture, large color shapes, photo cutouts, handwritten doodles and tape stickers, grain adjustment layer. Disproportionate head-to-body sizes on purpose.
13
+
14
+ ## Motion
15
+ All motion is held on a 12 fps grid (6 fps for some holds) for a stop-motion feel, with random plus or minus 2px position jitter as hand placement. Puppet-style joint rotation with anchors at shoulder, elbow, jaw. Mouth opens and closes with 2-3 swap frames. The top of the head flips open like a lid. Transitions: a hand slaps an element onto the page, torn-paper strips, or a full paper flip to the end card.
16
+
17
+ ## Signature features (judged against these)
18
+ - White 2-4px scissor edge on every cutout plus halftone texture.
19
+ - Motion visibly stepped at 12 fps (or 6), not smooth.
20
+ - Plus or minus 2px placement jitter.
21
+ - Jaw or mouth on a separate piece, flapping with sound.
22
+ - Disproportionate surreal assembly.
23
+ - Layered paper stack with grain on top.
24
+ - Diagonal constructivist type in red and black.
25
+ - Hand-slap or paper-flip transition.
26
+
27
+ ## 10-second beat seed
28
+ - 0-1.2s: portrait slaps onto kraft paper, jaw flaps.
29
+ - 1.2-4s: head lid flips open, space revealed, first objects spill out.
30
+ - 4-7s (hero at 60-75%): flowers, birds, planets, pointing hands, rocket pile out; torn strips slide.
31
+ - 7-8.5s: paper flip transition.
32
+ - 8.5-10s: end card with diagonal headline, held with 6 fps jitter.
33
+
34
+ ## Sound
35
+ Vinyl crackle, jazzy boom-bap bed, paper rustles, scissors snips, slaps, and a comic pop when the lid opens.
36
+
37
+ ## Build it in HyperFrames
38
+ DOM or Canvas with PNG cutouts (public-domain or CC0, backgrounds removed in advance). White edge by SVG feMorphology dilate on alpha, halftone by an SVG filter or a canvas dot pass. Quantise time with t12 = floor(t*12)/12 and drive every animation from t12. Jitter is a seeded hash of (element id, t12 step). Paper grain as a multiply layer.
39
+
40
+ ## Watch out
41
+ Smooth easing on the hold grid ruins the stop-motion feel. Do not use trademarked or recognisable-person photos, use public domain only. Halftone moire at export: keep dots larger than 4px.
42
+
43
+ ## Already built in Luckiest (reuse before building new)
44
+ - **Showreel paper-cut look:** a `logo` scene with `"recipe": "showreel"` and `data-look="papercut"` on `<html>` (`luckiest-video-studio-showreel`). Gives torn edges from a fixed-seed SVG displacement filter, paper grain, hard offset shadows, white gaps between tiles, a seeded tilt of about 1 degree per piece, and a 12 fps stepped master timeline. Verbs: slide, drop, rotate, tumble, tip, swing, snap, lift, scatter. Never morph, fold, bend, draw in place or glide.
45
+ - **Cards pack `01-paper-collage`** (`luckiest-video-studio-cards`): title, stat, section and lower-third cards in this look. Paper `#efe9dc` (kraft `#e6dcc4`), ink `#17130e`, one signature blue `#4F8CFF` per beat, red `#e23b2e`, sticker orange `#f26a1b`, serif headlines (Fraunces). Image slots render as halftone cutouts with a colored sticker outline until a real image goes in.
46
+ - Use the showreel look for the brand-film or logo scene and the cards pack for titles and stats, so the whole video shares one paper, one ink and one 12 fps clock.