sync-figma-token
Sync design tokens between code and Figma variables with strict drift reporting, mandatory approval gate, safe delta apply, and persisted reports.
By firebenders · 469 installs
npx skills add firebenders/sync-figma-token-skill --skill sync-figma-token
Source repository · Upstream listing
sync figma token
Use this skill for token parity workflows (code tokens vs Figma variables).
MANDATORY prerequisite : load figma use before every use figma call.
Non negotiable safety rule
After producing dry run output, you MUST STOP and ask for approval.
Do NOT run any write use figma calls in the same turn as dry run output.
Ask a normal confirmation question (example: "Apply these changes? (yes/no)").
Only proceed on explicit affirmative approval.
If the response is unclear or negative, do not apply writes.
Standard source formats (required)
Prefer real token sources in this order:
1. Design Tokens JSON ( tokens.json , tokens/ .json , DTCG style)
2. Style Dictionary input JSON
3. Platform theme sources (Compose/Kotlin/TS) only when JSON source is unavailable
If source format is non standard, explicitly state assumptions in dry run output.
Required policies before writes
direction : code to figma (default), figma to code , bidirectional
deletePolicy : default archive only (NOT delete)
conflictPolicy : prefer code , prefer figma , manual review
namingPolicy : token key normalization strategy
modePolicy : code mode < Figma mode mapping
Never delete by default. Deletion requires explicit user instruction.
Normalization rules
Normalize both sides to canonical rows:
key (canonical token name)
type ( COLOR , FLOAT , STRING , BOOLEAN )
modeValues (light/dark/etc.)
aliasTarget
scopes
codeSyntax
Name normalization examples:
color.bg.primary < color/bg/primary
Neutral10 < Neutral/10 only if explicitly mapped by naming policy
Value validation (required)
Dry run must validate values, not only presence/type.
COLOR: compare RGBA with tolerance epsilon = 0.0001
FLOAT: strict numeric comparison unless tolerance is configured
STRING/BOOLEAN: strict equality
Aliases: compare canonical alias targets
Drift categories
Each drift item must include one of:
missing in figma
missing in code
value mismatch
alias mismatch
type mismatch
mode mismatch
scope mismatch
code syntax mismatch
broken alias
Dry run output format
Always return:
1) Headline summary:
2) Detailed drift list with token keys and before/after values.
Then ask:
Dry run complete. Apply these changes? (yes/no)
Report persistence (required)
Persist report JSON every run:
/tmp/sync figma token dry run {runId}.json
/tmp/sync figma token final {runId}.json
If file persistence fails, mention that explicitly in output.
Conflict handling
When conflicting data is found (type/mode/alias ambiguity):
If conflictPolicy=manual review , list conflicts and STOP.
If conflictPolicy=prefer code , update Figma to source values/types.
If conflictPolicy=prefer figma , keep Figma and emit drift as informational.
Apply order
Apply deltas in this order:
1. Ensure collections/modes
2. Create missing primitives
3. Create/update semantic aliases
4. Apply value updates
5. Apply scopes and code syntax
6. Archive stale tokens per deletePolicy
Never parallelize write use figma calls.
Success condition
After apply, run a fresh diff.
Success = unresolved drift is zero, or only explicitly approved exceptions remain.