Every spec flows through one pipeline: the uSpec Extract plugin captures your component,
create-component-md turns that capture into a .md spec, and the create-* skills render that .md into Figma. The full plugin install and create-component-md walkthrough lives on the Component Markdown page.Setup instructions
Install your AI agent, connect Figma, and configure your template library.
Create your first spec
Prompt format, available skills, and tips for better output.
Setup instructions
uSpec runs one pipeline end to end: extract a component, generate its.md spec, then render that spec into Figma. To run the full pipeline you need four pieces, all set up once:
- AI agent host: the coding environment that runs uSpec skills (Cursor, Claude Code, or Codex)
- uSpec Extract plugin: the Figma Community plugin that captures a component to
_base.json, whichcreate-component-mdturns into the.mdspec. Install it from the Figma Community — no local build required. The Component Markdown install guide covers it in detail. - Figma MCP: the bridge that lets the
create-*skills render annotation frames back into your Figma file (either Figma Console MCP or native Figma MCP) - Template library: the Figma file containing the documentation templates those render skills clone from
create-component-md only needs the agent host and the uSpec Extract plugin — it does not use the Figma MCP or firstrun. The MCP and template library are for the create-* render skills, which read the .md and draw annotations in Figma.You only need to complete this setup once. After that, you can generate specs anytime by opening the project in your agent host.
1. Set up your agent host
- Cursor
- Claude Code
- Codex
Cursor is an AI code editor. All uSpec skills run inside Cursor’s chat.
Download Cursor
Go to cursor.com and download the app for your platform.
Open your project in Cursor
uSpec installs into your existing project — you do not need to clone the uSpec repo. Open any folder where you want to use uSpec.
Install uSpec
In the project’s terminal, run:Choose Cursor when prompted. The CLI installs all skills into
.cursor/skills/ and references into ./references/, then writes uspecs.config.json.Verify skills are available by typing
@create-voice or @create-component-md in Cursor’s chat. Either should autocomplete to the skill file.2. Set up Figma MCP
uSpec supports two Figma MCP providers. Choose one based on your setup:MCP providers update their setup instructions frequently. The configuration examples below are a starting point — always check the provider’s documentation for the latest installation steps and options:
- Figma Console MCP: docs.figma-console-mcp.southleft.com
- Native Figma MCP: github.com/figma/figma-mcp
- Figma Console MCP
- Figma MCP (Native)
The Figma Console MCP (by Southleft) connects your agent to Figma Desktop via a Desktop Bridge plugin, giving it access to component data, variables, styles, and screenshots.
Get a Figma personal access token
Go to the Figma API settings
Configure the MCP in your agent
- Cursor
- Claude Code
- Codex
Add the Figma Console MCP to your Cursor MCP configuration:Add this to your Cursor MCP settings (global or project-level
.cursor/mcp.json).Connect to Figma Desktop
The Desktop Bridge plugin provides real-time access to your Figma file data. It comes bundled with the Figma Console MCP.Install the Desktop Bridge plugin
The Desktop Bridge plugin is included in the
figma-console-mcp npm package. After running npx figma-console-mcp@latest, find the plugin at node_modules/figma-console-mcp/figma-desktop-bridge/manifest.json. In Figma Desktop, go to Plugins → Development → Import plugin from manifest… and select this file.Run the plugin
Open the Desktop Bridge plugin in your Figma file. It auto-connects via WebSocket. No special launch flags needed.
When the connection is active, your agent can read Figma file data, take screenshots, and access variables and styles.
3. Run firstrun
Thefirstrun skill configures your Figma template library. Platform selection and skill installation are handled by npx uspec-skills init (Step 1) — firstrun only handles the Figma side.
You only need to run
firstrun once per project. It reads your platform and MCP choice from uspecs.config.json and uses them to extract template keys from your Figma library.Get the template file
uSpec renders documentation using Figma component templates. You need to add the templates to your Figma organization before runningfirstrun.
Uber designers can skip this — the internal template library is already configured. When
firstrun asks for a library link, type “skip”.Open the Community file
Go to the uSpec Template on Figma Community.
Run the firstrun skill
Confirm your Figma MCP is connected
If using Figma Console MCP: Open the Desktop Bridge plugin in Figma Desktop for your template library file. If using Figma MCP (Native): Ensure the MCP server is running and your access token is configured.
Answer the library prompt
The agent asks one question:Library link — Paste the link to your Figma template library (Uber designers can type “skip”).Your Figma MCP and platform were already configured by
npx uspec-skills init, so the agent reads them from uspecs.config.json instead of asking again.When you see “Setup complete! You are now ready to use uSpec”, your environment and template library are configured.
Create your first spec
The pipeline has two stages. Stage 1 produces the.md spec; stage 2 renders any section of it into Figma. Run them in order.
Before stage 1 (generate the .md):
- Your agent host is open in the project where you ran
npx uspec-skills initand skills are available - The uSpec Extract plugin is installed from the Figma Community (see the Component Markdown install guide)
- You have a
_base.jsonfile produced by running the plugin on a component
- You have a component
.mdfrom stage 1 - Your Figma MCP is connected (Desktop Bridge plugin for Console MCP, or native MCP server running)
- You’ve run
firstrun. The template library is configured (uspecs.config.jsonhas your template keys and MCP provider)
Stage 1: generate the Component Markdown
Referencecreate-component-md and point it at the _base.json produced by the plugin. No Figma link is required — the plugin capture is the input.
- Cursor
- Claude Code
- Codex
./components/text-field.md. That file is the input for every render skill below.
Stage 2: render a section into Figma
Reference acreate-* skill, pass the component .md, and add anything the agent can’t infer from the spec: which Figma node to render next to, or behavior and interaction details. The skill reads the .md — it does not re-extract from a Figma link.

