Skip to content

Commit eed6dfb

Browse files
committed
refactor(skill): primitive-toolkit framing across step-1, step-3, step-5
Cleans up two related overcorrections that crept across the skill prose: (a) "compose UIs from divs/SVG/CSS" repeated 6+ times in step-1, anchoring agents to website-shaped beats; (b) "every beat's primary visual stays composed from divs / SVG / CSS / GSAP" and "captured assets are accents — they decorate, they don't carry" overstatements in step-3 and step-5 that contradicted the dial-back done earlier in this stack. The real framing: a beat composes from whatever primitives the scene needs — HTML/CSS, SVG, captured assets, WebGL, Canvas, Three.js, kinetic typography, Lottie — alone or in combination. They're inputs to one output (the video frame). No rule maps intent → primitive. The narrow no-go is one rule: never paste a product-UI screenshot as load-bearing content (the slideshow pattern). step-1-design.md (8 edits): - L5 intro: drop "composed from divs/SVG/CSS at build time" detail. - L7 length: drop "compose UIs from scratch (divs/SVG/CSS)" framing; merge L290's "over-investing in prose" caveat in. - L97: "composing UIs from divs in Step 5" → "building beats". - L161: "compose the X UI" → "a beat featuring the X". - L290: duplicate length bullet — deleted. - L293: "sub-agents compose UIs at build time from divs/SVG/CSS..." → "No separate Components section — Quick Reference is where components live." step-3-storyboard.md (3 edits): - L3 (intro): "alongside composed UIs" → "alongside composed beats". - L276 ("Compose the load-bearing visuals yourself") paragraph replaced with the primitive-toolkit framing — toolkit is open, the only no-go is product-UI screenshots as load-bearing content. - L381–383 ("The bar:") three bullets collapsed to one bullet: primary visuals use whatever combination the scene needs; accents are optional; brand-floor minimums are the minimum. step-5-build.md (2 edits): - L104 stacked-beats intro: "composed from divs, SVG, canvas, and CSS. Never a full-bleed screenshot." → "composes from whatever primitives the storyboard called for ... Narrow no-go: never a full-bleed product-UI screenshot as load-bearing content." - L147: "Build the UI element from divs and CSS" → "Build the element from divs and CSS" — drops the UI bias since this rule applies only when the asset IS a product-UI screenshot. Net result: "compose from divs/SVG/CSS" mentions drop from 10+ to 0 as a generalized framing; the term survives only in concrete examples (e.g. "cards-as-divs" when the beat is specifically a kanban demo) where divs/CSS IS the right answer.
1 parent 7f6bceb commit eed6dfb

3 files changed

Lines changed: 10 additions & 15 deletions

File tree

skills/website-to-hyperframes/references/step-1-design.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
DESIGN.md is a **brand-truth cheat sheet** — colors and fonts you'll **weave into your composed builds**. It is NOT a layout spec, not a moodboard, not a 400-line design system audit.
44

5-
DESIGN.md is the brand inflection sub-agents layer on top of every composed beat: which color is "primary," which font is "headlines," what tone the brand carries — the load-bearing knobs they flip while building. The beats themselves are composed from divs/SVG/CSS at build time; DESIGN.md tells them in which colors and which fonts.
5+
DESIGN.md is the brand inflection sub-agents apply when building each beat: which color is "primary," which font is for headlines, what tone the brand carries — the load-bearing knobs they flip while building.
66

7-
**Target length: 250–350 lines.** Sub-agents in Step 5 compose UIs from scratch (divs/SVG/CSS) using your DESIGN.md as the spec — the more precise the component CSS values you encode here, the more brand-faithful the composed beats will look. Going under 200 lines tends to produce generic-looking dark-cinematic videos because sub-agents have no brand component DNA to compose with.
7+
**Target length: 250–350 lines.** Step 5 sub-agents read DESIGN.md to brand each beat — the more precise the component CSS values you encode here, the more brand-faithful the result. Going under 200 lines tends to produce generic dark-cinematic output because sub-agents have no brand component DNA to work from; going over 350 means you're over-investing in prose.
88

99
**Fast-pacing exception:** For billboard-per-beat videos (short social ads where each beat is a single hero element on full-bleed background), a 50-line DESIGN.md with just colors + fonts + 3-5 do's/don'ts is enough. The Step 5 sub-agent prompt pastes brand values inline, so DESIGN.md depth only matters when the beats render full UIs.
1010

@@ -94,7 +94,7 @@ That's the whole typography section. If sub-agents need exact line-heights or le
9494

9595
### `## 3. Component Stylings` (the build-step's spec sheet)
9696

