southleft/figma-console-mcp-skills

figma-lint-design

Lint a Figma node tree for WCAG 2.2 accessibility AND design-system quality — contrast, target size, focus indicators, color-only signaling, hardcoded colors, missing text styles, detached components, and more. Use when the user wants a design-side audit BEFORE handoff: triggers 'lint this frame', 'check accessibility', 'WCAG audit', 'is my design accessible', 'find contrast issues', 'check color contrast', 'find hardcoded colors', 'are my components using tokens', 'design QA', 'a11y check on t…

First seen Jun 1, 2026

Installation

$ npx skills add southleft/figma-console-mcp-skills --skill figma-lint-design

Summary

  • Lint a Figma node tree for WCAG 2.2 accessibility AND design-system quality — contrast, target size, focus indicators, color-only signaling, hardcoded colors, missing text styles, detached components, and more.
  • Use when the user wants a design-side audit BEFORE handoff: triggers 'lint this frame', 'check accessibility', 'WCAG audit', 'is my design accessible', 'find contrast issues', 'check color contrast', 'find hardcoded colors', 'are my components using tokens', 'design QA', 'a11y check on this page', 'audit my design for issues'.
  • Walks the tree from a node (or the whole page) and returns findings with severity (critical/warning/info) and WCAG level (A/AA/AAA/best-practice).
  • The native Figma MCP has NO design-side linting — this is unique to this collection.
  • For the deep per-component a11y scorecard use figma-audit-accessibility; for CODE-side (HTML) checks use figma-scan-code-accessibility.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from southleft/figma-console-mcp-skills · top by installs.

npx skills add southleft/figma-console-mcp-skills

Browse all from southleft/figma-console-mcp-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 80
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,353 B
  • docs SUMMARY.md 936 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 107 installs

SKILL.md

figma-lint-design — WCAG 2.2 + design-system lint over a node tree

Walk a Figma node (or the whole current page) and report accessibility and design-quality problems in one pass. Runs entirely through use_figma, so it works on any Figma plan and inspects the real design (true colors, real auto-layout, actual variant names) rather than generated code.

Why this is unique: the native Figma MCP (getdesigncontext, get_metadata, etc.) reads designs for code generation but does not lint them. There is no built-in "is this accessible / token-clean?" check on the design side. This skill fills that gap with a faithful port of 14 WCAG 2.2 rules plus 6 design-system/layout rules.

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).
  • Per-component deep scorecard (state coverage, color-blind sim, 0–100 scores) → use

figma-audit-accessibility.

  • CODE-side a11y (axe-core over generated HTML) → use figma-scan-code-accessibility.
  • Design-vs-code drift → use figma-check-design-parity.

Workflow

  1. Pick the scope. Get the target NODE_ID (a frame, component set, or screen) from the user's

selection or a URL. Leave it null to lint the entire current page.

  1. Pick the rules. RULES defaults to ['all']. Narrow it to a group ('wcag',

'design-system', 'layout') or a specific rule id (e.g. 'wcag-contrast') to cut noise. The full catalog is in [references/lint-rules.md](references/lint-rules.md).

  1. Run [scripts/lint-design.js](scripts/lint-design.js) via use_figma

(skillNames: "figma-lint-design"). Edit the const inputs at the top first.

  1. Triage by severity. The result groups findings by rule, each carrying severity

(critical/warning/info) and wcagLevel (a/aa/aaa/best-practice/design-system). Lead with critical (contrast, target size, focus, color-only).

  1. Fix + re-lint. Apply fixes (via figma-manage-variables, figma-use, etc.) and re-run the

same scope to confirm summary.total dropped. Each finding includes the offending node.id so you can jump straight to it.

Key rules

  • Colors are 0–1 floats. Contrast math uses sRGB linearization + relative luminance; the script

ships its own helpers (no hex needed for input).

  • Background is inferred by walking ancestors for the nearest solid fill (defaults to white).

Contrast on semi-transparent fills is flagged approximate: true.

  • MAXDEPTH (default 10) and MAXFINDINGS (default 100) bound the walk. If truncated is

set, narrow the scope or raise the cap.

  • WCAG-honest severity: some rules (text size, line height, letter/paragraph spacing) are labelled

best-practice, not a hard WCAG failure — see lint-rules.md for the exact reasoning per rule.

  • Findings are descriptive, not auto-fixed. Confirm intent before bulk-editing a design.