Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when implementing a Figma design through the Figma Dev Mode MCP server: emit the server's real tool names, documented call order, and asset-handling rules — which cheaper models guess wrong by default.
.claude/skills/figma-dev-mode-mcp-workflow/SKILL.md| Model | Lift | Δ tokens | Δ turns | Cases | Verified |
|---|---|---|---|---|---|
| gemini-3.6-flashbest | +43% | +40% | 0% | 23 | 54d ago |
| gemini-3.5-flash | pending re-run | — | |||
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✗→✓ | ▲ Improved | — | — |
| case-03 | ✗→✓ | ▲ Improved | — | — |
| case-11 | ✗→✓ | ▲ Improved | — | — |
When turning a Figma selection into code through the Figma Dev Mode MCP server, use the server's REAL tool names, its documented call order, and its asset rules. Apply this to every Figma-driven change; never invent a tool name and never ship the generated output verbatim.
| Purpose | Tool | Notes | |---|---|---| | Code representation of a selection | get_design_context | alias get_code; output is React + Tailwind by default | | High-level layer map | get_metadata | sparse XML: layer IDs, names, types, positions, sizes | | Design tokens of a selection | get_variable_defs | variables + styles (color, spacing, typography) | | Visual reference | get_screenshot | to see the design | | Bind a Figma instance to a code component | get_code_connect_map | Code Connect | | Export images / SVGs | download_assets | to deliver an asset | | Scaffold project rules | create_design_system_rules | params clientLanguages, clientFrameworks |
get_design_context (documented aliasget_code). Never call an invented name like get_figma_code, fetch_design, figma_export, or get_node_code.
get_metadata first. Get the layer map, then re-fetch onlythe needed node(s) with get_design_context. Do not blindly retry the full fetch.
get_variable_defs — not from parsing the returned code, and not from aninvented get_variables / get_tokens / get_styles.
get_code_connect_map — not a generic "search the repo for a lookalike" step.
get_screenshot = the agent needs to SEE the design;download_assets = the agent needs to DELIVER/export an image or SVG. Never collapse them into one generic "get image" step.
get_design_context returnsReact + Tailwind by default. Translate it into the project's actual framework and styling approach; never ship raw React/Tailwind when the stack differs.
image or SVG, use it as-is — do not re-download, re-host, or swap in a placeholder.
create_design_system_rules with clientLanguages and clientFrameworks and build on the returned template — don't write the template from memory.
get_design_context) and a visual reference(get_screenshot) BEFORE writing code; validate the built UI against Figma for 1:1 look and behavior as the final step.
get_figma_node for the design and render for the picture, then build it."get_design_context for the code and get_screenshot for the visual, implement, thenverify the result matches Figma.
get_design_context on the whole frame."get_metadata for the layer map, then re-fetch just the target node with get_design_context.get_variable_defs returns the selection's variables and styles.npm install lucide-react and pick the closest icon."create_design_system_rules with clientLanguages + clientFrameworks, then fill the template.(Claude Code CLAUDE.md, Codex AGENTS.md, Cursor .cursor/rules/*.mdc). The tool calls above are identical regardless of destination.
get_screenshot to reason about layout,download_assets to ship the exact asset.
download_assets; still never add an icon package.get_design_context, but prefer get_code_connect_mapwhenever a mapping exists so existing components are reused.
get_metadata before re-fetching a large selection. DON'T retry the full get_design_context fetch.get_variable_defs for tokens. DON'T scrape tokens from the generated classes.get_code_connect_map. DON'T hand-grep for a lookalike.get_figma_design, fetch_node, export_image).create_design_system_rules.get_metadata first for big/truncated selectionsget_design_context for code; get_variable_defs for tokensget_screenshot to see; download_assets to deliverget_code_connect_map to reuse existing componentscreate_design_system_rules(clientLanguages, clientFrameworks) for rules| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +43 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.5-flash | verified | 7/10/2026 | +8% |
Other measured skills in the registry, with their headline benchmark lift.