audit-accessibility-figma
Checks whether a design component works for people with color blindness or motor challenges and scores how accessible it is.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
--- name: audit-accessibility-figma description: "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." disable-model-invocation: false --- # audit-accessibility-figma — per-component a11y scorecard Run a deep accessibility audit on a **single component or component set** and get a weighted 0–100 scorecard with prioritized fixes. Where `lint-design-figma` sweeps a whole tree for many rule violations, this skill goes deep on one component: it understands variant axes, classifies the component as interactive vs presentational, and scores each a11y dimension accordingly. All via `use_figma`, on any plan — it inspects the real variant tree, fills, strokes, effects, and 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). - **Tree-wide WCAG + design-system lint** → use `lint-design-figma`. - **CODE-side a11y** (axe-core over HTML) → use `scan-code-accessibility-figma`. - **Design-vs-code drift** → use `check-design-parity-figma`. ## Workflow 1. **Target a component.** Set `NODE_ID` to a COMPONENT_SET, COMPONENT, or INSTANCE id (the script walks INSTANCE → main component → parent set automatically). Leave it `null` to audit the current single selection. 2. **Set the tap-target minimum.** `TARGET_SIZE` defaults to 24 (WCAG 2.5.8 minimum); pass 44 or 48 for stricter mobile targets. 3. **Run** [`scripts/audit-accessibility.js`](scripts/audit-accessibility.js) via `use_figma` (`skillNames: "audit-accessibility-figma"`). 4. **Read the scorecard.** `overallScore` is a classification-weighted blend of the six category scores. See [references/audit-categories.md](references/audit-categories.md) for each category, its weight, and how to raise it. 5. **Work the recommendations.** `recommendations[]` is already sorted by `priority` (`high`/`medium`/`low`) with the WCAG SC named. Fix, then re-run to confirm the score moved. ## Key rules - **Interactive vs presentational** is auto-detected from the component name and variant axes. It changes which categories are scored and their weights — a badge is not penalized for lacking a focus state; a button is. - **Colors are 0–1 floats.** Contrast uses sRGB luminance; color-blind simulation uses Brettel/Viénot dichromat matrices. - **Coverage** means interaction states for interactive components, and variant-axis completeness (actual variants ÷ expected combinations) for presentational ones. - The audit is read-only — apply fixes with `manage-variables-figma` / `figma-use`, then re-audit.
Ships with 2 supporting files:
- references/audit-categories.md
- scripts/audit-accessibility.js
Mirrored from the author's public source. Install counts from the open skills registry.