design-system-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited design-system-audit (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.
Comprehensive audit of a Figma design system's health: token coverage, component structural quality, variable usage, naming consistency, and style completeness. Combines multiple tools into a single audit workflow.
get_mode → verify connection + get designContext
load_toolset("components-advanced") → component audit toolsIf `get_mode` fails (plugin not connected): STOP. Do not fall back to other MCP servers. Tell user: open Figma → Plugins → FigCraft → wait for connection, then retry.
Note: variables_ep and styles_ep are core tools — always available, no toolset loading needed.
Run a full inventory of the design system file:
get_document_info → list all pages
get_current_page(maxDepth: 1) → overview per page
components(method: "list") → all local components
variables_ep(method: "list") → all local variables
variables_ep(method: "list_collections") → all variable collections
scan_styles → all local styles (paint, text, effect)Compile an inventory summary:
audit_components → structural health scanFor each page with components, check:
For each component, inspect variable bindings:
nodes(method: "get", nodeId: "...") → read component propertiesCheck:
Calculate token binding rate: (bound properties / total bindable properties) × 100%
Efficient pattern: Use variables_ep(method: "list") — returns ALL fields (name, scopes, codeSyntax, description, valuesByMode) in one call. Do NOT call get on each variable individually.
variables_ep(method: "list", collectionId: "<id>") → all variables with full detailsFor each variable, check:
ALL_SCOPES — variables without specific scopes pollute property pickerscodeSyntax field)Bulk fix: Use variables_ep(method: "batch_update") to fix multiple issues in one call:
variables_ep(method: "batch_update", updates: [
{ variableId: "...", scopes: ["FONT_FAMILY"], codeSyntax: { WEB: "var(--font-family-brand)" } },
{ variableId: "...", description: "Primary background color" },
...up to all variables that need fixing
])This reduces N individual update/set_code_syntax calls to 1 batch call.
Scan all nodes for naming issues:
lint_fix_all(categories: ["naming"]) → check naming rulesAdditionally check:
Compile a structured report:
## Design System Audit Report
### Summary
- Components: X total (Y sets, Z standalone)
- Variables: N across M collections
- Styles: P text, Q paint, R effect
- Token binding rate: XX%
- Health score: X/10
### Component Health
- ✅ With descriptions: X/Y
- ⚠️ Missing descriptions: [list]
- ⚠️ Unexposed text: [list]
- ⚠️ Single-variant sets: [list]
### Token Coverage
- ✅ Bound fills: X%
- ✅ Bound strokes: X%
- ✅ Bound spacing: X%
- ⚠️ Hardcoded values: [list with suggestions]
### Variable Quality
- ⚠️ ALL_SCOPES variables: [list]
- ⚠️ Missing code syntax: [list]
- ⚠️ Orphan variables: [list]
### Naming
- ⚠️ Default names: X nodes
- ⚠️ Placeholder text: X nodes
### Recommendations
1. [Priority fixes]
2. [Quick wins]
3. [Long-term improvements]| Criterion | Weight | Scoring |
|---|---|---|
| Component descriptions | 15% | % of components with descriptions |
| Token binding rate | 25% | % of bindable properties bound |
| Variable scopes set | 15% | % of variables with specific scopes |
| Code syntax set | 10% | % of variables with code syntax |
| No default names | 10% | % of nodes with descriptive names |
| No placeholder text | 10% | % of text nodes with real content |
| Text styles applied | 10% | % of text nodes using shared styles |
| No empty containers | 5% | % of frames with visible children |
Score 8–10: Healthy. Score 5–7: Needs attention. Score < 5: Significant gaps.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.