Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

figma — Claude skill: bring Figma designs into HyperFrames video

Imports assets, brand tokens and components from Figma into a HyperFrames project, then turns storyboard frames into motion. Useful when a design has to move, not sit still.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add heygen-com/hyperframes --skill figma -a claude-code
Open on GitHub

What figma does

Every import runs at build time and freezes a local file with its source recorded under .media/. Renders never call Figma, and re-running a command re-imports only what changed. Assets, tokens and components come over REST with a token. Motion and shader data need a Figma connector or a native export from you.

Set FIGMA_TOKEN in the shell or the project .env before the first command. Create it at figma.com → Settings → Security → Personal access tokens with read-only File content and File metadata, plus Library content for tokens on non-Enterprise plans. Don't paste it into the chat. Pull a layer or logo with npx hyperframes figma asset, colours and type with npx hyperframes figma tokens, a frame as editable HTML with npx hyperframes figma component.

The skill reads storyboard frames as keyframe states, not slides: an element animates between states instead of playing back as stills. Figma flattens shaders to their base colour on export, so that frame needs a native export. Install it if you build video from designs and can set up a token. If Figma isn't part of your project, skip it.

What it helps with

  • pull a logo and icons out of Figma as SVG
  • extract brand colours and type into composition variables
  • rebuild a design frame as editable HTML at exact geometry
  • turn neighbouring storyboard frames into element motion
  • check a rendered component against Figma's pixels

Example prompts for the agent

  • here's the design link, build a video from it
  • grab the logo from this frame and place it in the composition
  • animate these frames instead of playing them as slides

How to install figma

1Skills CLI (Vercel)

npx skills add heygen-com/hyperframes --skill figma -a claude-code

2Manually: put the files in place

~/.claude/skills/figma/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/figma/

From the same set14

The whole set →
hyperframes heygen-com Instructs coding agents on creating, validating, and rendering HTML-based videos using the HyperFrames framework and CLI. Claude Code CX Codex Cursor +1 1,200,000installs hyperframes-cli heygen-com Controls HyperFrames video workflows from the CLI: audits layouts and contrast, edits timeline clips, captures snapshots, and renders locally or in cloud runtimes. Claude Code CX Codex Cursor +1 1,200,000installs media-use heygen-com Finds or generates media for HyperFrames videos, including voiceovers, music, cutouts, and color grades. Stores files locally in assets. Claude Code CX Codex Cursor +1 1,100,000installs hyperframes-registry heygen-com Finds and installs about 450 ready-made HyperFrames blocks and components as editable source code. Useful when adding video effects and titles without building markup from scratch. Claude Code CX Codex Cursor +1 1,000,000installs remotion-to-hyperframes heygen-com Imports Remotion animations or video footage into HyperFrames and verifies visual matching frame by frame against the original. Claude Code CX Codex Cursor +1 504,900installs slideshow heygen-com Build live HyperFrames decks with slides, fragment reveals, branching hotspots, and presenter notes. Use it when the output should be a presentation rather than a video. Claude Code CX Codex Cursor +1 415,500installs frost-sequence-camera-orbit heygen-com Builds a 22.5-second scene where an orbiting camera follows an ice logo that breaks apart, reforms into two text moments, and fades. Claude Code CX Codex Cursor +1 9,800installs orbit-card heygen-com Adds a 10-second 1920×1080 HyperFrames motion block where a single feature card orbits a dot sphere using exported Blender camera paths. Claude Code CX Codex Cursor +1 9,800installs

Similar

slack-gif-creator official anthropics This skill helps create animated GIFs for Slack and check their parameters. Use it for custom emoji or GIFs shared in messages. Claude Code Claude.ai 75,256installs shadcn shadcn-ui This skill helps add and configure shadcn/ui components while following project conventions. Use it when building interfaces, applying presets, or working on chat UI. Claude Code CX Codex Cursor +1 122,100installs emil-design-eng emilkowalski This skill guides UI polish, component details, and animation choices. Use it when an interface works but its states and transitions need closer review. Claude Code CX Codex Cursor +1 385,500installs review-animations emilkowalski Reviews UI animation and motion code against Emil Kowalski's design standards. Flags slow easings, non-GPU properties, and unnecessary transitions. Claude Code CX Codex Cursor +1 254,100installs apple-design emilkowalski Translates Apple's fluid interface principles from WWDC talks into web code with Pointer Events and spring physics. Essential for gesture-driven sheets, drags, and sliders. Claude Code CX Codex Cursor +1 242,100installs frontend-design official anthropics This skill guides intentional visual design for new interfaces and redesigns. Use it when a generic generated UI is not enough. Claude Code Claude.ai 1,025,790installs grill-me Matt Pocock grill-me interviews you about a plan or design to expose gaps and sharpen decisions. Use it before implementation starts. Claude Code 1,424,476installs design-taste-frontend Leonxlnx This skill directs the design of public pages and work screens, then checks the result in a browser through screenshots. Use it when an interface feels generic or unfinished. Claude Code CX Codex Cursor +1 673,100installs

Questions about figma

How do I install the figma skill in Claude?

Run npx skills add heygen-com/hyperframes --skill figma -a claude-code. The skill file lands at ~/.claude/skills/figma/SKILL.md.

What does the figma skill do?

It imports assets, brand tokens and components from Figma into a HyperFrames project and converts storyboard frames into motion. Imports happen at build time, so renders don't call Figma.

What do I need before using it?

A FIGMA_TOKEN in the shell or project .env with read-only File content and File metadata scopes. Motion and shaders also need a Figma connector or a native export of the frame.

