Figma 變數是讓產出使用 token 而非硬編碼值的前提。官方建議用變數管理間距、顏色、圓角與字體四類,理由直接:agent 只能引用檔案裡真的存在的東西——沒有變數,它拿到的就是 #3B82F6 這樣的十六進位值,而那是後續所有不一致的起點。

get_variable_defs 負責取出選取範圍用到的變數與樣式。但這裡有一個官方文件沒有處理的核心問題,本篇大部分篇幅用來談它。


📖 官方文件的缺口

Figma 有一頁叫「變數沒有正確帶入程式碼」,但它只處理了一個成因:agent 挑錯工具。官方的建議是把要求講明確,並給了範例:

「Get the variable names and values for this selection.」

官方沒有說明的是:當 Figma 變數的名稱與你 codebase 裡 token 的名稱不一致時該怎麼辦。而這在實務上幾乎是常態——設計端叫 color/bg/subtle,程式端叫 --surface-muted 或 colors.surface.muted。

這個缺口要靠規則檔補,見下。


📖 命名對應的三種策略

依維護成本由低到高:

一、兩邊名稱對齊(最省事,但要先談好)

讓 Figma 變數名稱與 codebase token 名稱採用同一套命名。這是最乾淨的做法,但它是一個組織決定而非技術決定——需要設計與工程同意採用同一份命名規範,並在兩邊同步維護。

適合:新專案、或正在重建設計系統的團隊。

二、在規則檔寫一份對應表

在 CLAUDE.md 或 .cursor/rules 裡明確寫出對應:

Figma 變數 → codebase token
color/bg/subtle      → var(--surface-muted)
color/text/primary   → var(--text-primary)
spacing/md           → var(--space-3)
radius/card          → var(--radius-lg)

適合:既有專案,兩邊名稱已經各自長成不同樣子。

代價:這份表會過期。每次任一邊新增變數都要同步,而沒有機制會提醒你。

三、建立一層轉換

在 codebase 裡建立一層以 Figma 命名為準的別名,讓兩套名稱並存。成本最高,但只需要維護一次。

三者之間沒有正確答案,取決於你的設計系統成熟度。 但有一條通則:不要讓 agent 自己猜對應。猜測在單次生成時看起來可行,但它每次猜的結果可能不同——而不一致的 token 使用比硬編碼更難發現,因為程式碼看起來是對的。


📖 讓變數真的被用上

四件事依序做:

一、在 Figma 建立變數並實際套用。 建立了但圖層仍用硬刻值,get_variable_defs 一樣取不到。

二、在提示裡明確要求。 官方的範例句式即可。

三、在規則檔寫死「不准硬編碼」。 官方建議的規則檔內容明確包含「use design tokens instead of hardcoded values」這一條。見 規則檔。

四、把對應關係寫進 Code Connect 的自訂指示。 這一項最容易被忽略——Code Connect 的自訂指示會跟著每一次元件生成被送進脈絡,比規則檔更貼近使用現場。見 Code Connect。


📖 與設計系統的整合

遠端伺服器提供兩個跨檔案的查詢工具,它們把 MCP 從「讀這一個 frame」擴展成「查整個設計系統」:

工具用途
search_design_system在元件庫中搜尋元件、變數與樣式
get_libraries列出已加入與可用的元件庫

這兩個是遠端限定的,也是本機版與遠端版差距最具體的地方之一。

它們改變了可行的提問方式。 沒有這兩個工具,你只能問「把這個 frame 做出來」;有了之後,可以問「我們的設計系統裡有沒有現成的 empty state 元件」——agent 能在生成前先查,而不是直接造一個新的。

這正是「避免每次重生」的第二道防線。 第一道是 Code Connect(已選中的元件對應到程式碼),第二道是 search_design_system(還沒選中的時候,先去找有沒有現成的)。兩者解決的是同一個問題的不同階段。


📖 主題與多模式

Figma 變數支援 mode(例如淺色/深色),而這正好對應到前端的主題切換。官方文件沒有專門說明 MCP 如何處理多 mode 的變數——get_variable_defs 的輸出格式官方未載明,我也無法確認它是否會一併帶出各 mode 的值。

實務上可行的做法是在規則檔中明確指示主題的實作方式(CSS 自訂屬性、data-theme 屬性、prefers-color-scheme 等),讓 agent 知道它拿到的變數要落到哪一種架構裡。完整的淺色/深色架構見 Light/Dark 主題。

這一項列為待確認,見 主張 vs 可佐證。


📖 檔案結構決定一切

官方「組織 Figma 檔案」那一頁,本質上是在說設計系統的衛生狀況直接決定 MCP 的產出品質:

  • 會重複的東西都做成元件——按鈕、卡片、輸入框、導覽項目
  • 用 Code Connect 連到程式碼——官方稱最有效
  • 用變數管間距、顏色、圓角、字體
  • 圖層與元件取語意化名稱——不要留 Frame1268、Group5
  • 用 auto layout,避免絕對定位,並在生成前縮放 frame 確認行為
  • 加註解說明難以用視覺表達的行為、對齊與響應式規則
  • 在 Dev Mode 掛上 dev resources——文件、程式碼、ticket

這份清單沒有一條是「為了 MCP」才需要做的——它們本來就是健康設計系統的特徵。MCP 的作用是讓這些工作第一次有了直接、可量測的回報:以前「圖層命名整齊」只是美德,現在它直接決定生成出來的變數名稱。


🧠 重點整理

沒有變數,agent 只能給硬編碼值,那是所有不一致的起點。

官方只處理了「agent 挑錯工具」這一個成因,沒有處理命名不一致——那要靠規則檔補。

命名對應三策略:兩邊對齊(最省事,需組織決定)、規則檔對應表(會過期)、建立轉換層(成本高但一次性)。

不要讓 agent 自己猜對應——不一致的 token 比硬編碼更難發現。

讓變數真的被用上要做四件事,其中「寫進 Code Connect 自訂指示」最常被忽略,卻最貼近使用現場。

search_design_system 是避免重生的第二道防線——Code Connect 管已選中的,它管還沒選中的。

多 mode 變數如何經 MCP 傳遞,官方未載明,列為待確認。

官方的檔案結構建議,本質上就是健康設計系統的特徵——MCP 讓這些工作第一次有了可量測的回報。


✍️ 動手做

查清楚你的變數實際傳了什麼過去,約 25 分鐘:

  1. 在 Figma 選一個使用了多個變數的元件。
  2. 明確要求 agent:「Get the variable names and values for this selection.」
  3. 把回傳的原始內容記下來——有哪些名稱、值的格式是什麼、有沒有帶出 mode。
  4. 拿這份清單對照你 codebase 的 token 名稱,列出對不上的部分。
  5. 把對不上的部分寫成規則檔裡的對應表,再生成一次,確認這次有沒有用對。

第 3 步是本篇的核心,因為官方沒有記載這個輸出格式。自己實測一次,你會得到比任何教學都準確的資訊——而且第 4 步列出的落差清單,就是你設計系統與程式碼之間真實的距離。


🔗 資料來源


相關