- Cursor
- Claude Code
- Codex
Available skills
The skills split into two groups based on their place in the pipeline. Stage 1 — produces the.md (your source of truth):
| Skill | What it generates |
|---|---|
create-component-md | Single self-contained .md covering API, structure, color tokens, and screen-reader behavior. Takes a _base.json from the uSpec Extract Figma plugin. Full guide → |
.md into Figma:
| Skill | What it renders |
|---|---|
create-anatomy | Numbered markers on a component with an attribute table |
create-property | Variant axis and boolean toggle exhibits with instance previews |
create-voice | Screen reader specs for VoiceOver, TalkBack, and ARIA |
create-color | Color token annotations for all elements and states |
create-api | Property tables with values, defaults, and examples |
create-structure | Dimensional specs for spacing, padding, and sizing |
Each stage-2 skill takes the component
.md from stage 1 as its required input and renders that section as Figma annotations. They do not re-extract from a Figma link.create-motion: renders an animation timeline and easing spec from an After Effects export. It is the one skill outside the Component Markdown pipeline. See the Motion guide.
What happens when you run a skill
Each stage runs a different pipeline.- Stage 1: create-component-md
- Stage 2: create-* render skill
Preflight
The orchestrator validates
_base.json against the plugin schema and stages it into .uspec-cache/{componentSlug}/.API dictionary
extract-api runs first and writes api-dictionary.json. The dictionary keeps the three downstream specialists aligned on property names and states.Parallel fan-out
extract-structure, extract-color, and extract-voice run as three parallel subagents in a single batch.Reconciliation
The orchestrator compares specialist outputs for typed disagreements and re-dispatches the owning specialist when needed.
If a new
.md appears under ./components/ in your working directory, your setup is working correctly.Tips for better output
- Be specific about states: Mention all states (selected, disabled, expanded) when you generate the
.md— either in the plugin’s design-intent field or in yourcreate-component-mdprompt. The render skills can only show what the.mdrecords. - Describe the parts: For complex components, describe the interactive elements (e.g., “This is a tooltip. The bell icon triggers it, and the bubble appears on hover and focus.”)
Best practices
Do (all skills)
- Start a new agent session for every prompt. Each skill consumes significant context. A fresh session ensures the model has full capacity and avoids degraded output.
- Run on a high-capacity model. Render skills work on OpenAI GPT 5.4 High or Opus 4.6 High.
create-component-mduses parallel subagents and needs Opus 4.7 High or better.
Do (stage 2 render skills)
- Generate the
.mdfirst. Everycreate-*render skill takes a component.mdas its required input. Runcreate-component-mdbefore reaching for any of them. - Confirm the MCP connection before running a skill. For Console MCP, run the Desktop Bridge plugin in Figma. For native MCP, ensure the server is running. Verify the connection in your agent before starting. If the agent can’t reach Figma, the render will fail.
- Run one agent per Figma file at a time. The MCP supports multiple connections, but all agents share one active page and file context. Finish one render before starting the next.
Don’t (stage 2 render skills)
- Interact with the Figma frame while a skill is running. The agent writes to the frame in multiple steps. Clicking, selecting, or editing mid-generation can break node references and corrupt the output.
- Run multiple agents on the same file simultaneously. They override each other’s page navigation and produce corrupted specs. If you need parallel generation, use separate Figma files.
Don’t (all skills)
- Reuse a long chat session for multiple skills. Accumulated history reduces available context and degrades output quality. Start fresh each time.
create-component-md does not write to Figma, so the Figma-interaction caveats above do not apply to stage 1. You can run multiple create-component-md skills in parallel against different components safely.Setup issues
Skills not loading
Skills not loading
Run
npx uspec-skills doctor from your project root. It reports any missing skills, missing references, or broken links.- Cursor
- Claude Code
- Codex
- Confirm the project folder is open in Cursor (not a parent directory)
- Check that
.cursor/skills/contains the skill folders. If empty, re-runnpx uspec-skills install --platform cursor. - Restart Cursor after running
npx uspec-skills initso it picks up the new skills.
Figma MCP not connecting
Figma MCP not connecting
Figma Console MCP:
- Confirm Figma Desktop is running (not the web version)
- Close and reopen the Desktop Bridge plugin in Figma
- Make sure only one instance of Figma Desktop is running
- Check that your Figma access token is configured correctly in your agent’s MCP settings
- Confirm the MCP server is running (check your terminal or agent MCP panel)
- Verify your
FIGMA_API_KEYis set correctly in your MCP configuration - Test with a simple command like “List pages in my file” with a Figma link
For issues with skills or Figma connection, see the Troubleshooting guide.