Install
$ agentstack add skill-southleft-skills-for-figma-component-properties-figma ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
component-properties-figma — define a component's API + instantiate it
Two related jobs:
- Author the component's property API — add/edit/delete
TEXT,BOOLEAN,INSTANCE_SWAP, and
VARIANT properties so the component exposes the right knobs (the Figma equivalent of a React component's props).
- Use the component — create an instance and set its properties (label text, boolean toggles,
variant selection, swapped sub-instances).
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).- Reading a component's existing property definitions / state machine →
use analyze-component-set-figma or deep-component-figma.
- These are design-system authoring writes the native MCP's
get_design_context/
get_metadata (read-only) do not cover.
Property types
| 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 |
Workflow — authoring properties
- Target the COMPONENT_SET (or standalone COMPONENT). You cannot add properties to an
individual variant — the script errors and tells you to use the parent set.
- Add with [
scripts/add-property.js](scripts/add-property.js) (use_figma,
skillNames: "component-properties-figma"). Set NODE_ID, PROPERTY_NAME, PROPERTY_TYPE, DEFAULT_VALUE. addComponentProperty returns a name with a #id suffix — capture it.
- Edit / delete by reusing the same script's
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.
- Verify by re-reading
node.componentPropertyDefinitions(the script returns it).
Workflow — instantiate + set instance properties
- Get a component identity. A published library
componentKey(preferred) and/or a local
nodeId. Pass both when you have them — the script tries the library import first, then the local node.
- Run [
scripts/instantiate-and-set.js](scripts/instantiate-and-set.js). SetCOMPONENT_KEY/
COMPONENT_ID, optional VARIANT (e.g. { Size: "md", State: "default" }), OVERRIDES, POSITION, and PARENT_ID.
- Set properties on an existing instance with the same script's
setPropertiespath — it loads
the main component, then matches plain names and Name#id-suffixed names automatically.
Notes
- Instance property keys carry
#nodeIdsuffixes 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.
- Direct text editing of an instance's text layer fails silently — always go through
setProperties / instance properties, never set .characters on a nested instance text node.
componentKeyonly works for published components. For local/unpublished ones usenodeId.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: southleft
- Source: southleft/skills-for-figma
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.