mcpbeat

Figma Extract

nexu-io/figma-extract

Pull a Figma file's node tree, design tokens, and embedded assets into the project cwd as a structured snapshot.

845 tokens
context cost
the whole folder, loaded on every use
2
files
instructions only
0
copies elsewhere
how many repositories repackaged it
83386
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/nexu-io/open-design --skill figma-extract

What comes with it

906 bytes besides the instruction
open-design.json

The instruction itself

6 sections, as written by the author

Figma extract

Spec §10 / §21.3.1: the figma-migration scenario starts with a Figma

file URL + an OAuth token. This atom turns that pair into the

authoritative on-disk record subsequent stages (token-map,

generate, critique) operate on.

Inputs

| Source | Required | Notes |

| --- | --- | --- |

| Figma file URL or node-id | yes | Provide via the figma-oauth GenUI surface or od plugin apply --input fileUrl=… |

| Figma OAuth token | yes | Routed through oauth-prompt with oauth.route='connector' and connectorId='figma'; the daemon never stores the token in SQLite |

Output

The atom writes a deterministic, JSON-shaped extract under the

project cwd:

project-cwd/
├── figma/
│   ├── tree.json        # canonical node tree (id / type / parent / children / box / fills / text)
│   ├── tokens.json      # color + typography + spacing tokens lifted off the file
│   ├── assets/          # rasterised exports of every leaf node that the file marks for export
│   │   └── <node-id>.<png|svg|webp>
│   └── meta.json        # { fileUrl, version, lastModified, exportedAt, atomDigest }

figma/tree.json is the canonical pivot for every downstream atom.

figma/tokens.json is the input to token-map. assets/ is the

input to generate's media stage.

Convergence

The atom completes when figma/tree.json exists and is non-empty.

The until evaluator reads figma.tree.nodes >= 1; if the figma

file is empty or the OAuth token expired, the atom emits a clear

error event and the run aborts (the user fixes auth or picks a

different file).

Anti-patterns the prompt fragment forbids

  • Synthesising a tree from screenshots when the OAuth path failed —

always re-prompt the user; never make up node ids.

  • Dropping unsupported node types silently; record them in

meta.json.unsupportedNodes[] so the human can audit gaps.

  • Treating component instances as duplicates; record componentRef

links so token-map can de-duplicate at the right boundary.

Status

Implemented by the daemon runner in

apps/daemon/src/plugins/atoms/figma-extract.ts. It fetches and walks the

Figma REST tree, records unsupported nodes, lifts tokens, and rasterizes

supported assets.

How to use it

Copy the folder

Take nexu-io/figma-extract from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.