Source text

SKILL.md · Apache-2.0
---
name: figma
description: Bring Figma into a HyperFrames video - rendered assets, brand tokens, components, storyboard frames as reconstructed motion (frames read as states, not slides), shaders and connector-assisted motion. Use when the person pastes a figma.com link or asks to use a Figma design, frame, logo or brand.
---

**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin.

# Figma → HyperFrames

Every import happens at build time and freezes a local file with its source recorded under `.media/`, so renders never call Figma and re-running a command re-imports only what changed. Assets, tokens and components go over REST with a token; motion and shader data need a Figma connector, or a native export from the person.

## Access

`FIGMA_TOKEN` in the shell or the project `.env`. Check it exists before the first command; if not, tell the person how to make one and stop: figma.com → Settings → Security → Personal access tokens, read-only **File content** and **File metadata**, plus **Library content** for `tokens` on non-Enterprise plans. They set it themselves; never ask them to paste it into the chat.

| Error | Meaning |
| --- | --- |
| `BAD_TOKEN` (401) | Expired or revoked: make a new one |
| `FORBIDDEN` (403) | The message names the missing scope, or the file isn't visible to the account |
| `REQUIRES_ENTERPRISE` (403, variables) | Not a failure: the published-styles fallback already ran |
| `RATE_LIMITED` (429) | Already retried with backoff; wait a minute or import fewer nodes per call |

## Commands

- A layer, logo or image: `npx hyperframes figma asset '<url or fileKey:nodeId>' [more refs] --format svg|png --scale 2 --description "<what it is>" [--entity "<brand mark>"]`. SVG for vectors and logos, PNG at 2x for raster. Several nodes of one file in one call render in a single request; `--entity` lets `/media-use` find a brand mark later.
- Brand colours and type: `npx hyperframes figma tokens <fileKey>`. Run it before `component` and paste the printed entries into `data-composition-variables`. Without Enterprise it falls back to published styles. A connector can supply variables there instead: cache its raw response in `.media/figma-cache/` and write the bindings to `.media/figma-bindings.jsonl` (`{kind:"binding", figmaId, sourceFileKey, compositionVariableId:"figma:<name>", version}`).
- A frame as editable HTML at exact geometry: `npx hyperframes figma component '<url or fileKey:nodeId>'`, packaged under `compositions/components/<name>/`. A fill bound to an imported token comes out as `var(--slug, #literal)`, so one variable re-brands every import; an unknown token stays a literal marked `data-figma-unresolved`: import that library's tokens and re-import. Ask once which file a library is; never match by hex.
- Check hero components against Figma's pixels (`figma asset <same node> --format png`). Text drift is the usual cause; report drift you can't fix instead of hand-tweaking the import.

## Motion (connector)

Usage beacon: these phases have no CLI touchpoint, so run `npx hyperframes events --skill=figma-motion` when you begin and `npx hyperframes events --skill=figma-motion --event=skill_completed --outcome=success|error` when done. Same for shaders (`figma-shaders`) and storyboards (`figma-storyboard`).

1. Fetch motion context for the parent frame in one recursive request; cache the raw JSON in `.media/figma-cache/`.
2. Normalise with `motionContextToDocs(raw, { selectorFor, repeat })` from `@hyperframes/core/figma`, never by transcribing keyframes. It reads the motion.dev snippets (the CSS snippets stretch durations), drops loop-wrap tail keyframes and keeps bezier eases. `selectorFor` returns the ids from the component import.
3. `motionToGsap(doc)` → `emitTimelineScript(spec)`, injected after the GSAP and CustomEase tags: paused, finite, a literal `window.__timelines` key. Named eases outside the mapped set fall back to linear; say so.
4. Verify against Figma's own export: `node <SKILL_DIR>/scripts/verify-motion.mjs --reference <export.mp4> --render <render.mp4> --crop WxH+X+Y`. It compares motion between samples, so static drift cancels out, and fails under 15 dB (faithful ≈ 20+, diverging ≈ 5). Measure `--crop` from the render's card edges. A fail means fix the translation, not the threshold.
5. A track that won't translate: export it, freeze the MP4 and place it as `<video class="clip">`.

## Shaders

Figma's export path flattens shaders to their base colour, and shader source is only reachable for library-published styles. Ask the person for a native export of that frame (PNG or MP4) and place it as an asset or clip.

## Storyboards: frames are KEYFRAMES, not slides

Two frames holding the same element describe that element's state through time: animate the element between the states. Playing the frames back to back as stills is the failure mode.

1. Scenes are every frame-sized node in the section, named frames and loose full-frame rectangles alike: filter by size, not type or name. Order by `absoluteBoundingBox.x`.
2. Match children across neighbouring frames by name first, then by similar size and position. Tween geometry between states; crossfade two exports in place when the pixels changed. Export one asset per element, not one still per frame. Unmatched children enter or exit at their scene's beat.
3. Text nodes below the strip are motion notes for the scene above them, not on-screen copy. A note about motion inside a scene ("lines reveal one after another") means import that frame as a component and animate it.
4. Export in batches of about 4 scene frames per call: past about 12 ids `/v1/images` times out.
5. Frames that are one product UI in successive states: rebuild the UI as live DOM: code what changes state, freeze what doesn't, and treat each frame change as an interaction to perform (the cursor moves, clicks, the screen responds), not a tween to apply.
6. Stills are the fallback, only for frames with no shared elements.

Never leave a Figma URL in the composition.

© heygen-com · Apache-2.0 · heygen-com/hyperframes

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor