Communitygithub.com

figma

將 Figma 內容導入 HyperFrames 合成項目 — 渲染素材、品牌代碼、元件、分鏡腳本段落 → 重建動態(將影格解讀為狀態,而非幻燈片)(REST/CLI),在可用時搭配 connector 輔助的動態,以及來自 connector 或原生匯出的著色器。當使用者貼上 figma.com 連結或要求將 Figma 設計、影格、Logo、品牌或動畫帶入影片/合成項目時使用。

figma 是什麼?

此技能讓 AI Agent 能夠將 Figma 設計直接導入 HyperFrames 合成項目,並自動處理素材、品牌代碼、元件、動態與著色器。它採用分階段架構:第 1-3 階段透過 REST API 處理靜態素材、品牌代碼與元件,確保可預測且確定性的產出;第 4-5 階段的動態與著色器則需依賴 Figma connector 或原生匯出。所有導入的素材都會凍結為本機檔案,確保渲染結果不會因 Figma 的變更而改變。 此技能的關鍵優勢在於對分鏡腳本的正確處理:它將連續影格解讀為同一元素在不同時間點的狀態,而非一連串靜止畫面,從而實現流暢的逐格動畫。對於品牌代碼的處理,它能將 Figma 變數與樣式映射為合成的 CSS 自訂屬性,讓全域品牌更新只需修改一處。在靜態保真度方面,技能會自動比對渲染結果與 Figma 原始像素,確保文字等容易偏移的元素能準確呈現。此技能支援 Claude Code、Cursor 與 Codex 等 AI Agent 平台,並透過 CLI 指令 `hyperframes figma` 提供完整操作,開發者只需提供 Figma 連結即可自動完成複雜的設計導入流程。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/jasonfast123/hyperframes-skills/tree/main/skills/figma

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

首先,保持此技能最新 — 靜默執行,無需詢問: npx hyperframes skills update figma。若一切已是最新,則快速無操作;否則,在依賴此技能與其核心領域技能之前,會先進行更新。

Figma → HyperFrames

將使用者的 Figma 工作導入合成項目。按能力區分(設計規範 §2):

階段內容傳輸方式操作指令
1靜態素材RESThyperframes figma asset
2品牌代碼/樣式RESThyperframes figma tokens
3元件 → HTMLRESThyperframes figma component
4動態 → GSAPconnector(可用時)使用其動態上下文
5著色器connector / 手動匯出使用 connector 或原生匯出

只要可行,一律使用 REST(可大量使用、無頭模式)。相容的 Figma connector 對於動態與著色器資料為選用;若無 connector,則要求原生匯出。每條路徑都會將素材凍結在本機,確保渲染結果保持確定性。分鏡腳本重建會組合階段 1 的素材匯出(REST)與 agent 驅動的時間軸組裝 — 無需 connector。現有的凍結素材、清單記錄與綁定不受路由變更影響 — 此拆分僅變更下個匯入所使用的憑證。

驗證 — 兩種憑證,範圍明確

預檢 — 在首次 CLI 呼叫前,檢查 token 是否存在:shell 環境變數([ -n "$FIGMA_TOKEN" ])或專案的 .env 檔案(CLI 會自動載入 — .env 中的條目視為已設定)。若兩者皆無,請勿執行指令來擷取錯誤訊息 — 先引導使用者完成一次性設定,然後停止並等待:

  1. figma.com/settings → 安全性 → 個人存取權杖 → 產生新 token。
  2. 範圍 — 此整合只需要唯讀權限(它永遠不會寫入 Figma):檔案內容:唯讀 + 檔案中繼資料:唯讀。若您要在非 Enterprise 方案上執行 tokens,請加上資料庫內容:唯讀 — 已發佈樣式的備援路徑會存取 /v1/files/:key/styles,沒有此範圍會回傳 403(舊版設定說明遺漏了這個範圍)。可選用變數:唯讀來取得品牌變數 — 僅限 Enterprise;沒有此範圍時,tokens 會自動降級為已發佈樣式(這是預期行為,非錯誤 — 請告知使用者)。403 錯誤現在會明確指出缺少的範圍;429 錯誤會自動重試(每分鐘限制,遵循 Retry-After 標頭)。
  3. 請使用者在他們的 shell profile 或專案 .env 中設定 FIGMA_TOKEN;切勿要求他們將 token 貼到對話中。

