Skip to main content
uSpec connects your AI agent and Figma into a single pipeline. The uSpec Extract plugin captures a component, create-component-md turns that capture into a single self-contained .md specification, and the create-* skills render sections of that .md back into Figma as annotation frames.

The pipeline

Everything flows through the Component Markdown file. It is the required input for every create-* render skill — there is no longer a path that points a render skill straight at a raw Figma link.

Component Markdown (.md)

The source of truth, written to disk by create-component-md. Best for feeding specs to any LLM (Cursor, Claude Design, GPT), committing alongside code, or diffing across design iterations.

Figma annotations

Annotation frames rendered next to the component by the create-* skills, drawn from the .md. Best for design reviews, spec handoff inside Figma, and component libraries where the spec lives beside the component.

Stage 1: generate the .md

The plugin runs deterministic extraction inside Figma’s sandbox (no network calls), producing a _base.json that captures every variant, token binding, and sub-component. The create-component-md skill then runs four parallel interpretation agents (API, structure, color, voice), reconciles their outputs, and renders a single Markdown file. See the Component Markdown page for the full pipeline diagram.

Stage 2: render into Figma

Every create-* skill reads its section from the component .md — plus the render-meta that maps each section to Figma node ids — then renders documentation directly in Figma through the MCP. They do not re-extract the component over MCP; any live read is a small, whitelisted verification or measurement delta. The internal steps differ depending on what each skill renders. The diagrams below show what happens inside each skill.

Triggering a skill

Skills are triggered by typing @ followed by the skill name in Cursor’s chat.
1

Type @

In Cursor’s chat, type @. Cursor shows an autocomplete menu of available skills.
2

Select a skill

Continue typing to filter (e.g., @create-v) or use arrow keys to select. The skill name must match exactly: @create-voice, not create voice or voice spec.
3

Add your prompt

After the skill name, pass the component .md (e.g. ./components/button.md) and add any context the spec can’t carry: which Figma node to render next to, or behaviors and edge cases.
If autocomplete doesn’t show the skill, verify your project is open in Cursor and that .cursor/skills/ is populated. If the directory is empty, run npx uspec-skills install --platform cursor from the project root.

Inside each skill

Every render skill loads an instruction file, reads platform-specific or domain-specific reference files, reads its section from the component .md (plus the render-meta node ids), runs through a checklist, and renders the output via the MCP. Any live Figma read is a small, whitelisted verification or measurement delta — not a re-extraction. The reference files determine what the agent knows about each domain. (create-component-md, the stage-1 generator, is the exception: it reads a plugin _base.json rather than a .md.)
The create-component-md orchestrator is the only skill that does not render into Figma. It consumes a plugin-produced _base.json, dispatches four interpretation specialists (one serial, three in parallel), reconciles typed disagreements, then renders a single .md file to disk.The API specialist runs first and solo because its output (the property dictionary) anchors the three downstream specialists on a shared property and state vocabulary. Structure, color, and voice then run in a single parallel batch so their contexts stay isolated and the parent orchestrator only holds the returned summaries. Reconciliation is typed and deterministic: each disagreement has a defined signature (conflicting child classification, mismatched axes, missing states), and only the matching specialist is re-dispatched. The integrity gate validates cache-file shapes, axis consistency, and the structure coverage matrix before the Markdown renderer runs.See the Component Markdown spec page for install, usage, and output details.

What the pipeline captures vs. what you provide

The uSpec Extract plugin and create-component-md capture structure, tokens, and styles into the .md automatically. But some information only exists in your head — add it in the plugin’s design-intent field or in your prompt:
The pipeline capturesYou need to describe
Component layers and hierarchyStates not visible in the captured variants
Design token names and valuesBehavioral modes (fill vs. hug, truncation)
Variant axes and propertiesFocus order preferences
Visual dimensions and spacingPlatform-specific interaction details
Styles and color valuesBusiness logic or conditional rules
The more context you provide when generating the .md, the more accurate every downstream render is. A one-line prompt works, but adding states, behaviors, and edge cases produces significantly better specs.

Architecture overview

The component data, tokens, and styles a render skill needs come from the .md — not a live MCP extraction. The MCP is the render channel back into Figma, plus the occasional small whitelisted read for verification or a measurement delta. uSpec supports two Figma MCP providers — choose the one that fits your setup:
  • Figma Console MCP (by Southleft) connects via a Desktop Bridge plugin running inside Figma Desktop, communicating over WebSocket. It exposes 59+ tools for design creation and variable management.
  • Native Figma MCP (by Figma) connects directly to Figma’s API with read and write access. No Desktop Bridge plugin required.
Both providers let the agent render annotation frames into Figma and capture screenshots for validation. Every render skill draws through the MCP, regardless of which provider or host you use. See Getting Started for setup instructions.
MCP providers update their capabilities and setup instructions frequently. For the latest details, see the Figma Console MCP docs or the native Figma MCP docs.