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 compiles that evidence into canonical .json and concise .md artifacts, and the create-* skills render sections of the Markdown back into Figma.

The pipeline

The JSON contract is the machine source of truth. Its concise Markdown view is the required input for every create-* render skill—there is no path that points a render skill straight at a raw Figma link.

Contract + Markdown

Canonical JSON for automation and concise Markdown for people, LLM context, code review, and design iteration.

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: compile the contract and .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 public Community build asks for the component link on first use and remembers it for that document. create-component-md prepares compact evidence, interprets four domains, validates obligation coverage, reconciles disagreements, compiles the canonical JSON, and renders the concise Markdown. See the Component Markdown page for the full pipeline.

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, validates their evidence obligations, reconciles typed disagreements, compiles canonical JSON, and renders concise Markdown.The API specialist runs first because its property dictionary anchors the downstream specialists on a shared vocabulary. Structure, Color, and Voice then run in parallel. Validation requires every prepared obligation and semantic row to resolve to supported evidence. Reconciliation re-dispatches only the specialist that owns a typed mismatch. Contract compilation and Markdown assembly are deterministic after the semantic render plan is written.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 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.