97-
This is the section sub-agents consult most when composing UIs from divs in Step 5. **Without exact per-component CSS, sub-agents fall back to generic "dark bg + glow + centered text" patterns regardless of brand** — which is why every video starts looking the same. Encode the brand's actual component DNA here.
97+
This is the section sub-agents consult most when building beats in Step 5. **Without exact per-component CSS, sub-agents fall back to generic "dark bg + glow + centered text" patterns regardless of brand** — which is why every video starts looking the same. Encode the brand's actual component DNA here.
9898

9999
Target **6-12 distinct components**. Document what the site actually uses; skip categories the brand doesn't have. For each component, name it descriptively ("Stripe Primary Button" not "Button 1") and provide exact CSS-level properties: background, text color, padding, border-radius, border, font size/weight, height, box-shadow, and any hover/active/disabled states.
100100

@@ -158,7 +158,7 @@ Document each distinct card type — Standard, Feature Highlight, Glass, Pricing
158158

159159
#### Distinctive components (anything else the brand actually shows)
160160

161-
Logo marquees, testimonial carousels, pricing tables, gradient overlays, glassmorphism panels, bento grids, code blocks, terminal UIs, dashboard mockups — name and document anything visually distinctive. Sub-agents will reach for these specs when the storyboard calls for "compose the X UI."
161+
Logo marquees, testimonial carousels, pricing tables, gradient overlays, glassmorphism panels, bento grids, code blocks, terminal UIs, dashboard mockups — name and document anything visually distinctive. Sub-agents will reach for these specs when the storyboard calls for a beat featuring the X.
162162

