Help us improve
Share bugs, ideas, or general feedback.
Author Figma component property APIs (TEXT, BOOLEAN, INSTANCE_SWAP, VARIANT) and instantiate components with property overrides.
npx claudepluginhub southleft/figma-console-mcp-skills --plugin figma-console-mcp-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/figma-console-mcp-skills:figma-component-propertiesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Two related jobs:
Runs Figma plugin API JavaScript in open design files to create shapes, modify properties, extract data, and manage slots. Requires user login and file access.
Teaches Claude Code how to use `use_figma` tool correctly, including prerequisite rules, API reference loading, and co-loading companion skills.
Enforces library-first component lookup, correct Auto Layout structure, and semantic node naming when building UI elements in Figma.
Share bugs, ideas, or general feedback.
Two related jobs:
TEXT, BOOLEAN, INSTANCE_SWAP, and
VARIANT properties so the component exposes the right knobs (the Figma equivalent of a React
component's props).use_figma rules — load the official figma-use skill first; it is the full Figma Plugin API reference. Essentials these scripts rely on: plain JS with top-level await + return (no IIFE, no figma.closePlugin(); console.log is not returned), inputs inlined as const at 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).figma-analyze-component-set or figma-deep-component.get_design_context /
get_metadata (read-only) do not cover.| Type | What it controls | defaultValue | Notes |
|---|---|---|---|
TEXT | A text-layer string override | "Label" | Bind in UI to a text node's characters |
BOOLEAN | Show/hide a layer | true/false | Bind to a layer's visibility |
INSTANCE_SWAP | Which sub-component fills a slot | a component key | Pass preferredValues to populate the picker |
VARIANT | A variant axis (Size, State…) | one option string | Only meaningful on a COMPONENT_SET |
scripts/add-property.js (use_figma,
skillNames: "figma-component-properties"). Set NODE_ID, PROPERTY_NAME, PROPERTY_TYPE,
DEFAULT_VALUE. addComponentProperty returns a name with a #id suffix — capture it.editComponentProperty(name, {...}) /
deleteComponentProperty(name) calls (commented variants are in the script). Use the suffixed
name returned at creation for edits/deletes of non-variant props.node.componentPropertyDefinitions (the script returns it).componentKey (preferred) and/or a local
nodeId. Pass both when you have them — the script tries the library import first, then the
local node.scripts/instantiate-and-set.js. Set COMPONENT_KEY /
COMPONENT_ID, optional VARIANT (e.g. { Size: "md", State: "default" }), OVERRIDES,
POSITION, and PARENT_ID.setProperties path — it loads
the main component, then matches plain names and Name#id-suffixed names automatically.#nodeId suffixes for TEXT/BOOLEAN/INSTANCE_SWAP
("Label#12:3"); VARIANT props use the bare name. The instantiate script resolves both, so you can
pass the human name (Label) and it finds the suffixed key.setProperties / instance properties, never set .characters on a nested instance text node.componentKey only works for published components. For local/unpublished ones use nodeId.