About design-system-inventory-figma
A Figma skill that extracts design tokens, components, variants, and styles from an entire file into a structured inventory. It is intended for code generation and library audits, with scope and verbosity controls for large files.
Key features
- 01Extracts tokens, components, and styles
- 02Captures component properties and variant specs
- 03Controls scope and output verbosity
- 04Filters components by name
- 05Reads variables through the Plugin API
Use cases
- 01Preparing a design system for code generation
- 02Auditing a Figma component library
- 03Reviewing token values and aliases
- 04Reducing output for large design files
MCP support
This skill runs scripts through Figma's `use_figma` tool and Plugin API. It describes its whole-file inventory as a capability beyond the native MCP tools' single-selection design context and flat metadata.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ southleft/ skills-for-figma --skill design-system-inventory-figmaAfter installing, type/design-system-inventory-figmain Claude Code to confirm it loaded.
Bundled filesreferences/visual-spec.mdscripts/inventory.js
Details
From the project READMEdesign-system-inventory-figma — unified tokens + components + styles extraction
A single use_figma call that walks the whole file and returns a structured kit:
tokens (every local variable, grouped by collection and mode), components (standalone
components + component sets, with property definitions and a compact visualSpec per variant), and
styles (paint/text/effect styles with their resolved values). It is the "read everything once"
front door for code generation and library audits.
Skill boundaries
use_figmarules — load the officialfigma-useskill first; it is the full Figma Plugin API reference. Essentials these scripts rely on: plain JS with top-levelawait+return(no IIFE, nofigma.closePlugin();console.logis not returned), inputs inlined asconstat the top of each script, colors in 0–1 range, load fonts before any text op,await figma.getNodeByIdAsync(...), and atomic errors (a failed script applies nothing — read the error, fix, retry).- The exact shape of each
visualSpec→ references/visual-spec.md. - One component in unlimited depth (full tree, reactions, instance refs) →
use
deep-component-figma. One variant set as a CSS state machine → useanalyze-component-set-figma. Token files on disk → useexport-tokens-figma. - This is a whole-system design capability the native MCP does not have:
get_design_contextworks on a single selection andget_metadatareturns flat structure, neither gives a unified tokens+components+styles kit on ANY plan.
Workflow
- Pick scope & verbosity to control response size on big files. Edit the constants in
scripts/inventory.js:INCLUDE— any of"tokens","components","styles"(default: all three).VERBOSITY—"full"(per-variant visual specs),"summary"(component metadata + props, no per-variant specs), or"inventory"(names/ids/counts only — for huge files).COMPONENT_NAME_FILTER— substring to limit components (e.g."Button").
- Run via
use_figma(skillNames: "design-system-inventory-figma"). Reads variables through the Plugin API, so it works on every Figma plan (no Enterprise REST requirement). - Consume. Use
tokensfor color/spacing/typography values,components[].propertiesfor the component API,components[].variants[].visualSpecfor per-state appearance, andstylesfor any style-based (non-variable) values. - If the result is still large, drop to a lower
VERBOSITYor narrowINCLUDE/COMPONENT_NAME_FILTERand re-run — don't try to page a giantfulldump.
Notes
- Colors are emitted as hex (Figma stores 0–1 RGBA internally); spacing/size values are px.
- Variables resolve aliases to token names (
{Color.Brand.Primary}-style) where possible. - Per-variant visual specs come from each variant component node — see references/visual-spec.md for the fields (fills, strokes, effects, cornerRadius, opacity, layout/padding/spacing, typography).
- This script is the open-coded, root+first-level equivalent of the bundled
figma_get_design_system_kittool, written in the nativeuse_figmaidiom so it runs without the Desktop Bridge. It captures each component/variant's root visual spec plus its direct children (childSpecs); it does not recurse deeper.