southleft/skills-for-figma

annotations-figma

Read and write designer annotations on Figma nodes — node-level design specs that pin properties (fills, width, fontSize, etc.) and carry plain or markdown notes.

Ver código fuente
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

annotations-figma — read & write node annotations

Annotations are designer-authored specs attached to a node. Each can carry a note (plain label or rich labelMarkdown), a set of pinned properties (fills, width, fontSize, …) that link the note to specific design attributes, and an optional category (interactions, accessibility, dev notes, …). They live on the node, survive edits, and are undoable (Cmd+Z). They are the right place for animation timings, easing curves, interaction behavior, and a11y requirements that don't belong in the component description.

Skill boundaries

  • `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).
  • Valid property types + shapesreferences/annotation-properties.md.
  • Comments (file-level discussion threads, not node specs) are out of scope — use Figma's comments REST API instead.

Workflow

  1. Get the node ID. Use the current selection or a node ID the user gives you. Annotations only

apply to nodes whose type supports them (frames, components, instances, shapes, text — not pages).

  1. List categories first when writing categorized annotations. Run the categories snippet so you

can pass a real categoryId (category names are per-file and not guessable). See the script.

  1. Read with `scripts/get-annotations.js` — set INCLUDE_CHILDREN

to walk a component tree for full-component documentation.

  1. Write with `scripts/set-annotations.js`. Choose MODE:

'replace' (default — overwrites all annotations on the node) or 'append' (keeps existing). Pass ANNOTATIONS = [] with 'replace' to clear all annotations.

  1. Validate. Re-run the read script and confirm the annotation count and labels match what you set.

Notes

  • Note any text op needs a font load. Annotations themselves don't render text you author, but

if a workflow also writes text nodes, await figma.loadFontAsync(...) first (see conventions).

  • Figma auto-populates BOTH label and labelMarkdown on read, but rejects writing both — when

appending, prefer labelMarkdown if present, else label. The append script already does this.

  • properties only pins which attributes the note is about; it does not set their values. Use the

exact strings from references/annotation-properties.md.

  • These tools require the Figma Desktop app (the Plugin API isn't available in the browser).
del mismo repositorio

Más Skills

Todos los Skills
southleft
Comunidad

analyze-component-set-figma

Analyze a Figma COMPONENTSET as a state machine for code generation — extract variant axes (state/size/etc.), map state variants to CSS pseudo-classes (hover→:hover, focus→:focus-visible, disabled→:disabled, error→[aria-invalid]), and compute per-variant visual diffs (only what changes per state). Use when generating an interactive component from a Figma variant set — triggers: 'analyze this component set', 'turn these variants into CSS states', 'generate a button/input/checkbox from Figma variants', 'what changes between the hover and default state', 'map Figma variants to component props', 'extract the state machine for this component'. Resolves bound variables to token names. NOT covered by the native MCP's getdesigncontext/getmetadata, which don't give you a variant-axis→CSS-state machine.

instalaciones
1
GitHub Stars
14
Actualizado
1 jun
southleft
Comunidad

audit-accessibility-figma

Deep accessibility scorecard for a single Figma component or component set — state coverage (default/hover/focus/disabled/error/active/loading), focus-indicator quality and contrast, non-color state differentiation, target size, annotation completeness, and color-blind simulation (protanopia/deuteranopia/tritanopia), all rolled into per-category 0–100 scores and prioritized recommendations. Use when the user wants to vet ONE component before shipping it: triggers 'audit this component', 'accessibility score for this button', 'is this component set accessible', 'check the states on this component', 'does my button have a focus state', 'color blind check', 'rate this component for a11y', 'component accessibility scorecard'. Works on ANY Figma plan. For a broad sweep over a whole page/frame use lint-design-figma; for CODE-side (HTML) checks use scan-code-accessibility-figma.

instalaciones
1
GitHub Stars
14
Actualizado
1 jun
southleft
Comunidad

check-design-parity-figma

Compare a Figma node's actual specs against a code spec (the values your component renders) and get a 0–100 parity score, a list of discrepancies, and fix suggestions. Use to detect design-to-code DRIFT: triggers 'check design parity', 'does my code match the Figma', 'compare this component to the design', 'is my implementation faithful', 'find differences between design and code', 'verify the build matches Figma', 'design QA against code', 'parity score'. Reads the node's visual / typography / spacing / token / accessibility specs via usefigma (any plan) and diffs them against a codeSpec you provide. Complements the native getdesigncontext: instead of GENERATING code, it VALIDATES that existing code stayed in sync with the design.

instalaciones
1
GitHub Stars
14
Actualizado
1 jun
southleft
Comunidad

component-properties-figma

Add, edit, and delete Figma component properties (TEXT, BOOLEAN, INSTANCESWAP, VARIANT) on a COMPONENT or COMPONENTSET, and instantiate a component then set its instance properties. Use when authoring or wiring up a component's API in Figma — triggers: 'add a component property', 'add a boolean prop to this component', 'make this text a component property', 'add an instance-swap slot', 'create a variant property', 'rename/delete a component property', 'place an instance of this component', 'instantiate this component and set its label/state', 'set properties on this instance'. Properties must be added to the parent COMPONENTSET, not individual variants. NOT covered by the native MCP's read-only getdesigncontext/getmetadata.

instalaciones
1
GitHub Stars
14
Actualizado
1 jun