feat(skills): design.md integration, shared video references, Claude Design gaps#549
feat(skills): design.md integration, shared video references, Claude Design gaps#549vanceingalls merged 38 commits intomainfrom
Conversation
…e.md Replace all visual-style.md references with design.md across SKILL.md and house-style.md. Add Step 0 design system gate: when design.md exists in a project, read it and use its values for all visual decisions. Add design adherence eval to Quality Checks — verifies colors, typography, corners, spacing, depth, and don'ts compliance after composition authoring. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…ce check - Restore named-style detection in Step 0: if user names a style or mood, look up visual-styles.md and generate a design.md before falling through to house-style defaults - Restore motion/style boundary: design.md defines appearance, house-style defines motion, design.md motion rules take precedence - Soften adherence check vocabulary: don't assume specific field names, match however the user labeled their palette/don'ts sections - Add house-style consistency check for no-design.md path: palette consistency across scenes + lazy defaults audit Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
When no design.md exists, offer the user a visual picker to create one. Adds design-picker.md reference doc and design-picker.html template with 7 independent categories: theme, structure, palette, typography, corners, density, and depth. Live preview updates as user selects options. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…rt guidance - Add complete example architecture JSON object to design-picker.md showing all token placeholders, 15+ elements, and correct structure - Add mkdir -p .hyperframes before template copy - Add server cleanup instruction (kill %1 after user pastes design.md) - Add port guidance (8723 default, try next on conflict) - Fix subagent instruction: "only start from main conversation thread" - Integrate picker as step 3 in named-style detection flow Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Make design.md a prerequisite for every composition, not an optional picker step. Step 0a is now "Design system" and must complete before prompt expansion (Step 0b), because expansion output is supposed to cite design.md's palette, typography, and motion energy — expanding first produces generic breakdowns the downstream agents then ignore. Resolution order for design.md: 1. Existing design.md in project root → use as-is 2. Invoke /visual-style skill in Create mode → save output to design.md 3. references/design-picker.md (fallback if user prefers pre-built) 4. house-style.md defaults (only with explicit "skip design") Also expand prompt-expansion.md's scene-breakdown spec to require 2–5 decoratives per scene drawn from house-style's list, each using design.md's palette values. Spells out that "single ambient motion" means one looping motion applied to these decoratives, not one element total — this was the p1 regression root cause in the eval run. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Prompt-expansion.md was re-stating house-style rules in its scene breakdown and negative-prompt sections. That's duplication — if house-style changes, expansion drifts. Fix: - Prerequisites now tell the expansion step to read house-style.md and design.md before generating. The expansion generates output that conforms to those rules; it doesn't re-state them. - Scene breakdown template names the three layer slots (background/midground/foreground) without re-stating the decorative-count rule or palette-compliance rule. - Negative-prompt no longer hard-codes palette/font rules — those live in design.md and house-style.md where they belong. - The "single ambient motion doesn't mean single element" clarification moves to house-style.md where the base rule lives, so any reader sees it next to the rule it clarifies. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Expansion is not about lengthening a short prompt — it's about
grounding the user's intent against design.md and house-style.md
and producing a consistent intermediate that every downstream
agent reads the same way.
Even a fully-detailed user prompt benefits:
- Color words ("warm", "cinematic") → resolved to design.md hex values
- Decorative layers the user forgot → added explicitly per house-style
- Vague transitions → specified as morph operations with duration/ease
tied to design.md energy
- Per-scene timing → verified to sum to stated total
The eval showed p5 (fully-expanded brief) skipping this step and
missing the benefit. When expansion runs on an already-expanded
prompt, it's mostly pass-through, but it still binds the prompt to
design.md and house-style — which is the contract downstream steps
depend on.
Single-scene compositions and trivial edits are the only exceptions.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
The p2 eval (sparse prompt, 6 scenes) was dense and alive because expansion had to invent atmosphere and micro-details to fill in the 1-sentence input. The scene subagents then built from that rich spec. p3/p5/p6 (detailed prompts) produced muted output because the expansion was framed as "largely pass-through" for already-detailed inputs. Scene subagents got a thin brief and built thin output. Make expansion always enrich, never pass-through: - Every user prompt is a *seed*, not a spec. Expansion takes what the user wrote and adds atmosphere, ambient motion, micro-details. User's content stays; expansion builds on top. - Scene-by-scene breakdown now enumerates 5 required fields per scene: background (2-5 decoratives with ambient motion), midground, foreground, micro-details (2-3 per scene: registration marks, tick indicators, monospace labels, background data streams, grid patterns), transition morph. - Framing note: the quality gap between a single-pass composition and a multi-scene-pipeline composition comes from this step. If expansion front-loads the richness, every scene subagent builds from a rich brief; every scene comes out alive. Addresses user feedback after the eval review: "the only significant difference I see is in p2" — because p2 was the only case where expansion had to enrich. Making enrichment mandatory everywhere. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…sion DESIGN.md now uses YAML front matter (machine-readable tokens) + markdown prose, following the google-labs-code/design.md format spec. Extended with a `motion:` namespace for video-specific tokens (energy, easing, duration, atmosphere layers, transition shaders). - step-2-design.md: full rewrite with token schema, section order, two complete examples (dark cinematic + light corporate) - visual-styles.md: all 8 presets now include YAML token blocks ready to copy into design.md front matter - SKILL.md: Step 0a explains new format, resolution order uses preset picker instead of visual-style plugin, Visual Identity Gate updated - prompt-expansion.md: references structured token paths instead of prose scraping - house-style.md: clarified design.md takes precedence Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Resolved conflicts in SKILL.md and house-style.md, taking the simplified Step 0a (format-agnostic design.md, video-composition.md reference, lightweight font warning) over both branches' heavier versions. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…ules - Step 0a: lightweight — read design.md if exists, any format, warn on missing fonts - video-composition.md: shared video-medium rules (density, scale, color presence) - design.md = brand truth, not video layout spec - prompt-expansion: format-agnostic, cites exact values not token paths - storyboard: references video-composition.md for shared guardrails Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Shared references (from website-to-hyperframes → base hyperframes skill): - techniques.md: 11 visual techniques with code patterns (zero capture coupling) - beat-direction.md: per-beat planning, choreography verbs, rhythm templates, transition decisions — extracted from storyboard step - narration.md: pacing, tone, script structure, number pronunciation, hooks - motion-principles.md: added image motion treatment + load-bearing GSAP rules Claude Design transfer brief gaps applied to SKILL.md: 1. Discovery step for exploratory requests (audience, platform, priority, variations) 2. Anti-scope-creep: "build what was asked, every element earns its place" 3. Read-source discipline: "read actual files, don't guess" 4. Rhythm planning: declare scene rhythm before implementing 5. Variations as first-class output for exploratory requests 6. Two-phase verification: fast checks block, slow checks run parallel Website-to-hyperframes now references shared files instead of duplicating. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
jrusso1020
left a comment
There was a problem hiding this comment.
Staff review
TL;DR: Intent is right (design-first → expand → build is the correct pipeline order), and references/prompt-expansion.md is well-built. But this PR ships a second design gate next to the existing <HARD-GATE> "Visual Identity Gate" already in SKILL.md (lines 56–73 on main) — different filename casing, different resolution order, no reconciliation. Plus a broken file reference, an undeclared external skill dependency, and significant prose duplication.
Blocking
1. Two competing design gates in one file. After this PR, SKILL.md contains both the new "Step 0a" (design.md lowercase, 4-path resolution) and the existing <HARD-GATE> "Visual Identity Gate" (DESIGN.md uppercase, different 4-path resolution). They conflict on:
- Filename casing —
design.mdvsDESIGN.md. On Linux (where the renderer runs) these are different files; on macOS they collide unpredictably. Existing projects withDESIGN.mdwon't satisfy Step 0a's path 1. - Bootstrap source — new gate uses external
/visual-styleskill +references/design-picker.md+house-style.md; old gate uses in-repovisual-styles.mdpresets + 3-question fallback. - Hardness — old one is wrapped in
<HARD-GATE>, new one is just a step.
Pick one. If new replaces old, delete the <HARD-GATE> block in this PR. Align casing — DESIGN.md (uppercase) is already established.
2. Broken reference. SKILL.md:22 (new) links to references/design-picker.md for path 3. That file is not in the diff and not in the tree. Path 3 is unreachable.
3. Undeclared external dependency. Step 0a path 2 invokes /visual-style, which lives at /home/ubuntu/.agents/skills/visual-style/ — a separately-installed skill. OSS users installing via npx skills add heygen-com/hyperframes won't have it. No graceful fallback.
4. Filename + schema mismatch with the dependency. /visual-style natively produces visual-style.md (structured YAML: style_prompt_full, colors[], typography, etc.). The PR says save it as design.md — but never defines a design.md schema. Downstream subagents are told to "use only the values it defines" without knowing what fields are guaranteed. references/prompt-expansion.md:35 even references "ease choices from design.md" — visual-style.md doesn't carry easings. Either define the schema or the contract is fictional.
Significant
5. Duplicated prose. "Design direction shapes/affects expansion output (atmosphere layers, motion energy, typography)..." appears twice almost verbatim (SKILL.md:14 and :25). Drop one.
6. SKILL.md is the hot path. This file loads on every hyperframes invocation. The PR adds ~30 lines. Per skill-creator principles: keep SKILL.md to essentials, push detail into references/. The "Using design.md during construction" subsection (passing-design-downstream bullets) belongs in a reference file.
7. SKILL.md and prompt-expansion.md contradict each other on pass-through.
SKILL.md:43(new): "If the user's prompt is already scene-by-scene, the expansion is mostly pass-through..."references/prompt-expansion.md:24: "Do not skip. Do not pass through."
The reference is more correct (the rest of prompt-expansion.md argues forcefully against pass-through). Fix the SKILL.md sentence.
8. PR template is empty + no test plan. No "What/Why/How/Test plan." For a workflow change that gates every composition, please document at minimum:
- Run on a project with existing
DESIGN.md(uppercase) — confirms migration path. - Run on a fresh project with no design context — confirms
/visual-styleinvocation path. - "Small edit" run — confirms escape hatch fires.
- "Skip design" run — confirms last-resort path writes a usable file.
Smaller things
- Step numbering:
0a/0b/1is the visible scar of accreted edits. Renumber. house-style.mddecorative-count addition is a useful clarification but reads as a band-aid mid-section. Promote to a real subheader.prompt-expansion.mdwrites to.hyperframes/expanded-prompt.md— confirm nothing in the CLI/registry treats.hyperframes/as generated artifact directory that lint/build could clobber.- Behavioral cost on iteration: even with the "tiny edit" exception, the gate triggers on every fresh invocation. Consider an explicit shortcut:
existing design + single-element change → skip expansion entirely.
What this PR gets right
- Diagnosis is correct: ordering design → expansion → scenes is the right architecture; expanding before grounding produces generic breakdowns.
references/prompt-expansion.mdis well-structured: clear prerequisites, "why always run", per-section output spec, output destination, user handoff message. Good progressive disclosure.- Decorative-vs-motion clarification in
house-style.mdresolves a real ambiguity ("4 decoratives sharing one breathing motion is correct; 1 decorative is under-dressed" — concrete and memorable).
Recommended path
Block on (1)–(4). Reissue with: one gate not two, schema for design.md, explicit /visual-style dependency note + OSS fallback, the missing design-picker.md (or remove path 3), de-duplicated prose, real PR description and test plan. The reference file and house-style.md clarification can ship as-is.
…dance Background color moved from "adapt for video" to "strict from design.md" — agents must not override the user's palette choice. Added specific guidance for making light canvases work cinematically: bolder borders, full-saturation accents, structural depth via rules/dividers, background texture. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…contextual options Prompt expansion now uses beat-direction format: concept → mood → choreography verbs → depth layers → transition per scene. Adds rhythm declaration before scene breakdown. References beat-direction.md and video-composition.md. Design picker reference updated: generate architectures, palettes, and type pairings contextual to the user's prompt instead of generic options. 3-4 architectures, 5-6 palettes (always mix dark+light), 3 type pairings. Picker template output updated to emit spec-compliant design.md with YAML frontmatter + prose sections. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
4e73f9e to
9d9154d
Compare
Two-phase picker UI: Phase 1 shows 3-4 complete mood boards (architecture +
palette + type combined), user picks a direction in one click. Phase 2 opens
fine-tune panel with all categories pre-filled from the mood board selection.
Quick wins:
- Prompt-aware section descriptions via __PROMPT_JSON__ placeholder
- Preview content uses real prompt text via {{prompt_headline}}/{{prompt_sub}}
- "Recommended" badges on options matching the selected mood board
- Phase navigation bar (Direction → Fine-tune)
New data placeholders:
- __MOODBOARDS_JSON__ — array of mood board objects with indices into
architectures/palettes/typepairs
- __PROMPT_JSON__ — title, headline, subline for contextual UI text
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Mood board count is now contextual — as many as the creative space warrants, not a fixed number. Documented the url() quoting bug: single quotes inside preview_html break style attributes. Use url(path) without quotes. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
3 type pairings wasn't enough range. Now 5-6 covering: safe/corporate, editorial/serif, bold/display, technical/mono-heavy, warm/humanist. Each pairing should feel like a different voice. Reference font discovery script for options beyond defaults. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…t references Prerequisites now explicitly list ALL references the agent must read before generating picker options: typography (banned fonts, pairing rules), house-style (lazy defaults), video-composition (density, scale), visual-styles (preset inspiration), beat-direction (rhythm patterns). Each reference includes the specific rules to enforce, not just a title. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…ries All picker categories must be contextual to the prompt — not just architectures. Mood boards should tell different brand stories (different narratives, not different fonts). Palettes named after the brand's world. Type pairings matched to the brand's energy. No generic options that could appear on any picker. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Prerequisites now just list the references to read. The rules live in those files — repeating them here creates two sources of truth. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
- Merged Visual Identity Gate into a single HARD-GATE verification check that references Step 1 (no duplicate resolution order) - Renumbered steps: 0a→1 (design), 0b→2 (expansion), 1→3 (plan) - No /visual-style external dependency (removed earlier this session) - design-picker.md exists (created earlier this session) - Format-agnostic design.md (no schema mismatch) - No pass-through contradiction (removed from SKILL.md) - PR description already updated with full test plan Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Review responseAll blocking and significant items addressed: Blocking (1-4)1. Two competing gates → Merged. HARD-GATE is now a 2-line verification referencing Step 1. No duplicate resolution order. 2. Broken design-picker.md → File exists. Ships with two-phase mood board UI and spec-compliant output. 3. /visual-style external dependency → Removed. Uses in-repo 4. Schema mismatch → Format-agnostic. "Any format works (YAML, prose, tables — just extract the values)." No schema contract to violate. Significant (5-8)5. Duplicated prose → Removed. 6. SKILL.md size → Reduced by merging gates. Construction subsection removed. 7. Pass-through contradiction → Fixed. SKILL.md no longer mentions pass-through. 8. PR template → Updated with full description + test plan. Smaller
Additional work since review
|
Complete UI rewrite inspired by neuform.ai's polished design system inspector. Key changes: - Section cards with icons, headers, meta labels (Neuform sidebar pattern) - Typography options show full specimen: headline + body preview + letter samples + font family metadata - Palette options show 4-stop color strips (bg → muted → accent → fg) - Tighter spacing, consistent 4px grid, refined border radius - Proper font smoothing, letter-spacing, color hierarchy - Dark chrome (#0e0e0e bg, #141414 cards, #1e1e1e borders) - Mood board cards with refined preview scaling (0.48x) - Phase 2 panel-left uses stacked section cards instead of flat lists Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
New Motion section in design picker Phase 2 with 6 easing options: Confident (power3.out), Snappy (expo.out), Gentle (sine.inOut), Bouncy (back.out), Elastic (elastic.out), Sharp (power4.out). Each option shows a dot animating across a track using the real GSAP ease — looping with yoyo so users can compare feels. Selection is included in design.md output under ## Motion with entry easing value. Mood boards can pre-select easing via easing_index. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Reverted the YAML frontmatter format changes to step-2-design.md. The website-to-video skill should only have extraction changes (shared references), not format modifications. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…ference Deleted the redirect file at website-to-hyperframes/references/techniques.md. Updated SKILL.md reference table to point directly to the shared location at ../hyperframes/references/techniques.md. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
miguel-heygen
left a comment
There was a problem hiding this comment.
Requesting changes on the live head 541173f8 because the design file contract is still split between lowercase design.md and the existing uppercase DESIGN.md website-to-HyperFrames pipeline. That is not just naming churn: Step 6 loads the shared hyperframes skill, so captured projects can now miss the brand file and fall into no-design defaults on case-sensitive filesystems.
Validation notes: I checked the current patch and existing website-to-hyperframes docs, ran bunx oxfmt --check on the touched files, ran bunx tsx scripts/lint-skills.ts, and exercised the new design picker in agent-browser with sample JSON. The picker did generate a design.md, but I left a UX/schema comment from that browser pass too. bun run lint:skills did not run directly in this checkout because tsx is not installed locally; the bunx tsx equivalent passed.
|
|
||
| ### Step 1: Design system | ||
|
|
||
| If `design.md` exists in the project, read it first. It's the source of truth for brand colors, fonts, and constraints. Use its exact values — don't invent colors or substitute fonts. Any format works (YAML frontmatter, prose, tables — just extract the values). |
There was a problem hiding this comment.
This still leaves the original casing blocker unresolved. The website-to-hyperframes pipeline in this PR still creates and gates on DESIGN.md (skills/website-to-hyperframes/SKILL.md Step 2, plus the Step 6 build docs), but the shared HyperFrames skill now only checks lowercase design.md. Step 6 explicitly loads this skill, so a captured project with only DESIGN.md will take the no-design path here and can prompt/fallback to house style instead of using the captured brand. On Linux those are different files. Please either recognize DESIGN.md here, preferably before design.md for existing projects, or migrate every producer and consumer to one canonical casing in the same PR.
|
|
||
| ### Mood board data format | ||
|
|
||
| Each mood board pre-selects one option from each category. The user picks a mood board in Phase 1, then fine-tunes in Phase 2 with those selections pre-filled. |
There was a problem hiding this comment.
The template now treats Motion/easing as a required category (checkReady requires picks.easing !== null), but this moodboard contract and example do not include easing_index. I exercised the picker with data shaped like this example: selecting a moodboard prefilled every documented category, but the Create design.md button stayed hidden until I manually scrolled to Motion and picked an easing. Either add easing_index to the required moodboard schema/example or default an easing in goToTune; otherwise the advertised complete-direction path looks stuck.
| </script> | ||
| ``` | ||
|
|
||
| - **Prefer `tl.fromTo()` over `tl.from()` inside `.clip` scenes.** `gsap.from()` sets `immediateRender: true` by default, which writes the "from" state at timeline construction — before the `.clip` scene's `data-start` is active. Elements can flash visible, start from the wrong position, or skip their entrance entirely when the scene is seeked non-linearly (which the capture engine does). Explicit `fromTo` makes the state at every timeline position deterministic: |
There was a problem hiding this comment.
This new rule conflicts with the hot-path docs that still tell authors to use gsap.from() for entrances (skills/hyperframes/SKILL.md under Layout Before Animation and website-to-hyperframes Step 6). Since this section says from() can silently fail under seek, please update those higher-priority examples/instructions in the same PR; otherwise agents will keep following the hot path and only discover this exception later.
jrusso1020
left a comment
There was a problem hiding this comment.
Staff re-review (round 2)
TL;DR: Major progress. The four blocking items from round 1 are all resolved or substantially addressed. Remaining issues are doc-cleanup-grade — none are blocking. Recommend approve after the stale Step 0a references are updated.
Round 1 blockers — status
1. Two competing design gates → ✅ Resolved. The <HARD-GATE> block has collapsed to a one-line "verify you have a visual identity from Step 1" pointer. design.md casing is now consistent throughout (lowercase). The "Step 0a/0b/1" numbering is gone — clean Step 1/2/3 ordering.
2. Broken references/design-picker.md link → ✅ Resolved. File is in the diff (+116 lines) and well-structured. The two-phase mood-boards-first picker is a solid UX choice, and the preview_html token contract ({{bg}}, {{fg}}, {{ac}}, {{cr}}, {{shadow}}, {{prompt_headline}}, etc.) is concrete enough to author against. Security guidance (no <script>, no event handlers) and the single-quote-in-style gotcha are real and worth keeping.
3. Undeclared external /visual-style dependency → ✅ Resolved. The picker now lives in-skill (templates/design-picker.html is shipped, references/design-picker.md documents the workflow). No external skill required. OSS users get the picker for free.
4. design.md schema mismatch → ✅ Substantially resolved. The picker outputs google-labs-code/design.md spec format (YAML frontmatter with colors, typography, rounded, spacing, plus ## Overview, ## Colors, ## Typography, ## Layout, ## Elevation, ## Components, ## Do's and Don'ts prose). Easings now flow through via the ## Motion block (verified in templates/design-picker.html:1302). One soft-contract concern below.
5. Duplicated prose → ✅ Resolved (zero hits for the duplicated phrases now).
6. SKILL.md hot-path bloat → 🟡 Partly. Net delta is +50 lines (364 → 414) vs the originally-flagged ~30. The "Using design.md during construction" subsection moved out — good. The new shared references (video-composition.md, beat-direction.md, motion-principles.md, narration.md, techniques.md) are pulled into the References block at the bottom marked "Always read" or "Read when…". Loading rule is clear; size is acceptable.
7. Pass-through contradiction → ✅ Resolved. Step 2 in SKILL.md and prompt-expansion.md now agree — always run, exception is single-scene + trivial edits.
8. PR template + test plan → ✅ Body is filled in, test plan is concrete (5 checked items including a before/after eval).
New / lingering issues (non-blocking)
A. Stale Step 0a references in references/prompt-expansion.md. Steps were renumbered to 1/2/3 in SKILL.md, but the reference still says:
- L5: "Runs AFTER design direction is established (Step 0a)."
- L16: "If
design.mddoesn't exist yet, run Step 0a (Design system) first."
Should be "Step 1" / "Step 1 (Design system)". Same stale Step 0a appears in the PR description's ### design.md Integration bullet — worth a one-line edit to keep the description honest.
B. "Ease choices from design.md" is now technically true but soft-contract. prompt-expansion.md:29 tells expansion to cite "exact hex values, typography parameters, ease choices from design.md." The picker does emit a ## Motion prose block (Entry easing: power3.out), so easings are present — but as prose, not a structured field. Scene subagents must regex out of free-form markdown. Workable; flag for future structuring.
C. revert(skills): restore step-2-design.md to original — small thing, but the commit log shows step-2-design.md was added then reverted. If that file was never landed it's fine; if it's referenced anywhere in the new docs, double-check the link still resolves.
D. chore(skills): delete techniques.md redirect stub, update SKILL.md reference — verify the references/techniques.md referenced in SKILL.md:404 points at the in-skill copy and not the website-to-hyperframes shadow that the redirect stub used to forward to. (Spot-checked SKILL.md — the path looks right, just confirming the cleanup is complete.)
E. design picker easing UI is GSDevTools-grade but undocumented in SKILL.md. The new feat(skills): add GSAP easing picker with live animated demos commit adds real value but isn't mentioned in the design-picker.md prerequisites or the SKILL.md References block. Worth a one-liner so authors know easings are first-class in the picker.
What this PR continues to get right
- Diagnosis is correct: design → expansion → scenes is the right pipeline order.
references/prompt-expansion.mdhas held up well — clear prerequisites, "why always run", per-section output spec, output destination, user handoff message.- The decorative-vs-motion clarification in
house-style.md("4 decoratives sharing one breathing motion is correct; 1 decorative is under-dressed") is concrete and memorable. - Mood-boards-first picker workflow with deeply-contextual generation requirements ("genuinely different ways to position this product, not different fonts on the same layout") is exactly the right shape for an LLM-driven design tool.
## Motionblock in the picker output bridges design + animation cleanly.
Recommended path
Approve after the stale Step 0a references in references/prompt-expansion.md (L5, L16) and the PR description are updated to "Step 1". The other items (B–E) are doc cleanup, not gating.
jrusso1020
left a comment
There was a problem hiding this comment.
Approving — round-1 blockers all resolved. The remaining items (stale Step 0a references in references/prompt-expansion.md L5/L16 and the PR description) are doc cleanup, fine to land in a follow-up or as a quick fix before merge.
…rings Font discovery is no longer advisory — it's a blocking requirement before generating type pairings. Calls out the specific 8 fonts the agent defaults to from training data (Bricolage, Instrument Serif, Fraunces, etc.) and names them as the failure mode the script prevents. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Palette strip at top of Direction phase lets users switch palettes and see all mood boards re-render with the new colors instantly. Clicking a palette overrides the per-board defaults; clicking again deselects. Selected palette carries into Phase 2 fine-tune. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Added rule: if two palettes share same bg lightness + similar accent hue, cut one. Test is whether a user can tell them apart in a 14px swatch chip. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…line Preview height 260→320px to show more of the architecture content. Description truncated with text-overflow: ellipsis to prevent overlap. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…truncate Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Fixed height was clipping the info section. aspect-ratio: 16/9 scales with card width and guarantees the name/description/tokens are visible. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…elow Preview is flex:1 with min-height:240px, info section is natural height. No overlap — description always sits below the full preview frame. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Preview at 500px fixed height with 0.38x scale shows ~1315px of architecture content. Info section sits below with no overlap. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
FAB only shows in Fine-tune phase when all picks are filled. Hidden during Phase 1 (Direction/mood boards). Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Step 1 now presents 3 paths when no design.md is found: 1. User named a style → use presets 2. Want to browse visually → run design picker 3. Want to skip → quick 3 questions + house-style Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
1. Case mismatch: Step 1 now checks both design.md and DESIGN.md 2. Easing defaults to index 0 when moodboard lacks easing_index, added easing_index to moodboard schema example 3. gsap.from() vs fromTo(): added clarification that sub-compositions should prefer fromTo() per motion-principles load-bearing rules 4. Fixed stale Step 0a references → Step 1 in prompt-expansion.md Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

What
Major skill infrastructure update: design.md support, shared video-composition references, and creative direction patterns extracted from website-to-hyperframes into the base hyperframes skill.
Changes
design.md Integration (lightweight)
Shared Video References (extracted from website-to-hyperframes)
video-composition.md— density, scale, color presence, frame composition rules. Light canvas guidance (don't override user palette). Always read.beat-direction.md— per-beat planning (concept → mood → choreography verbs → transition), rhythm templates by video typetechniques.md— 11 visual techniques with code patterns (SVG drawing, Canvas 2D, kinetic type, Lottie, etc.)narration.md— pacing, tone, script structure, number pronunciation, hooksmotion-principles.md— gained image motion treatment + load-bearing GSAP rulesClaude Design Transfer Brief (6 gaps applied)
Prompt Expansion Updated
Key Design Decision
design.md = brand truth, not video layout spec. Background color is strict from design.md (don't switch light to dark). Video-composition rules teach how to make any palette work cinematically.
Files Changed (16)
New shared references:
skills/hyperframes/references/video-composition.mdskills/hyperframes/references/beat-direction.mdskills/hyperframes/references/techniques.mdskills/hyperframes/references/narration.mdUpdated:
skills/hyperframes/SKILL.md— discovery, anti-scope-creep, rhythm, variations, two-phase verify, new referencesskills/hyperframes/references/prompt-expansion.md— beat-direction formatskills/hyperframes/references/motion-principles.md— image treatment + GSAP rulesskills/hyperframes/references/design-picker.md— contextual generationskills/hyperframes/visual-styles.md— YAML token blocks per presetskills/hyperframes/house-style.md— design.md precedenceskills/hyperframes/templates/design-picker.html— spec-compliant outputskills/website-to-hyperframes/references/*— now reference shared filesTest plan
🤖 Generated with Claude Code