npx skills add ...
npx skills add heygen-com/hyperframes --skill tailwind
Tailwind CSS v4.2 browser-runtime patterns for HyperFrames compositions. Use when scaffolding or editing projects created with `hyperframes init --tailwind`, writing Tailwind utility classes in composition HTML, adding CSS-first Tailwind v4 theme tokens, debugging v3 vs v4 syntax, or deciding when to compile Tailwind to CSS instead of using the browser runtime.
npx skills add heygen-com/hyperframes --skill tailwind
HyperFrames init --tailwind uses the Tailwind browser runtime pinned to @tailwindcss/browser@4.2.4. Treat that as Tailwind v4, not v3.
This skill is for composition HTML generated by the CLI. It is not for packages/studio, which still uses Tailwind v3 internally with tailwind.config.js, PostCSS, and @tailwind directives.
hyperframes init --tailwind.window.__tailwindReady in index.html.@tailwindcss/browser@4.2.4.cdn.tailwindcss.com.window.__tailwindReady before frame capture starts.Tailwind v4 is CSS-first:
Avoid v3 setup patterns in browser-runtime compositions:
Do not add a tailwind.config.js just to define colors, fonts, spacing, or utilities for a v4 browser-runtime composition. Use @theme and @utility in a text/tailwindcss style block.
If you truly need an existing JavaScript config for a compiled v4 build, load it explicitly from CSS with @config, then validate in the browser. Do not assume v4 auto-detects v3 config files.
Keep Tailwind responsible for static layout and visual style. Keep motion timing in GSAP or another seekable adapter.
For repeated items, prefer class lists plus CSS custom properties over generating class names dynamically:
Tailwind's browser runtime scans the current document and generates CSS for class names it can see. Do not build render-critical class names only at seek time:
Use complete class names in HTML, data attributes, or explicit CSS instead:
If a generated class is unavoidable, make sure the full class token appears in a text/tailwindcss block before validation.
w-[...], h-[...], aspect-video, grid, flex, and fixed padding for video layouts.border border-white/20 is safer than bare border.shadow-xs, rounded-xs, outline-hidden, shrink-*, and grow-* where those replacements apply.After editing a Tailwind-enabled composition:
For a render proof:
The validation path should show no missing-style flashes on frame 0. If styles appear in preview but not render, check that window.__tailwindReady exists and resolves before capture.
hyperframes init --tailwind.@tailwindcss/browser@4.2.4.window.__tailwindReady is present.@tailwind directives with v4 browser-runtime CSS.tailwind.config.js to @theme.npx hyperframes validate and render a short proof./* Do not use these in Tailwind v4 browser-runtime compositions. */
@tailwind base;
@tailwind components;
@tailwind utilities;<section
class="clip absolute inset-0 grid place-items-center bg-zinc-950 text-white"
data-start="0"
data-duration="5"
data-track-index="1"
>
<div class="w-[1280px] max-w-[82vw] text-center">
<p class="mb-6 text-xl font-medium uppercase tracking-[0.18em] text-cyan-300">
Render-ready Tailwind
</p>
<h1 class="text-7xl font-black leading-none text-balance">
Utility classes, deterministic frames.
</h1>
</div>
</section><span class="inline-block translate-y-[calc(var(--i)*6px)] opacity-80" style="--i: 0"></span>
<span class="inline-block translate-y-[calc(var(--i)*6px)] opacity-80" style="--i: 1"></span>
<span class="inline-block translate-y-[calc(var(--i)*6px)] opacity-80" style="--i: 2"></span>// Risky: Tailwind may not see every generated class before capture.
element.className = `bg-${color}-500`;<div data-tone="blue" class="bg-blue-500 data-[tone=rose]:bg-rose-500"></div>npx hyperframes lint
npx hyperframes validate
npx hyperframes inspectnpx hyperframes render . --workers 1 --quality draft --output tailwind-proof.mp4