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.