Figma Design Inspector
asgeirtj/system_prompts_leaks
Inspects Figma designs through the figma CLI and Figma's MCP server to read variants, spacing, tokens and layouts and to extract assets for implementation.
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
$ npx skills add warpdotdev/warp --skill figma-use -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install warpdotdev/warp figma-use --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/resources/bundled/mcp_skills/figma/figma-use .claude/skills/figma-use && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "figma-use" agent skill from https://github.com/warpdotdev/warp/tree/master/resources/bundled/mcp_skills/figma/figma-use into .claude/skills/figma-use/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-use", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/warpdotdev/warp/tree/master/resources/bundled/mcp_skills/figma/figma-useType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add warpdotdev/warp --skill figma-use -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install warpdotdev/warp figma-use --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/resources/bundled/mcp_skills/figma/figma-use .agents/skills/figma-use && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "figma-use" agent skill from https://github.com/warpdotdev/warp/tree/master/resources/bundled/mcp_skills/figma/figma-use into .agents/skills/figma-use/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-use", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/warp --skill figma-use -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install warpdotdev/warp figma-use --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/resources/bundled/mcp_skills/figma/figma-use .cursor/skills/figma-use && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "figma-use" agent skill from https://github.com/warpdotdev/warp/tree/master/resources/bundled/mcp_skills/figma/figma-use into .cursor/skills/figma-use/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-use", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/warpdotdev/warp.git --path resources/bundled/mcp_skills/figma/figma-use--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add warpdotdev/warp --skill figma-use -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install warpdotdev/warp figma-use --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/resources/bundled/mcp_skills/figma/figma-use .gemini/skills/figma-use && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "figma-use" agent skill from https://github.com/warpdotdev/warp/tree/master/resources/bundled/mcp_skills/figma/figma-use into .gemini/skills/figma-use/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-use", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install warpdotdev/warp figma-useInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add warpdotdev/warp --skill figma-use -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .github/skills && cp -r skills-src/resources/bundled/mcp_skills/figma/figma-use .github/skills/figma-use && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "figma-use" agent skill from https://github.com/warpdotdev/warp/tree/master/resources/bundled/mcp_skills/figma/figma-use into .github/skills/figma-use/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-use", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/warp --skill figma-use -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install warpdotdev/warp figma-use --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/resources/bundled/mcp_skills/figma/figma-use .opencode/skills/figma-use && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "figma-use" agent skill from https://github.com/warpdotdev/warp/tree/master/resources/bundled/mcp_skills/figma/figma-use into .opencode/skills/figma-use/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-use", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
figma-useRequired groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
Load this skill before every `use_figma` call. That MCP tool runs JavaScript inside a Figma file through the Plugin API, and the skill sets out the rules that avoid common failures. Typical uses are creating, editing or deleting nodes, setting up variables and tokens, building components and variants, adjusting auto-layout and fills, binding variables to properties and inspecting file structure. Calls should pass `skillNames: 'figma-use'`, a logging parameter that does not change execution.
The critical rules say to send data back with `return` (the value is JSON-serialized automatically), to write plain JavaScript with top-level `await` instead of wrapping code in an async function, and not to call `figma.closePlugin()`. `figma.notify()` throws, `console.log()` output is not returned, and `getPluginData()` and `setPluginData()` are unsupported in favor of the shared plugin data methods. The agent greps a large typings file for the API surface rather than loading it, starts design-system work from a guide, and loads the figma-generate-design skill for building full screens. Reference files cover components, variables, text and effect styles, gotchas and recovery.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 325d4d4. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript, from the files we listed), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Figma use_figma Plugin API Rules loads about 4.4k tokens when it runs, and up to ~159k if it reads all its reference files. Until then it costs about 139 tokens; SKILL.md has 1,992 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from warpdotdev/warp at commit 325d4d4, republished under its AGPL-3.0 licence (© warpdotdev). 1,992 words, ~4,438 tokens.
.claude/skills/figma-use/SKILL.md (or your agent's skills folder). This skill also uses 20 other files; get the full folder from GitHub.Use use_figma MCP to execute JavaScript in Figma files via the Plugin API. All detailed reference docs live in references/.
Always pass skillNames: "figma-use" when calling use_figma. This is a logging parameter used to track skill usage — it does not affect execution.
If the task involves building or updating a full page, screen, or multi-section layout in Figma from code, also load figma-generate-design. It provides the workflow for discovering design system components via search_design_system, importing them, and assembling screens incrementally. Both skills work together: this one for the API rules, that one for the screen-building workflow.
Before anything, load plugin-api-standalone.index.md to understand what is possible. When you are asked to write plugin API code, use this context to grep plugin-api-standalone.d.ts for relevant types, methods, and properties. This is the definitive source of truth for the API surface. It is a large typings file, so do not load it all at once, grep for relevant sections as needed.
IMPORTANT: Whenever you work with design systems, start with working-with-design-systems/wwds.md to understand the key concepts, processes, and guidelines for working with design systems in Figma. Then load the more specific references for components, variables, text styles, and effect styles as needed.
return to send data back. The return value is JSON-serialized automatically (objects, arrays, strings, numbers). Do NOT call figma.closePlugin() or wrap code in an async IIFE — this is handled for you.await and return. Code is automatically wrapped in an async context. Do NOT wrap in (async () => { ... })().figma.notify() throws "not implemented" — never use it
3a. getPluginData() / setPluginData() are not supported in use_figma — do not use them. Use getSharedPluginData() / setSharedPluginData() instead (these ARE supported), or track node IDs by returning them and passing them to subsequent calls.console.log() is NOT returned — use return for outputuse_figma calls. Validate after each step. This is the single most important practice for avoiding bugs.{r: 1, g: 0, b: 0} = redawait figma.loadFontAsync({family, style})await figma.setCurrentPageAsync(page) to switch pages and load their content (see Page Rules below)setBoundVariableForPaint returns a NEW paint — must capture and reassigncreateVariable accepts collection object or ID string (object preferred)layoutSizingHorizontal/Vertical = 'FILL' MUST be set AFTER parent.appendChild(child) — setting before append throws. Same applies to 'HUG' on non-auto-layout nodes.figma.currentPage.children to find a clear position (e.g., to the right of the rightmost node). This only applies to page-level nodes — nodes nested inside other frames or auto-layout containers are positioned by their parent. See Gotchas.use_figma error, STOP. Do NOT immediately retry. Failed scripts are atomic — if a script errors, it is not executed at all and no changes are made to the file. Read the error message carefully, fix the script, then retry. See Error Recovery.return ALL created/mutated node IDs. Whenever a script creates new nodes or mutates existing ones on the canvas, collect every affected node ID and return them in a structured object (e.g. return { createdNodeIds: [...], mutatedNodeIds: [...] }). This is essential for subsequent calls to reference, validate, or clean up those nodes.variable.scopes explicitly when creating variables. The default ALL_SCOPES pollutes every property picker — almost never what you want. Use specific scopes like ["FRAME_FILL", "SHAPE_FILL"] for backgrounds, ["TEXT_FILL"] for text colors, ["GAP"] for spacing, etc. See variable-patterns.md for the full list.await every Promise. Never leave a Promise unawaited — unawaited async calls (e.g. figma.loadFontAsync(...) without await, or figma.setCurrentPageAsync(page) without await) will fire-and-forget, causing silent failures or race conditions. The script may return before the async operation completes, leading to missing data or half-applied changes.For detailed WRONG/CORRECT examples of each rule, see Gotchas & Common Mistakes.
Page context resets between use_figma calls — figma.currentPage starts on the first page each time.
Use await figma.setCurrentPageAsync(page) to switch pages and load their content. The sync setter figma.currentPage = page throws an error in use_figma runtimes.
// Switch to a specific page (loads its content)
const targetPage = figma.root.children.find((p) => p.name === "My Page");
await figma.setCurrentPageAsync(targetPage);
// targetPage.children is now populated
// Iterate over all pages
for (const page of figma.root.children) {
await figma.setCurrentPageAsync(page);
// page.children is now loaded — read or modify them here
}figma.currentPage resets to the first page at the start of each use_figma call. If your workflow spans multiple calls and targets a non-default page, call await figma.setCurrentPageAsync(page) at the start of each invocation.
You can call use_figma multiple times to incrementally build on the file state, or to retrieve information before writing another script. For example, write a script to get metadata about existing nodes, return that data, then use it in a subsequent script to modify those nodes.
return Is Your Output ChannelThe agent sees ONLY the value you return. Everything else is invisible.
return { createdNodeIds: [...], mutatedNodeIds: [...] }. This is a hard requirement, not optional.return { createdNodeIds: [...], count: 5, errors: [] }throw explicitly.console.log() output is never returned to the agentuse_figma works in design mode (editorType "figma", the default). FigJam ("figjam") has a different set of available node types — most design nodes are blocked there.
Available in design mode: Rectangle, Frame, Component, Text, Ellipse, Star, Line, Vector, Polygon, BooleanOperation, Slice, Page, Section, TextPath.
Blocked in design mode: Sticky, Connector, ShapeWithText, CodeBlock, Slide, SlideRow, Webpage.
The most common cause of bugs is trying to do too much in a single use_figma call. Work in small steps and validate after each one.
use_figma to discover what already exists in the file — pages, components, variables, naming conventions. Match what's there.return created node IDs, variable IDs, collection IDs as objects (e.g. return { createdNodeIds: [...] }). You'll need these as inputs to subsequent calls.get_metadata to verify structure (counts, names, hierarchy, positions). Use get_screenshot after major milestones to catch visual issues.Step 1: Inspect file — discover existing pages, components, variables, conventions
Step 2: Create tokens/variables (if needed)
→ validate with get_metadata
Step 3: Create individual components
→ validate with get_metadata + get_screenshot
Step 4: Compose layouts from component instances
→ validate with get_screenshot
Step 5: Final verification| After... | Check with get_metadata | Check with get_screenshot |
|---|---|---|
| Creating variables | Collection count, variable count, mode names | — |
| Creating components | Child count, variant names, property definitions | Variants visible, not collapsed, grid readable |
| Binding variables | Node properties reflect bindings | Colors/tokens resolved correctly |
| Composing layouts | Instance nodes have mainComponent, hierarchy correct | No cropped/clipped text, no overlapping elements, correct spacing |
use_figma is atomic — failed scripts do not execute. If a script errors, no changes are made to the file. The file remains in the same state as before the call. This means there are no partial nodes, no orphaned elements from the failed script, and retrying after a fix is safe.
use_figma returns an errorget_metadata or get_screenshot to understand the current file state.| Error message | Likely cause | How to fix |
|---|---|---|
"not implemented" | Used figma.notify() | Remove it — use return for output |
"node must be an auto-layout frame..." | Set FILL/HUG before appending to auto-layout parent | Move appendChild before layoutSizingX = 'FILL' |
"Setting figma.currentPage is not supported" | Used sync page setter | Use await figma.setCurrentPageAsync(page) |
| Property value out of range | Color channel > 1 (used 0–255 instead of 0–1) | Divide by 255 |
"Cannot read properties of null" | Node doesn't exist (wrong ID, wrong page) | Check page context, verify ID |
| Script hangs / no response | Infinite loop or unresolved promise | Check for while(true) or missing await; ensure code terminates |
"The node with id X does not exist" | Parent instance was implicitly detached by a child detachInstance(), changing IDs | Re-discover nodes by traversal from a stable (non-instance) parent frame |
get_metadata to check structural correctness (hierarchy, counts, positions).get_screenshot to check visual correctness. Look closely for cropped/clipped text (line heights cutting off content) and overlapping elements — these are common and easy to miss.For the full validation workflow, see Validation & Error Recovery.
Before submitting ANY use_figma call, verify:
return to send data back (NOT figma.closePlugin())return value includes structured data with actionable info (IDs, counts)figma.notify() anywhereconsole.log() as output (use return instead)await figma.setCurrentPageAsync(page) (sync setter throws)layoutSizingVertical/Horizontal = 'FILL' is set AFTER parent.appendChild(child)loadFontAsync() called BEFORE any text property changeslineHeight/letterSpacing use {unit, value} format (not bare numbers)resize() is called BEFORE setting sizing modes (resize resets them to FIXED)return valueloadFontAsync, setCurrentPageAsync, importComponentByKeyAsync, etc.) is awaited — no fire-and-forget PromisesAlways inspect the Figma file before creating anything. Different files use different naming conventions, variable structures, and component patterns. Your code should match what's already there, not impose new conventions.
When in doubt about any convention (naming, scoping, structure), check the Figma file first, then the user's codebase. Only fall back to common patterns when neither exists.
List all pages and top-level nodes:
const pages = figma.root.children.map(p => `${p.name} id=${p.id} children=${p.children.length}`);
return pages.join('\n');List existing components across all pages:
const results = [];
for (const page of figma.root.children) {
await figma.setCurrentPageAsync(page);
page.findAll(n => {
if (n.type === 'COMPONENT' || n.type === 'COMPONENT_SET')
results.push(`[${page.name}] ${n.name} (${n.type}) id=${n.id}`);
return false;
});
}
return results.join('\n');List existing variable collections and their conventions:
const collections = await figma.variables.getLocalVariableCollectionsAsync();
const results = collections.map(c => ({
name: c.name, id: c.id,
varCount: c.variableIds.length,
modes: c.modes.map(m => m.name)
}));
return results;Load these as needed based on what your task involves:
| Doc | When to load | What it covers |
|---|---|---|
| gotchas.md | Before any use_figma | Every known pitfall with WRONG/CORRECT code examples |
| common-patterns.md | Need working code examples | Script scaffolds: shapes, text, auto-layout, variables, components, multi-step workflows |
| plugin-api-patterns.md | Creating/editing nodes | Fills, strokes, Auto Layout, effects, grouping, cloning, styles |
| api-reference.md | Need exact API surface | Node creation, variables API, core properties, what works and what doesn't |
| validation-and-recovery.md | Multi-step writes or error recovery | get_metadata vs get_screenshot workflow, mandatory error recovery steps |
| component-patterns.md | Creating components/variants | combineAsVariants, component properties, INSTANCE_SWAP, variant layout, discovering existing components, metadata traversal |
| variable-patterns.md | Creating/binding variables | Collections, modes, scopes, aliasing, binding patterns, discovering existing variables |
| text-style-patterns.md | Creating/applying text styles | Type ramps, font probing, listing styles, applying styles to nodes |
| effect-style-patterns.md | Creating/applying effect styles | Drop shadows, listing styles, applying styles to nodes |
| plugin-api-standalone.index.md | Need to understand the full API surface | Index of all types, methods, and properties in the Plugin API |
| plugin-api-standalone.d.ts | Need exact type signatures | Full typings file — grep for specific symbols, don't load all at once |
You will see snippets throughout documentation here. These snippets contain useful plugin API code that can be repurposed. Use them as is, or as starter code as you go. If there are key concepts that are best documented as generic snippets, call them out and write to disk so you can reuse in the future.
© warpdotdev, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 20 other files (references) in resources/bundled/mcp_skills/figma/figma-use of warpdotdev/warp.
Open the folder on GitHubat commit 325d4d4
We found 4 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 4 other GitHub owners. This page covers the copy in warpdotdev/warp, which our catalogue first saw on October 7, 2026.
Figma use_figma Plugin API Rules next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Figma use_figma Plugin API Rules this skillwarpdotdev/warp | 65k | 4 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Figma Design Inspectorasgeirtj/system_prompts_leaks | 69k | — | ~936 | Automated safety check: Pass | CC0-1.0 | |
| AnyDesignuxKero/anydesign | 215 | — | ~1.5k | Automated safety check: Pass | MIT | |
| AnyDesign Design Analyzeravelikiy/great_cto | 103 | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Build Figmacursor/plugins | 10k | — | ~961 | Automated safety check: Pass | None | |
| Figma Codegenawdr74100/figwright | 982 | — | ~4.2k | Automated safety check: Pass | MIT |
asgeirtj/system_prompts_leaks
Inspects Figma designs through the figma CLI and Figma's MCP server to read variants, spacing, tokens and layouts and to extract assets for implementation.
uxKero/anydesign
Extracts the design of a screenshot, website URL or Figma file into a design.md of tokens, components, layout and brand rules, or copies one element into element.md.
avelikiy/great_cto
Analyzes a screenshot, website or Figma file and writes a `design.md` with its token system, component inventory and reconstruction notes, or an `element.md` for one element.
cursor/plugins
Guides an agent through turning a Figma node into production UI with the repo's own components, then checks the result visually before finishing.
awdr74100/figwright
Generate framework-aware code from a Figma design. An agent skill from awdr74100/figwright.
TheSoftwareHouse/copilot-collections
Frontend component patterns, composition, design token integration, barrel file organization, error handling, and Figma-to-code workflow.
warpdotdev/warp
Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.
warpdotdev/warp
Authors and edits file-based Warp software factory definitions rooted at factory.yaml, covering agents, automations, scorers and webhooks, and validates them before a pull request.
warpdotdev/warp
Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.
warpdotdev/warp
Migrates the compatible subset of settings and global file-based MCP servers from the Warp desktop app into Warp Agent CLI without exposing credentials or state.
warpdotdev/warp
Creates project-specific design system rules from your codebase so coding agents implement Figma designs with your components, naming and tokens.
warpdotdev/warp
Maps published Figma components to their code implementations with Code Connect, using the Figma MCP suggestion and mapping tools.
Works with
Categories
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures. Load this skill before every `use_figma` call. That MCP tool runs JavaScript inside a Figma file through the Plugin API, and the skill sets out the rules that avoid common failures.
Figma use_figma Plugin API Rules fits situations like: creating or editing nodes, components or variants in a Figma file from code; setting up Figma variables or design tokens programmatically; binding variables to properties or changing auto-layout and fills; inspecting a Figma file's structure through JavaScript.
Run `npx skills add warpdotdev/warp --skill figma-use -a claude-code`. Or copy the skill folder (resources/bundled/mcp_skills/figma/figma-use in warpdotdev/warp) into .claude/skills/figma-use in your project. Claude Code loads it when a task matches its description.
Run `npx skills add warpdotdev/warp --skill figma-use -a codex`. Or copy the skill folder (resources/bundled/mcp_skills/figma/figma-use in warpdotdev/warp) into .agents/skills/figma-use in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add warpdotdev/warp --skill figma-use -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/figma-use, .gemini/skills/figma-use, .github/skills/figma-use and .opencode/skills/figma-use in your project.
Going by SKILL.md and its folder, Figma use_figma Plugin API Rules needs TypeScript for the scripts in its folder. Our summary lists: The `use_figma` tool from a Figma MCP server; A Figma file to work in.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Figma use_figma Plugin API Rules is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 155k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Figma use_figma Plugin API Rules: Figma Design Inspector (asgeirtj/system_prompts_leaks, 69k stars), AnyDesign (uxKero/anydesign, 215 stars), AnyDesign Design Analyzer (avelikiy/great_cto, 103 stars) and Build Figma (cursor/plugins, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
warpdotdev (a GitHub organization) maintains it in warpdotdev/warp, which has 65,395 GitHub stars. The repository holds 46 skills in this directory. The repository was last updated on October 8, 2026.
Source: warpdotdev/warp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.