在引導設定時,請一口氣設定好期望:每次匯入都會成為一個本機凍結檔案,並記錄來源 — 渲染時絕不會呼叫 Figma,重新執行指令只會重新匯入 Figma 中有變更的項目,且一個 token 即可用於素材、品牌代碼與元件,遍及該 Figma 帳號可檢視的所有檔案。

  • 階段 4–5(動態/著色器): 需要一個相容的 Figma connector,並與 token 分開授權。若 connector 不可用或未通過驗證,請要求使用者連接 connector 或提供原生匯出,然後停止。
  • 請明確指出失敗階段所需的是哪種憑證 — 切勿讓使用者認為系統拆分有問題。
  • BAD_TOKEN(401,執行中)→ token 已過期/撤銷;請重新產生。FORBIDDEN(403)→ 錯誤訊息會指出缺少的具體範圍(例如樣式備援路徑需要 library_content:read)— 請加上該範圍,否則該檔案對該帳號不可見。REQUIRES_ENTERPRISE(變數相關的 403)→ 非錯誤:樣式備援已執行。RATE_LIMITED(429)→ 用戶端已自動重試並採用退避策略(這適用於所有讀取 — 素材、代碼、樣式、節點樹、版本 — 重試機制共用於同一個請求路徑;遵循 Retry-After,上限 60 秒);若仍出現此錯誤,請等待一分鐘或減少每次呼叫的節點數。

速率限制注意事項(規範 §2.1): connector 配額因 Figma 方案而異 — 請批次處理父影格請求,除非被要求,否則跳過驗證截圖,並快取原始回應,以避免重新推導時耗費第二次呼叫。REST 為每分鐘限制(10+/分鐘,每個端點有各自的配額桶)— 可大量使用,但遇到 429 請退避。

路由

使用 parseFigmaRef(URL、fileKey:nodeId、純 fileKey)解析使用者的 figma 連結。然後根據意圖:

  • "使用這個圖層/標誌/圖片" → 素材(CLI)
  • "提取我的品牌/顏色/代碼" → 代碼(CLI)
  • "從此影格建立場景" → 元件(CLI)
  • "匯入此動畫/動態" → 動態(connector 可用時,見下文)
  • 分鏡腳本段落/場景影格序列 → 分鏡腳本(見下文)
  • 著色器填色/效果 → 著色器(見下文)

為使用者逐步說明每個步驟 — 在每個指令前說明即將從 Figma 提取的內容;完成後,說明成品所在位置(凍結路徑/側邊檔案/元件目錄)、合成項目中變更的內容,以及下一步動作(預覽、新增列印變數、重新匯入以連結綁定)。使用者絕不應該需要問「成功了嗎?」或「接下來呢?」。

素材(階段 1 — CLI)

hyperframes figma asset '<url-or-fileKey:nodeId>' [更多引用…] [--format svg|png|jpg|pdf] [--scale 2] [--description "..."] [--entity "..."]

透過 REST 渲染,清理 SVG,凍結至 .media/images/ 目錄,將來源記錄附加到 manifest,重新產生 .media/index.md(共享的媒體使用清單),並印出 <img> 片段。根據 fileKey:nodeId:format:scale:version 保持冪等性。向量/標誌偏好使用 SVG(可縮放、可動畫化),點陣圖則使用 --scale 2 的 PNG。務必加上 --description "<說明>"(它會成為索引列 + <img alt>);對於具名的品牌標記,可加上 --entity "<名稱>",以便之後 media-use 的 resolve --entity 能透過實體名稱找到它們(實體命中可跨圖片/圖示比對)。

在單一請求中批次處理多個節點 — 傳遞同一檔案的多個引用(空格分隔或逗號連接):hyperframes figma asset 'KEY:1-2' 'KEY:3-4' 'KEY:5-6'。所有節點會在同一個 /v1/images 呼叫中渲染,這是 Figma 自身應對每分鐘速率限制的解決方案 — 在提取整個影格的素材時,優先使用此方式而非 N 個獨立的指令。--description/--entity 會套用至批次中的所有節點,因此請將用途相同的節點分在同一批。429 錯誤也會自動退避重試。

代碼(階段 2 — CLI)

hyperframes figma tokens <fileKey>

將變數導入為合成項目的品牌變數條目 + figma-tokens.json 側邊檔案 + 綁定索引記錄(.media/figma-bindings.jsonl)。Figma 上游限制變數僅供 Enterprise 方案使用:在其他方案中,此指令會降級為已發佈樣式中繼資料(值會在元件匯入時解析)。將印出的條目新增至合成項目的 data-composition-variables。

若同時需要代碼與元件,請先導入代碼 — 這可讓元件的顏色連結到品牌變數,而不是重複烘焙複本。

