figma

GitHub

将 Figma 设计资产、品牌标识、组件及动态效果导入 HyperFrames,支持通过 REST API 获取静态资源、Token 和 HTML 组件,并利用连接器处理运动与着色器数据。

skills/figma/SKILL.md heygen-com/hyperframes

触发场景

用户粘贴 figma.com 链接 要求使用 Figma 设计、帧、Logo 或品牌元素

安装

npx skills add heygen-com/hyperframes --skill figma -g -y
更多选项

不安装直接使用

npx skills use heygen-com/hyperframes@figma

指定 Agent (Claude Code)

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

安装 repo 全部 skill

npx skills add heygen-com/hyperframes --all -g -y

预览 repo 内 skill

npx skills add heygen-com/hyperframes --list

SKILL.md

Frontmatter
{
    "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 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.

版本历史

  • 34a8d48 当前 2026-11-02 22:56

    重构技能结构,将原工作流技能折叠至新目录,精简核心条目并移除已退休技能,更新技能索引与路径引用。

  • 9566f96 2026-10-19 05:56
  • 097d901 2026-08-27 19:54

    更新技能前增加用户确认步骤,防止静默自动执行更新命令。

  • 9d4c349 2026-07-24 22:17

同 Skill 集合

.agents/skills/changelog-video/SKILL.md
.claude/skills/changelog-video/SKILL.md
registry/blocks/canopy-part-title/SKILL.md
registry/blocks/code-slice-hero/SKILL.md
registry/blocks/cuboid-carousel/SKILL.md
registry/blocks/frost-sequence-camera-orbit/SKILL.md
registry/blocks/glass-shard-title/SKILL.md
registry/blocks/orbit-card/SKILL.md
registry/blocks/wireframe-portal-title/SKILL.md
skills/faceless-explainer/SKILL.md
skills/general-video/SKILL.md
skills/hyperframes-cli/SKILL.md
skills/hyperframes-core/SKILL.md
skills/hyperframes-creative/SKILL.md
skills/hyperframes-keyframes/SKILL.md
skills/hyperframes-registry/SKILL.md
skills/hyperframes/SKILL.md
skills/media-use/SKILL.md
skills/music-to-video/SKILL.md
skills/pr-to-video/SKILL.md
skills/product-launch-video/SKILL.md
skills/remotion-to-hyperframes/SKILL.md
skills/reverse-any-video/SKILL.md
skills/slideshow/SKILL.md
skills/talking-head-recut/SKILL.md
.agents/skills/captions-overlay/SKILL.md
.agents/skills/cut-the-curve/SKILL.md
.agents/skills/motion-doctrine/SKILL.md
.agents/skills/oversized-cursor/SKILL.md
.agents/skills/seam-craft/SKILL.md
.claude/skills/captions-overlay/SKILL.md
.claude/skills/cut-the-curve/SKILL.md
.claude/skills/motion-doctrine/SKILL.md
.claude/skills/oversized-cursor/SKILL.md
.claude/skills/seam-craft/SKILL.md
skills/embedded-captions/SKILL.md
skills/hyperframes-animation/SKILL.md
skills/hyperframes-audio/SKILL.md
skills/hyperframes-studio/SKILL.md
skills/motion-graphics/SKILL.md

元信息

文件数
0
版本
34a8d48
Hash
d9537758
收录时间
2026-07-24 22:17

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.156.0. UTC+08:00, 2026-11-07 06:47
浙ICP备14020137号-1