design-lint — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited design-lint (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Lint Figma designs against 40 quality rules across 5 categories (token compliance, WCAG accessibility, layout & structure, naming & content, component). Auto-fixes 22 of 40 rules. Pairs with design-review for the human review step.
If `ping` fails (plugin not connected): STOP the workflow. Do not fall back to other MCP servers. Tell user: open Figma → Plugins → FigCraft → wait for connection, then retry.
For most cases, the one-step workflow is sufficient:
Step 1: ping → verify plugin connection
Step 2: lint_fix_all → check + auto-fix in one call
Step 3: Summarize results:
- Total nodes checked
- Violations found
- Auto-fixed
- Remaining (need manual attention)
Step 4: For remaining violations → explain what needs manual attention and how to fixWhen the user wants more control (preview before fixing, fix specific categories only):
Step 1: ping → verify plugin connection
Step 2: load_toolset("lint") → enable granular lint tools
Step 3: lint_check → scan page/selection for violations
Step 4: Present violation summary grouped by category
Step 5: ⛔ WAIT for user confirmation → user picks what to fix
Step 6: lint_fix (selected violations) → apply fixes
Step 7: lint_check → re-verify fixes applied
Step 8: Report remaining violationsTo preview violations without applying any changes:
lint_fix_all(dryRun: true) → returns fixable violations without fixing| Category | Rules | Auto-fixable | Focus |
|---|---|---|---|
| Token Compliance | 6 | 6 | Colors, typography, spacing, radius bound to tokens |
| WCAG Accessibility | 5 | 3 | Contrast, touch targets, text size, line height |
| Layout & Structure | 24 | 13 | Auto-layout, overflow, button/input structure, screen shell |
| Naming & Content | 2 | 0 | Default names, placeholder text |
| Component | 1 | 0 | Unbound component properties |
Target specific categories or nodes:
lint_fix_all(categories: ["token"]) → token compliance only
lint_fix_all(categories: ["wcag"]) → accessibility only
lint_fix_all(categories: ["layout"]) → layout & structure only
lint_fix_all(nodeIds: ["1:23", "4:56"]) → specific nodes only
lint_fix_all(categories: ["token", "wcag"]) → multiple categories| Level | Meaning | Action |
|---|---|---|
| error | Breakage that must be fixed | Always fix |
| unsafe | Layout issues causing visual bugs | Fix recommended |
| heuristic | Best-practice violations | Fix when possible |
| style | Cosmetic / naming preferences | Fix optionally |
These 16 rules cannot be auto-fixed and need manual attention:
wcag-contrast — adjust colors for ≥ 4.5:1 contrast ratiowcag-non-text-contrast — non-text elements need ≥ 3:1 contrastempty-container — add content or remove empty framesmax-nesting-depth — simplify hierarchy (> 6 levels deep)root-misclassified-interactive — screen roots should not be interactive shellsnested-interactive-shell — unwrap nested interactive elementssocial-row-cramped / nav-overcrowded / stats-row-cramped — increase container widthscreen-bottom-overflow — content exceeds viewportdefault-name — rename "Frame 1" etc. to descriptive namesplaceholder-text — replace "Lorem ipsum" / "Button" with real contentcomponent-bindings — connect unbound component properties to child layersfigma-create-ui → design-review → design-lint
(critique) (this skill — auto-fix)Run after design-review to automatically fix flagged violations, or run standalone for quick compliance checks.
For a combined lint + screenshot in one call:
verify_design(nodeId: "1:23") → lint + fix + screenshot in one round-tripThis is the preferred tool after creating UI — it combines lint_fix_all + export_image into a single call.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.