163163
```markdown
164164
#### Glass Container (frosted overlay)
@@ -287,10 +287,9 @@ If your draft has a rule like "all interactive elements require visible focus st
287287
- Use **exact values** from `capture/extracted/tokens.json`. Cross-reference with screenshots when needed.
288288
- Name colors and components descriptively — "Stripe Purple" not "Accent 1."
289289
- When you can't extract exact values, estimate from visual inspection and note it.
290-
- Target **250–350 lines total.** Component CSS specs and the brand's spacing/depth values are load-bearing — sub-agents need them to compose UIs faithfully. Going much over 350 lines means you're over-investing in prose; going much under 200 means you've under-documented the component DNA and sub-agents will fall back to generic patterns.
291290
- No "Assets" section — `capture/extracted/asset-descriptions.md` is the asset index.
292291
- No "Motion" section — the storyboard specifies motion per-beat.
293-
- No "Components" section beyond what fits in Quick Reference — sub-agents compose UIs at build time from divs/SVG/CSS using the brand colors and fonts from this doc, not from CSS specs encoded here.
292+
- No separate "Components" section Quick Reference is where components live.
294293
- No "Depth & Elevation" tables — shadow language is implied by the brand's mood (heavy shadows for premium, no shadows for flat/clean); sub-agents pick appropriate values without a table.
295294

296295
---

skills/website-to-hyperframes/references/step-3-storyboard.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Step 3: Storyboard + Script
22

3-
Marketing videos are made concept-first. **The order is: message → narrative arc → beats that serve the arc → which assets and techniques bring each beat to life.** Captured assets (SVG logos, brand illustrations, hero art, gradients) are first-class beat content alongside composed UIs — many of them will carry their own beats. The constraint is only that you shouldn't _start_ from the asset inventory ("we have these screenshots, let's build a slideshow"). Start from the message, then weave in the right captured assets and the right composed elements per beat.
3+
Marketing videos are made concept-first. **The order is: message → narrative arc → beats that serve the arc → which assets and techniques bring each beat to life.** Captured assets (SVG logos, brand illustrations, hero art, gradients) are first-class beat content alongside composed beats — many of them will carry their own beats. The constraint is only that you shouldn't _start_ from the asset inventory ("we have these screenshots, let's build a slideshow"). Start from the message, then weave in the right captured assets and the right composed elements per beat.
44

55
**Read `capture/extracted/asset-descriptions.md` before writing beats.** Know what's in the capture. The brand's actual visual identity — its real logo, its real illustrations, its real gradients, its real hero art — is what makes the video feel like _this_ brand and not a generic dark cinematic template. Most beats will use one or two captured assets layered with composed motion.
66

@@ -273,7 +273,7 @@ Use the pacing you decided at the top of this step. The beat count, duration, an
273273

274274
**Frame-filling rule:** When describing visuals per beat, specify sizes as FRAME FILL PERCENTAGES, not pixels. "Product screenshot fills 80% of frame" not "600px wide card."
275275

276-
**Compose the load-bearing visuals yourself.** Build the kanban from cards-as-divs. Draw the logo with SVG paths. Paint the gradient with shader noise. Animate the counter with `tl.set()`. The video should feel **alive in every frame** — motion that's continuous and tangible, **like things exist in a physical world**. Captured assets (brand logo, hero illustrations, gradient backgrounds, product photography) are accents you layer onto composed beats — they decorate, they don't carry. Find the most suitable combinations: composed UIs grounded in the brand's actual colors and fonts, with captured brand marks stamped in as identity, not as content. For every beat where the storyboard pull is "show the kanban / dashboard / chat / terminal," the answer is build it from divs and CSS, not paste a screenshot.
276+
**Use whatever primitives the beat needs — alone or in combination.** A beat can layer HTML/CSS, SVG (captured or hand-drawn), WebGL/Canvas shaders, Three.js scenes, captured illustrations and photographs, kinetic typography, captured Lottie — all at once if the scene calls for that. They're inputs to one output (the video frame); there's no rule mapping intent to primitive. The video should feel **alive in every frame** — motion that's continuous and tangible, **like things exist in a physical world**. Narrow no-go: never paste a product-UI screenshot as load-bearing content (the slideshow pattern). Everything else is open.
277277

278278
**Opener default: fast intro to stop the scrollers.** Even a cinematic video should start with a punch — a flash, a shader bloom, a logo strike, a kinetic word build, a particle burst — anything that lands inside the first 1.0–1.5 seconds. Slow intros work for prestige trailers; videos shipping anywhere social or feed-based need a hook that beats the 1.5-second scroll threshold. Plan the opener as the most ambitious beat in the storyboard, not the gentlest one.
279279

@@ -376,11 +376,7 @@ Mark assets `SKIP` when a composed equivalent (dashboards, kanban, chat, termina
376376

377377
**Update each beat's Composition + Accents section** based on what this pass produced. Most beats stay accent-free. The few that earn one get a single line under "Accents" with the file, position, opacity, and motion.
378378

379-
**The bar:**
380-
381-
- Every beat's primary visual stays composed from divs / SVG / CSS / GSAP at build time
382-
- Accents are a thin layer of brand inflection on top — never the carrier
383-
- A beat with no obvious accent need stays accent-free. The composed visual is enough.
379+
**The bar:** Every beat's visuals use whatever combination of primitives the scene needs. Accents are optional brand inflections layered on top; brand-floor minimums (logo in opener + closer, signature visual once) are the minimum, not the ceiling.
384380

385381
---
386382

skills/website-to-hyperframes/references/step-5-build.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ If the storyboard says "fast" pacing: use the stacked-beats pattern below. Do no
101101

102102
**Stacked-beats pattern (fast pacing):**
103103

104-
Each beat is a composed scene — composed from divs, SVG, canvas, and CSS. Never a full-bleed screenshot. Each beat's structure (cards, panels, layered text, SVG-drawn mark, etc.) comes from the storyboard's Composition + Accents spec.
104+
Each beat composes from whatever primitives the storyboard called for — HTML/CSS, SVG, captured assets, WebGL, Canvas, Three.js, kinetic typography, Lottie — alone or in combination. Narrow no-go: never a full-bleed product-UI screenshot as load-bearing content. Each beat's structure comes from the storyboard's Composition + Accents spec.
105105

106106
```html
107107
<div
@@ -144,7 +144,7 @@ Each beat is a composed scene — composed from divs, SVG, canvas, and CSS. Neve
144144
</div>
145145
```
146146

147-
If you ever find yourself writing `<img src="capture/assets/...">` as a beat's primary visual, stop. That's the slideshow pattern this skill exists to break. Build the UI element from divs and CSS using the brand colors from DESIGN.md. The only legitimate `<img>` uses are: (a) the brand logo when it's purely raster, (b) a hero illustration layered as ambient depth behind composed content, (c) a gradient/texture image as a background wash. Never a product UI screenshot as the load-bearing visual.
147+
If you ever find yourself writing `<img src="capture/assets/...">` as a beat's primary visual where the asset is a product-UI screenshot, stop. That's the slideshow pattern this skill exists to break. Build the element from divs and CSS using the brand colors from DESIGN.md. The legitimate `<img>` uses are: (a) the brand logo when it's purely raster, (b) a hero illustration layered as ambient depth behind composed content, (c) a gradient/texture image as a background wash. Never a product UI screenshot as the load-bearing visual.
148148

149149
```css
150150
.beat {

0 commit comments

Comments
 (0)