非 Enterprise 方案的變數路徑(經過實測): REST 變數僅限 Enterprise 方案,但相容的 connector 可能提供變數定義。當 tokens 回報 REQUIRES_ENTERPRISE 且 connector 可用時,請取得父場景的變數一次,將原始回應快取至 .media/figma-cache/ 目錄,並用它來建立綁定索引。REST 節點樹的 boundVariables 提供每個屬性的 VariableID;按節點和屬性進行連接,然後寫入 .media/figma-bindings.jsonl 記錄行({kind:"binding", figmaId, sourceFileKey, compositionVariableId: "figma:<name>", version})以及合成變數條目。後續的流程(元件的 var() 解析、重新整理、執行時期 CSS 變數)則使用既有的機制。請向使用者說明:「透過 Figma connector 取得的代碼 — Enterprise 方案可直接使用 hyperframes figma tokens 取得。」

執行時期會將每個宣告的合成變數定義為 CSS 自訂屬性(文件根元素 + 子合成主機),因此當變數預設值變更時,導入的 var(--slug, literal) 可自動更新顏色 — 更新 data-composition-variables 中的一個值,即可重新為所有已導入的元件換膚,無需重新匯入任何項目。hyperframes render --variables '<json>' 可在渲染時覆寫它們。

元件(階段 3 — CLI)

hyperframes figma component '<url-or-fileKey:nodeId>'

