hyperframes 0.5.0-alpha.8 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +7518 -5457
- package/dist/commands/contrast-audit.browser.js +2 -0
- package/dist/docs/compositions.md +35 -7
- package/dist/docs/rendering.md +4 -1
- package/dist/hyperframe-runtime.js +82 -32
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +82 -32
- package/dist/skills/gsap/SKILL.md +30 -1
- package/dist/skills/hyperframes/SKILL.md +165 -39
- package/dist/skills/hyperframes/house-style.md +3 -1
- package/dist/skills/hyperframes/patterns.md +73 -0
- package/dist/skills/hyperframes/references/beat-direction.md +102 -0
- package/dist/skills/hyperframes/references/design-picker.md +117 -0
- package/dist/skills/hyperframes/references/motion-principles.md +73 -0
- package/dist/skills/hyperframes/references/narration.md +92 -0
- package/dist/skills/hyperframes/references/prompt-expansion.md +68 -0
- package/dist/skills/hyperframes/references/techniques.md +387 -0
- package/dist/skills/hyperframes/references/transcript-guide.md +1 -45
- package/dist/skills/hyperframes/references/video-composition.md +62 -0
- package/dist/skills/hyperframes/scripts/contrast-report.mjs +10 -0
- package/dist/skills/hyperframes/templates/design-picker.html +1432 -0
- package/dist/skills/hyperframes/visual-styles.md +339 -107
- package/dist/skills/hyperframes-cli/SKILL.md +21 -27
- package/dist/studio/assets/hyperframes-player-CoI5h1xv.js +353 -0
- package/dist/studio/assets/index-BKjcNNNd.css +1 -0
- package/dist/studio/assets/index-CqiisJmo.js +93 -0
- package/dist/studio/index.html +2 -2
- package/dist/templates/_shared/AGENTS.md +7 -7
- package/dist/templates/_shared/CLAUDE.md +15 -7
- package/package.json +4 -2
- package/dist/skills/hyperframes/references/tts.md +0 -75
- package/dist/studio/assets/hyperframes-player-vibA20NC.js +0 -198
- package/dist/studio/assets/index-0Zt0t13W.css +0 -1
- package/dist/studio/assets/index-C9f5eif8.js +0 -105
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Visual Style Library
|
|
2
2
|
|
|
3
|
-
Named visual identities for HyperFrames videos. Each style is grounded in a real graphic design tradition. Use them
|
|
3
|
+
Named visual identities for HyperFrames videos. Each style is grounded in a real graphic design tradition and expressed as a DESIGN.md-compatible token block. Use them as starters — copy the YAML into your project's `design.md` front matter, then customize.
|
|
4
4
|
|
|
5
5
|
**How to pick:** Match mood first, content second. Ask: _"What should the viewer FEEL?"_
|
|
6
6
|
|
|
7
|
-
**How to use:**
|
|
7
|
+
**How to use:** Copy the style's YAML token block into `design.md` front matter. Add `## Overview`, `## Colors`, `## Typography`, `## Elevation`, `## Components`, `## Do's and Don'ts` prose sections to complete the file.
|
|
8
8
|
|
|
9
9
|
## Quick Reference
|
|
10
10
|
|
|
11
|
-
| Style | Mood | Best for |
|
|
11
|
+
| Style | Mood | Best for | Transition shader |
|
|
12
12
|
| --------------- | --------------------- | ---------------------------------- | --------------------------------- |
|
|
13
13
|
| Swiss Pulse | Clinical, precise | SaaS, data, dev tools, metrics | Cinematic Zoom or SDF Iris |
|
|
14
14
|
| Velvet Standard | Premium, timeless | Luxury, enterprise, keynotes | Cross-Warp Morph |
|
|
@@ -25,161 +25,395 @@ Named visual identities for HyperFrames videos. Each style is grounded in a real
|
|
|
25
25
|
|
|
26
26
|
**Mood:** Clinical, precise | **Best for:** SaaS dashboards, developer tools, APIs, metrics
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
28
|
+
```yaml
|
|
29
|
+
name: Swiss Pulse
|
|
30
|
+
colors:
|
|
31
|
+
primary: "#1a1a1a"
|
|
32
|
+
on-primary: "#ffffff"
|
|
33
|
+
accent: "#0066FF"
|
|
34
|
+
typography:
|
|
35
|
+
headline:
|
|
36
|
+
fontFamily: Helvetica Neue
|
|
37
|
+
fontSize: 5rem
|
|
38
|
+
fontWeight: 700
|
|
39
|
+
label:
|
|
40
|
+
fontFamily: Inter
|
|
41
|
+
fontSize: 0.875rem
|
|
42
|
+
fontWeight: 400
|
|
43
|
+
stat:
|
|
44
|
+
fontFamily: Helvetica Neue
|
|
45
|
+
fontSize: 7rem
|
|
46
|
+
fontWeight: 700
|
|
47
|
+
rounded:
|
|
48
|
+
none: 0px
|
|
49
|
+
sm: 2px
|
|
50
|
+
spacing:
|
|
51
|
+
sm: 8px
|
|
52
|
+
md: 16px
|
|
53
|
+
lg: 32px
|
|
54
|
+
motion:
|
|
55
|
+
energy: high
|
|
56
|
+
easing:
|
|
57
|
+
entry: "expo.out"
|
|
58
|
+
exit: "power4.in"
|
|
59
|
+
ambient: "none"
|
|
60
|
+
duration:
|
|
61
|
+
entrance: 0.4
|
|
62
|
+
hold: 1.5
|
|
63
|
+
transition: 0.6
|
|
64
|
+
atmosphere:
|
|
65
|
+
- grid-lines
|
|
66
|
+
- registration-marks
|
|
67
|
+
transition: cinematic-zoom
|
|
40
68
|
```
|
|
41
69
|
|
|
70
|
+
Grid-locked compositions. Every element snaps to an invisible 12-column grid. Numbers dominate the frame at 80–120px. Animated counters count up from 0. Hard cuts, no decorative transitions. Nothing floats.
|
|
71
|
+
|
|
42
72
|
---
|
|
43
73
|
|
|
44
74
|
## 2. Velvet Standard — Massimo Vignelli
|
|
45
75
|
|
|
46
76
|
**Mood:** Premium, timeless | **Best for:** Luxury products, enterprise software, keynotes, investor decks
|
|
47
77
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
78
|
+
```yaml
|
|
79
|
+
name: Velvet Standard
|
|
80
|
+
colors:
|
|
81
|
+
primary: "#0a0a0a"
|
|
82
|
+
on-primary: "#ffffff"
|
|
83
|
+
accent: "#1a237e"
|
|
84
|
+
typography:
|
|
85
|
+
headline:
|
|
86
|
+
fontFamily: Inter
|
|
87
|
+
fontSize: 3rem
|
|
88
|
+
fontWeight: 300
|
|
89
|
+
letterSpacing: 0.15em
|
|
90
|
+
textTransform: uppercase
|
|
91
|
+
body:
|
|
92
|
+
fontFamily: Inter
|
|
93
|
+
fontSize: 1rem
|
|
94
|
+
fontWeight: 300
|
|
95
|
+
lineHeight: 1.6
|
|
96
|
+
rounded:
|
|
97
|
+
sm: 0px
|
|
98
|
+
md: 2px
|
|
99
|
+
spacing:
|
|
100
|
+
sm: 16px
|
|
101
|
+
md: 32px
|
|
102
|
+
lg: 64px
|
|
103
|
+
motion:
|
|
104
|
+
energy: calm
|
|
105
|
+
easing:
|
|
106
|
+
entry: "sine.inOut"
|
|
107
|
+
exit: "power1.in"
|
|
108
|
+
ambient: "sine.inOut"
|
|
109
|
+
duration:
|
|
110
|
+
entrance: 1.2
|
|
111
|
+
hold: 3.0
|
|
112
|
+
transition: 1.5
|
|
113
|
+
atmosphere:
|
|
114
|
+
- subtle-grain
|
|
115
|
+
- hairline-rules
|
|
116
|
+
transition: cross-warp-morph
|
|
60
117
|
```
|
|
61
118
|
|
|
119
|
+
Generous negative space. Symmetrical, centered, architectural precision. Thin sans-serif, ALL CAPS, wide letter-spacing. Sequential reveals with long holds. Nothing snaps — everything glides with intention. Luxury takes its time.
|
|
120
|
+
|
|
62
121
|
---
|
|
63
122
|
|
|
64
123
|
## 3. Deconstructed — Neville Brody
|
|
65
124
|
|
|
66
125
|
**Mood:** Industrial, raw | **Best for:** Tech news, developer launches, security products, punk-energy reveals
|
|
67
126
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
127
|
+
```yaml
|
|
128
|
+
name: Deconstructed
|
|
129
|
+
colors:
|
|
130
|
+
primary: "#1a1a1a"
|
|
131
|
+
on-primary: "#f0f0f0"
|
|
132
|
+
accent: "#D4501E"
|
|
133
|
+
typography:
|
|
134
|
+
headline:
|
|
135
|
+
fontFamily: Space Grotesk
|
|
136
|
+
fontSize: 4rem
|
|
137
|
+
fontWeight: 700
|
|
138
|
+
label:
|
|
139
|
+
fontFamily: Space Mono
|
|
140
|
+
fontSize: 0.75rem
|
|
141
|
+
fontWeight: 700
|
|
142
|
+
textTransform: uppercase
|
|
143
|
+
rounded:
|
|
144
|
+
none: 0px
|
|
145
|
+
spacing:
|
|
146
|
+
sm: 4px
|
|
147
|
+
md: 12px
|
|
148
|
+
lg: 24px
|
|
149
|
+
motion:
|
|
150
|
+
energy: high
|
|
151
|
+
easing:
|
|
152
|
+
entry: "back.out(2.5)"
|
|
153
|
+
exit: "steps(8)"
|
|
154
|
+
ambient: "elastic.out(1.2, 0.4)"
|
|
155
|
+
duration:
|
|
156
|
+
entrance: 0.3
|
|
157
|
+
hold: 1.0
|
|
158
|
+
transition: 0.5
|
|
159
|
+
atmosphere:
|
|
160
|
+
- scan-lines
|
|
161
|
+
- glitch-artifacts
|
|
162
|
+
- grain-overlay
|
|
163
|
+
transition: glitch
|
|
80
164
|
```
|
|
81
165
|
|
|
166
|
+
Type at angles, overlapping edges, escaping frames. Bold industrial weight. Gritty textures: scan-line effects, glitch artifacts baked into design. Text SLAMS and SHATTERS. Letters scramble then snap to final position. Intentional irregularity — nothing should feel polished.
|
|
167
|
+
|
|
82
168
|
---
|
|
83
169
|
|
|
84
170
|
## 4. Maximalist Type — Paula Scher
|
|
85
171
|
|
|
86
172
|
**Mood:** Loud, kinetic | **Best for:** Big product launches, milestone announcements, high-energy hype videos
|
|
87
173
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
174
|
+
```yaml
|
|
175
|
+
name: Maximalist Type
|
|
176
|
+
colors:
|
|
177
|
+
primary: "#0a0a0a"
|
|
178
|
+
on-primary: "#ffffff"
|
|
179
|
+
accent-red: "#E63946"
|
|
180
|
+
accent-yellow: "#FFD60A"
|
|
181
|
+
typography:
|
|
182
|
+
headline:
|
|
183
|
+
fontFamily: Anton
|
|
184
|
+
fontSize: 8rem
|
|
185
|
+
fontWeight: 400
|
|
186
|
+
textTransform: uppercase
|
|
187
|
+
subhead:
|
|
188
|
+
fontFamily: Space Grotesk
|
|
189
|
+
fontSize: 3rem
|
|
190
|
+
fontWeight: 700
|
|
191
|
+
rounded:
|
|
192
|
+
none: 0px
|
|
193
|
+
spacing:
|
|
194
|
+
sm: 0px
|
|
195
|
+
md: 8px
|
|
196
|
+
motion:
|
|
197
|
+
energy: high
|
|
198
|
+
easing:
|
|
199
|
+
entry: "expo.out"
|
|
200
|
+
exit: "back.out(1.8)"
|
|
201
|
+
ambient: "power3.out"
|
|
202
|
+
duration:
|
|
203
|
+
entrance: 0.3
|
|
204
|
+
hold: 0.8
|
|
205
|
+
transition: 0.4
|
|
206
|
+
atmosphere:
|
|
207
|
+
- type-layers
|
|
208
|
+
- color-blocks
|
|
209
|
+
transition: ridged-burn
|
|
100
210
|
```
|
|
101
211
|
|
|
212
|
+
Text IS the visual. Overlapping type layers at different scales and angles, filling 50–80% of frame. Bold saturated colors — maximum contrast. Everything kinetic: slamming, sliding, scaling. 2–3 second rapid-fire scenes. No static moments. Fast arrivals, hard stops.
|
|
213
|
+
|
|
102
214
|
---
|
|
103
215
|
|
|
104
216
|
## 5. Data Drift — Refik Anadol
|
|
105
217
|
|
|
106
218
|
**Mood:** Futuristic, immersive | **Best for:** AI products, ML platforms, data companies, speculative tech
|
|
107
219
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
220
|
+
```yaml
|
|
221
|
+
name: Data Drift
|
|
222
|
+
colors:
|
|
223
|
+
primary: "#0a0a0a"
|
|
224
|
+
on-primary: "#e0e0e0"
|
|
225
|
+
accent-purple: "#7c3aed"
|
|
226
|
+
accent-cyan: "#06b6d4"
|
|
227
|
+
typography:
|
|
228
|
+
headline:
|
|
229
|
+
fontFamily: Inter
|
|
230
|
+
fontSize: 2.5rem
|
|
231
|
+
fontWeight: 200
|
|
232
|
+
letterSpacing: 0.05em
|
|
233
|
+
body:
|
|
234
|
+
fontFamily: Inter
|
|
235
|
+
fontSize: 0.875rem
|
|
236
|
+
fontWeight: 300
|
|
237
|
+
rounded:
|
|
238
|
+
sm: 4px
|
|
239
|
+
md: 12px
|
|
240
|
+
full: 9999px
|
|
241
|
+
spacing:
|
|
242
|
+
sm: 16px
|
|
243
|
+
md: 32px
|
|
244
|
+
lg: 64px
|
|
245
|
+
motion:
|
|
246
|
+
energy: moderate
|
|
247
|
+
easing:
|
|
248
|
+
entry: "sine.inOut"
|
|
249
|
+
exit: "power2.out"
|
|
250
|
+
ambient: "sine.inOut"
|
|
251
|
+
duration:
|
|
252
|
+
entrance: 1.0
|
|
253
|
+
hold: 2.5
|
|
254
|
+
transition: 1.5
|
|
255
|
+
atmosphere:
|
|
256
|
+
- particle-field
|
|
257
|
+
- light-traces
|
|
258
|
+
- radial-glow
|
|
259
|
+
transition: gravitational-lens
|
|
120
260
|
```
|
|
121
261
|
|
|
262
|
+
Thin futuristic sans-serif — floating, weightless, minimal. Fluid morphing compositions. Extreme scale shifts (micro → macro). Particles coalesce into numbers. Light traces data paths through the frame. Smooth, continuous, organic. Nothing hard.
|
|
263
|
+
|
|
122
264
|
---
|
|
123
265
|
|
|
124
266
|
## 6. Soft Signal — Stefan Sagmeister
|
|
125
267
|
|
|
126
268
|
**Mood:** Intimate, warm | **Best for:** Wellness brands, personal stories, lifestyle products, human-centered apps
|
|
127
269
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
270
|
+
```yaml
|
|
271
|
+
name: Soft Signal
|
|
272
|
+
colors:
|
|
273
|
+
primary: "#FFF8EC"
|
|
274
|
+
on-primary: "#2a2a2a"
|
|
275
|
+
accent-amber: "#F5A623"
|
|
276
|
+
accent-rose: "#C4A3A3"
|
|
277
|
+
accent-sage: "#8FAF8C"
|
|
278
|
+
typography:
|
|
279
|
+
headline:
|
|
280
|
+
fontFamily: Playfair Display
|
|
281
|
+
fontSize: 3rem
|
|
282
|
+
fontWeight: 400
|
|
283
|
+
fontStyle: italic
|
|
284
|
+
body:
|
|
285
|
+
fontFamily: Inter
|
|
286
|
+
fontSize: 1rem
|
|
287
|
+
fontWeight: 300
|
|
288
|
+
lineHeight: 1.7
|
|
289
|
+
rounded:
|
|
290
|
+
sm: 8px
|
|
291
|
+
md: 16px
|
|
292
|
+
lg: 24px
|
|
293
|
+
full: 9999px
|
|
294
|
+
spacing:
|
|
295
|
+
sm: 12px
|
|
296
|
+
md: 24px
|
|
297
|
+
lg: 48px
|
|
298
|
+
motion:
|
|
299
|
+
energy: calm
|
|
300
|
+
easing:
|
|
301
|
+
entry: "sine.inOut"
|
|
302
|
+
exit: "power1.inOut"
|
|
303
|
+
ambient: "sine.inOut"
|
|
304
|
+
duration:
|
|
305
|
+
entrance: 1.0
|
|
306
|
+
hold: 3.0
|
|
307
|
+
transition: 1.5
|
|
308
|
+
atmosphere:
|
|
309
|
+
- soft-gradient
|
|
310
|
+
- warm-grain
|
|
311
|
+
transition: thermal-distortion
|
|
141
312
|
```
|
|
142
313
|
|
|
314
|
+
Handwritten-style or humanist serif fonts. Personal, lowercase, delicate. Close-up framing: single element fills the frame. Slow drifts and floats, never snaps. Soft organic motion. Nothing should feel hurried or polished. Intimate, never corporate.
|
|
315
|
+
|
|
143
316
|
---
|
|
144
317
|
|
|
145
318
|
## 7. Folk Frequency — Eduardo Terrazas
|
|
146
319
|
|
|
147
320
|
**Mood:** Cultural, vivid | **Best for:** Consumer apps, food platforms, community products, festive launches
|
|
148
321
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
322
|
+
```yaml
|
|
323
|
+
name: Folk Frequency
|
|
324
|
+
colors:
|
|
325
|
+
primary: "#ffffff"
|
|
326
|
+
on-primary: "#1a1a1a"
|
|
327
|
+
accent-pink: "#FF1493"
|
|
328
|
+
accent-blue: "#0047AB"
|
|
329
|
+
accent-yellow: "#FFE000"
|
|
330
|
+
accent-green: "#009B77"
|
|
331
|
+
typography:
|
|
332
|
+
headline:
|
|
333
|
+
fontFamily: Fredoka One
|
|
334
|
+
fontSize: 4rem
|
|
335
|
+
fontWeight: 400
|
|
336
|
+
body:
|
|
337
|
+
fontFamily: Nunito
|
|
338
|
+
fontSize: 1rem
|
|
339
|
+
fontWeight: 600
|
|
340
|
+
rounded:
|
|
341
|
+
sm: 8px
|
|
342
|
+
md: 16px
|
|
343
|
+
lg: 32px
|
|
344
|
+
full: 9999px
|
|
345
|
+
spacing:
|
|
346
|
+
sm: 8px
|
|
347
|
+
md: 16px
|
|
348
|
+
lg: 32px
|
|
349
|
+
motion:
|
|
350
|
+
energy: high
|
|
351
|
+
easing:
|
|
352
|
+
entry: "back.out(1.6)"
|
|
353
|
+
exit: "elastic.out(1, 0.5)"
|
|
354
|
+
ambient: "sine.inOut"
|
|
355
|
+
duration:
|
|
356
|
+
entrance: 0.5
|
|
357
|
+
hold: 1.5
|
|
358
|
+
transition: 0.8
|
|
359
|
+
atmosphere:
|
|
360
|
+
- pattern-tiles
|
|
361
|
+
- confetti-burst
|
|
362
|
+
- color-blocks
|
|
363
|
+
transition: swirl-vortex
|
|
161
364
|
```
|
|
162
365
|
|
|
366
|
+
Bold warm rounded type. Pattern and repetition — folk art rhythm and density. Layered compositions with rich visual texture. Every frame feels handcrafted. Colorful motion: elements bounce, pop, spin into place with joy. Overshoots feel intentional. Celebratory energy.
|
|
367
|
+
|
|
163
368
|
---
|
|
164
369
|
|
|
165
370
|
## 8. Shadow Cut — Hans Hillmann
|
|
166
371
|
|
|
167
372
|
**Mood:** Dark, cinematic | **Best for:** Security products, dramatic reveals, investigative content, intense launches
|
|
168
373
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
374
|
+
```yaml
|
|
375
|
+
name: Shadow Cut
|
|
376
|
+
colors:
|
|
377
|
+
primary: "#0a0a0a"
|
|
378
|
+
on-primary: "#f0f0f0"
|
|
379
|
+
surface: "#3a3a3a"
|
|
380
|
+
accent: "#C1121F"
|
|
381
|
+
typography:
|
|
382
|
+
headline:
|
|
383
|
+
fontFamily: Oswald
|
|
384
|
+
fontSize: 4rem
|
|
385
|
+
fontWeight: 700
|
|
386
|
+
textTransform: uppercase
|
|
387
|
+
body:
|
|
388
|
+
fontFamily: Inter
|
|
389
|
+
fontSize: 0.875rem
|
|
390
|
+
fontWeight: 400
|
|
391
|
+
rounded:
|
|
392
|
+
none: 0px
|
|
393
|
+
sm: 2px
|
|
394
|
+
spacing:
|
|
395
|
+
sm: 8px
|
|
396
|
+
md: 16px
|
|
397
|
+
lg: 48px
|
|
398
|
+
motion:
|
|
399
|
+
energy: moderate
|
|
400
|
+
easing:
|
|
401
|
+
entry: "power3.out"
|
|
402
|
+
exit: "power4.in"
|
|
403
|
+
ambient: "sine.inOut"
|
|
404
|
+
duration:
|
|
405
|
+
entrance: 0.8
|
|
406
|
+
hold: 2.5
|
|
407
|
+
transition: 1.2
|
|
408
|
+
atmosphere:
|
|
409
|
+
- deep-shadow
|
|
410
|
+
- vignette
|
|
411
|
+
- grain-overlay
|
|
412
|
+
transition: domain-warp
|
|
181
413
|
```
|
|
182
414
|
|
|
415
|
+
Near-monochrome: deep blacks, cold greys, stark white + one blood accent. Sharp angular text like film noir title cards. Heavy contrast, no softness. Elements emerge from darkness — reveal is the narrative. Slow creeping push-ins, dramatic scale reveals. The pause before the hit matters. Domain Warp dissolves reality before the next scene.
|
|
416
|
+
|
|
183
417
|
---
|
|
184
418
|
|
|
185
419
|
## Mood → Style Guide
|
|
@@ -199,13 +433,11 @@ Slow creeping push-ins. Domain Warp transitions. The reveal IS the story.
|
|
|
199
433
|
|
|
200
434
|
## Creating Custom Styles
|
|
201
435
|
|
|
202
|
-
These 8 styles are
|
|
436
|
+
These 8 styles are starters — not constraints. Create your own:
|
|
203
437
|
|
|
204
438
|
1. **Name it** after a designer, art movement, or cultural reference
|
|
205
|
-
2. **
|
|
206
|
-
3. **
|
|
207
|
-
4. **
|
|
208
|
-
5. **Transition**: Which shader matches the energy?
|
|
209
|
-
6. **What NOT to do**: 2-3 explicit anti-patterns for this style
|
|
439
|
+
2. **Write YAML tokens** — `colors` (2–5 tokens), `typography` (2–3 scales), `rounded`, `spacing`, `motion` (energy + easing + duration + atmosphere + transition)
|
|
440
|
+
3. **Add prose** — one paragraph describing the feel, what to do, what to avoid
|
|
441
|
+
4. **Token references** — use `{colors.accent}`, `{typography.headline}` in component definitions
|
|
210
442
|
|
|
211
|
-
The pattern: **
|
|
443
|
+
The pattern: **YAML tokens (what) → prose rationale (why) → components (how they combine).**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hyperframes-cli
|
|
3
|
-
description: HyperFrames CLI
|
|
3
|
+
description: HyperFrames CLI dev loop — `npx hyperframes` for scaffolding (init), validation (lint, inspect), preview, render, and environment troubleshooting (doctor, browser, info, upgrade). Use when running any of these commands or troubleshooting the HyperFrames build/render environment. For asset preprocessing commands (`tts`, `transcribe`, `remove-background`), invoke the `hyperframes-media` skill instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# HyperFrames CLI
|
|
@@ -25,6 +25,7 @@ npx hyperframes init my-video # interactive wizard
|
|
|
25
25
|
npx hyperframes init my-video --example warm-grain # pick an example
|
|
26
26
|
npx hyperframes init my-video --video clip.mp4 # with video file
|
|
27
27
|
npx hyperframes init my-video --audio track.mp3 # with audio file
|
|
28
|
+
npx hyperframes init my-video --example blank --tailwind # with Tailwind v4 browser runtime
|
|
28
29
|
npx hyperframes init my-video --non-interactive # skip prompts (CI/agents)
|
|
29
30
|
```
|
|
30
31
|
|
|
@@ -32,6 +33,8 @@ Templates: `blank`, `warm-grain`, `play-mode`, `swiss-grid`, `vignelli`, `decisi
|
|
|
32
33
|
|
|
33
34
|
`init` creates the right file structure, copies media, transcribes audio with Whisper, and installs AI coding skills. Use it instead of creating files by hand.
|
|
34
35
|
|
|
36
|
+
When using `--tailwind`, invoke the `tailwind` skill before editing classes or theme tokens. The scaffold uses Tailwind v4.2 via the browser runtime, not Studio's Tailwind v3 setup.
|
|
37
|
+
|
|
35
38
|
## Linting
|
|
36
39
|
|
|
37
40
|
```bash
|
|
@@ -98,37 +101,28 @@ npx hyperframes render --format webm # transparent WebM
|
|
|
98
101
|
npx hyperframes render --docker # byte-identical
|
|
99
102
|
```
|
|
100
103
|
|
|
101
|
-
| Flag
|
|
102
|
-
|
|
|
103
|
-
| `--output`
|
|
104
|
-
| `--fps`
|
|
105
|
-
| `--quality`
|
|
106
|
-
| `--format`
|
|
107
|
-
| `--workers`
|
|
108
|
-
| `--docker`
|
|
109
|
-
| `--gpu`
|
|
110
|
-
| `--strict`
|
|
111
|
-
| `--strict-all`
|
|
104
|
+
| Flag | Options | Default | Notes |
|
|
105
|
+
| -------------------- | --------------------- | -------------------------- | ------------------------------------------------------------------ |
|
|
106
|
+
| `--output` | path | renders/name_timestamp.mp4 | Output path |
|
|
107
|
+
| `--fps` | 24, 30, 60 | 30 | 60fps doubles render time |
|
|
108
|
+
| `--quality` | draft, standard, high | standard | draft for iterating |
|
|
109
|
+
| `--format` | mp4, webm | mp4 | WebM supports transparency |
|
|
110
|
+
| `--workers` | 1-8 or auto | auto | Each spawns Chrome |
|
|
111
|
+
| `--docker` | flag | off | Reproducible output |
|
|
112
|
+
| `--gpu` | flag | off | GPU-accelerated encoding |
|
|
113
|
+
| `--strict` | flag | off | Fail on lint errors |
|
|
114
|
+
| `--strict-all` | flag | off | Fail on errors AND warnings |
|
|
115
|
+
| `--variables` | JSON object | — | Override variable values declared in `data-composition-variables` |
|
|
116
|
+
| `--variables-file` | path | — | JSON file with variable values (alternative to `--variables`) |
|
|
117
|
+
| `--strict-variables` | flag | off | Fail render on undeclared keys or type mismatches in `--variables` |
|
|
112
118
|
|
|
113
119
|
**Quality guidance:** `draft` while iterating, `standard` for review, `high` for final delivery.
|
|
114
120
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
npx hyperframes transcribe audio.mp3
|
|
119
|
-
npx hyperframes transcribe video.mp4 --model medium.en --language en
|
|
120
|
-
npx hyperframes transcribe subtitles.srt # import existing
|
|
121
|
-
npx hyperframes transcribe subtitles.vtt
|
|
122
|
-
npx hyperframes transcribe openai-response.json
|
|
123
|
-
```
|
|
121
|
+
**Parametrized renders:** the composition declares its variables on the `<html>` root with **`data-composition-variables`** — a JSON **array of declarations** (`{id, type, label, default}` per entry) that defines the schema. Scripts inside read the resolved values via `window.__hyperframes.getVariables()`. The CLI **`--variables '{"title":"Q4 Report"}'`** is a JSON **object keyed by id** that overrides those declared defaults for one render; missing keys fall through, so the same composition runs unchanged in dev preview and in production. (Sub-comp hosts can also override per-instance with **`data-variable-values`** — same object shape, scoped to one mount of the sub-composition. See the `hyperframes` skill for the full pattern.)
|
|
124
122
|
|
|
125
|
-
##
|
|
123
|
+
## Asset Preprocessing
|
|
126
124
|
|
|
127
|
-
|
|
128
|
-
npx hyperframes tts "Text here" --voice af_nova --output narration.wav
|
|
129
|
-
npx hyperframes tts script.txt --voice bf_emma
|
|
130
|
-
npx hyperframes tts --list # show all voices
|
|
131
|
-
```
|
|
125
|
+
`npx hyperframes tts`, `transcribe`, and `remove-background` produce assets (narration audio, word-level transcripts, transparent video) that get dropped into a composition. Each downloads its own model on first run. For voice selection, whisper model rules (the `.en`-translates-non-English gotcha), output format choice (VP9 alpha WebM vs ProRes), and the TTS → transcribe → captions chain, invoke the `hyperframes-media` skill.
|
|
132
126
|
|
|
133
127
|
## Troubleshooting
|
|
134
128
|
|