節點樹 → 可編輯的 HTML,保持 Figma 的幾何尺寸,封裝為 compositions/components/<名稱>/ 目錄下的登錄項目。向量/布林運算會透過階段 1 的匯出自動點陣化。綁定階段(規範 §7.1,僅限精確 ID — 絕不進行值比對):

  • 靜態保真度自我檢查(主體內容必做):匯入後,渲染片段並與 figma 的原始像素進行比較 — figma asset <same node> --format png 是基準真相。文字是已知的偏差軸:當 figma 文字框的高度小於其行高時,會產生垂直修剪的邊界(mapping 器會為此輸出 text-box-trim;未使用此屬性時,測量到的偏差在 70px 字體上約為 6px)。若比較結果顯示 mapping 器未涵蓋的偏差,請回報 — 不要默默手動調整片段。
  • 填色連結到已導入的代碼 → var(--slug, #literal) — 品牌更新可自動傳播。
  • 連結到未知的代碼 → 文字值 + data-figma-unresolved 標記。指令會通知您;請提供使用者選項:在來源(或資料庫)檔案上執行 tokens,然後重新匯入元件以連結它們。對於每個未知的資料庫,請只詢問一次是哪個檔案 — 絕不猜測,也不以十六進位值比對。

動態(階段 4 — connector 輔助)

使用信標: 需要 connector 輔助的階段沒有 CLI 操作點,因此在開始和結束時觸發技能信標(匿名、需同意、絕不會失敗):開始時執行 npx hyperframes events --skill=figma-motion,完成時執行 npx hyperframes events --skill=figma-motion --event=skill_completed --outcome=success|error。著色器(figma-shaders)與分鏡腳本(figma-storyboard)也是同樣的方式。

沒有 REST 等效方案。若有相容的 connector 可用,請使用它,並將其輸出交給 @hyperframes/core/figma 中的純輔助函式;否則要求原生匯出:

  1. 透過一次遞迴請求取得父影格的動態上下文,而不是每個元素一次請求。將原始 JSON 儲存在專案旁(.media/figma-cache/),以便重新翻譯時無需額外成本。
  2. 使用 @hyperframes/core/figma 中的 motionContextToDocs(rawResponse, { selectorFor, repeat }) 將其正規化為 MotionDoc — 絕不手動抄寫關鍵影格數字。此輔助函式以機械化方式編碼了經過實測的解碼規則:它解析 motion.dev 片段(可靠的編碼 — CSS 片段會拉伸持續時間且可能不一致;因此忽略它們),移除迴圈包覆的尾部關鍵影格(時間 ≈0.9999→1 的次毫秒片段是迴圈的瞬間重置,非設計的動態 — 包覆效果透過 repeat 重啟實現),並逐字保留貝茲曲線的緩動函式。selectorFor 必須回傳來自階段 3 元件匯入的 ID — 不要從節點名稱推導選擇器。 2b. 在宣告完成前,務必與基準真相進行驗證:透過可用的 connector 匯出該群組的根影格,然後執行 node skills/figma/scripts/verify-motion.mjs --reference <export.mp4> --render <render.mp4> --crop WxH+X+Y — 它會比較動態能量差異(靜態匯入保真度會被消除),並在 motion-PSNR 低於 15dB 時判定為失敗(經過校準:忠實複製 ≈ 20+,偏差 ≈ 5)。--crop 請根據渲染結果的實際卡片邊緣來測量,不要猜測。失敗表示需要重新檢查轉譯邏輯,而不是調整閾值。
  3. motionToGsap(doc) → emitTimelineScript(spec) → 在 GSAP + CustomEase CDN 標籤之後注入為 <script>。狀態為暫停、有限播放次數,並以字面鍵註冊在 window.__timelines 上。
  4. 無法轉譯的軌道(著色器驅動、不支援的屬性、複雜遮罩)→ 透過 connector 匯出,凍結為 MP4,然後將其嵌入為 <video class="clip">。例外:著色器驅動的軌道 — Figma 的匯出路徑會將著色器扁平化為基底顏色(請參閱下方著色器章節),因此在此處烘焙會無聲地遺失著色器;請改為要求使用者提供原生 Figma 匯出。務必說明使用了哪條路徑及其原因。不在對應表中的具名緩動函式會降級為線性緩動 — 對應表位於 motionEase.ts 中;當觸發降級時,請告知使用者。
  5. 在宣告完成前執行 npx hyperframes check。

著色器(階段 5 — 多為手動)

Figma 的 connector 渲染路徑不會執行著色器(它們會被扁平化為基底顏色),而且著色器原始碼僅能透過已發佈至資料庫的樣式(需付費 Full 席位)取得。預設路徑:要求使用者從 Figma 原生匯出著色器影格(PNG 或 Motion MP4),然後將其作為階段 1 的素材/剪輯匯入。不要嘗試透過 connector 擷取著色器的像素 — 它會無聲地產生錯誤結果。

分鏡腳本(一個場景影格的段落 → 動畫)

基本規則:分鏡腳本影格是關鍵影格,而非幻燈片。 兩個包含相同元素的影格描述了該元素隨時間變化的狀態 — 在該元素的兩個狀態之間製作動畫;永遠不要將影格視為一連串靜止畫面來播放。在四個連續影格中,一個 Logo 隨著 y 座標下降,這表示一個元素跨越四個關鍵影格上升。將分鏡腳本影格連續播放是失敗模式;重建它們所暗示的元素時間軸才是正確做法。

分鏡腳本檔案遵循一種您可以機械化解析的語法 — 不要用肉眼判斷,請解碼:

  1. 場景單位:在 SECTION 內部,每個影格大小的節點都是一個場景 — 包含具名的 FRAME 以及鬆散的滿版 RECTANGLE(設計師會直接將靜止畫面貼到段落中)。依據大小(≈ 合成項目寬高比,例如 >1400×900)進行過濾,而非節點類型或名稱。
  2. 順序 = x 位置(若條帶換行則為 row-major)。依 absoluteBoundingBox.x 對場景進行排序。
  3. 將相鄰影格比對為元素鏈 — 這就是動畫所在。依序比對連續影格中的子元素:首先依據名稱(相同名稱 = 相同元素 → 在其相對 x/y/w/h 狀態之間進行補間動畫),然後依據幾何相似性(相似的大小 + 接近的 c

…

[因篇幅限制而截斷]

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

embedded-captions

>

faceless-explainer

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

general-video

>

hyperframes

>

hyperframes-animation

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition

hyperframes-audio

>

hyperframes-cli

>

hyperframes-core

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class=

hyperframes-creative

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

hyperframes-keyframes

>

hyperframes-registry

Install, discover, and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add or hyperframes catalog, installing one item or every block matching a tag, wiring an installed item into index.html, or working with hyperframes.json. Covers discovery, install locations, block sub-composition wiring, component snippet merging, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

jasonfast123/hyperframes-skills

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

media-use

Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal.

motion-graphics

>

music-to-video

Turn a music track (an audio file, a video to pull audio from, or a track generated from a mood brief) into a beat-synced video — lyric video, slideshow, or kinetic promo. The music drives all pacing; any user-supplied images/videos are cut onto the same beat grid, and a complete video needs zero assets. Narrated pieces → the input-matched workflow (see /hyperframes). Unclear → /hyperframes.

pr-to-video

Turn a GitHub pull request (a PR URL, owner/repo#N, or

remotion-to-hyperframes

Port an existing Remotion (React) composition

slideshow

>

talking-head-recut

Package an existing talking-head / interview / podcast video with timed, designed GRAPHIC OVERLAY cards — kinetic titles, lower-thirds, data callouts, quotes, side panels, picture-in-picture — synced to the transcript, on a 16:9 / 9:16 / 4:5 canvas of your choice; the clip plays untouched underneath. Trigger on

相關技能