Fix a Design-System Finding

VerifiedSafe

Fix a specific design-system integration finding in a Figma screen or component, including missing shared components, local overrides, and unbound tokens.

Sby Skills Guide Bot
DevelopmentIntermediate
8/7/2026
Claude CodeCursor
#figma#design-system#component-swap#design-tokens#mcp

Recommended for

Automated summary

Fixes a single design-system integration finding in a Figma screen or component by swapping in shared library components and rebinding unbound tokens.

Strengths

  • Deliberately narrow scope: one finding, one offending node, minimal reads and writes
  • Runs a local compatibility check before editing when the replacement component is ambiguous
  • Explicit step-by-step workflow with targeted Figma MCP inspection (screenshot, metadata, variable defs)
  • Ends in a clear status — fixed, blocked, or needs-follow-up — without silently widening scope

Limitations

  • Assumes a prior audit-design-system run already produced an actionable finding
  • Does not handle screen-wide reconnects; use apply-design-system for those
  • Requires Figma MCP read access and, depending on the setup, a figma-use-style write helper
When to use it

Use it when a specific design-system audit finding names a Figma node to correct and you want a surgical, single-issue fix.

When not to use it

Avoid it for full-frame reconnections or multi-section coordination, or when no concrete Figma file key or node id is available.

Security analysis

Safe
Quality score92/100

The skill guides an AI agent through a specific Figma design-system fix using Figma MCP read/write tools. It does not instruct destructive system commands, exfiltration, or obfuscated actions. The workflow involves making backups and applying targeted changes, which is normal and legitimate. No security concerns are present.

No concerns found

How this analysis is made

Examples

Fix one audit finding
Here is one finding from our design-system audit: fileKey abc123, nodeId 45:678, flagged for a local button override instead of the shared Button component. Please fix just this node and tell me whether it ends up fixed, blocked, or needs follow-up.
Unbound token on a card
In this Figma screen (https://figma.com/file/abc123?node-id=45:678) the card uses a hardcoded #F5F5F5 and 16px padding instead of our design tokens. Fix that one issue without touching anything else on the frame.
Ambiguous component swap
The audit says this node uses an ad-hoc input wrapper instead of a library component, but it doesn't name which one. Run a compatibility check first, then apply the fix if it's safe.

name: fix-design-system-finding description: Fix a specific design-system integration finding in a Figma screen or component, including missing shared components, local overrides, and unbound tokens.

Fix One Design-System Finding

Use this skill after audit-design-system has already identified a concrete issue.

This skill is intentionally narrow:

  • one finding at a time
  • one offending node or local cluster at a time
  • minimal read scope
  • minimal write scope

Load these capabilities first:

  • Figma MCP read access for the normal inspection tools
  • a figma-use-style helper before any use_figma write call, when your environment requires one

Use apply-design-system instead when the task is a broader screen-wide reconnect, multiple sections need coordinated changes, or the user explicitly wants a full pass across the frame.

Expected Input

Prefer one of these:

  • a single JSON finding from audit-design-system
  • the full review JSON plus the specific finding to address
  • a paraphrased issue plus a Figma URL or fileKey and nodeId

If the finding came from audit-design-system, extract the target from:

  • code_location.absolute_file_path = /figma/<fileKey>/nodes/<nodeId>

Treat the review result as the scope contract. Do not silently widen from one finding into a full cleanup pass.

Scope Rule

Stay pinned to the selected finding until one of these is true:

  • fixed: the targeted issue is corrected
  • blocked: the fix requires missing library assets, inaccessible components, or broader product decisions
  • needs-follow-up: the targeted node is improved, but a separate adjacent issue remains and should be reviewed independently

If the user pastes multiple findings, either address the one they selected or pick the highest-priority finding and say that is the one being fixed now.

Required Workflow

1. Normalize the Finding

Extract and restate:

  • fileKey
  • offending nodeId
  • finding title
  • why the reviewer flagged it

If the review output does not identify a specific node, stop and ask for either the raw finding JSON or a direct Figma node.

2. Run A Local Compatibility Check When Replacement Choice Is Ambiguous

Before backing anything up or editing the canvas, decide whether a clean fix is actually possible.

Run a local compatibility check when:

  • the finding implies a DS swap but does not identify the exact component
  • more than one library component looks plausible
  • override behavior or sizing is unclear
  • the user explicitly wants extra research before writing

Do not continue into writes until the compatibility check returns one of:

  • safe-to-apply
  • blocked
  • needs-human-choice

The compatibility check should answer:

  • which exact component or variant is the leading candidate
  • whether text, icon, state, and size overrides are supported
  • whether the replacement can preserve the node's layout contract

If the result is blocked, stop and report the blocker.

If the result is needs-human-choice, stop and ask the minimal clarifying question instead of guessing.

3. Gather Only the Evidence Needed

Before writing, inspect the target with the smallest useful set of reads:

  1. get_screenshot for the offending node or closest enclosing section
  2. get_metadata for structural context
  3. get_variable_defs when the finding mentions tokens, raw values, color, spacing, or typography
  4. get_code_connect_map when the finding suggests an existing mapped component
  5. search_design_system only if you still need to locate the replacement primitive

Do not re-review the whole board unless the finding clearly points to a repeated pattern and the repeated pattern is required to choose the fix.

4. Classify the Fix

Choose exactly one remediation mode:

  • swap-instance: replace an ad-hoc or wrong instance with the correct library component or variant
  • compose-from-primitives: rebuild the local custom wrapper from published library parts
  • bind-tokens: replace raw values with variables or styles
  • align-variant: move an existing instance to the correct variant or property state
  • blocked: no valid library-backed fix is currently possible

If more than one mode seems plausible, prefer the smallest change that satisfies the original finding.

5. Back Up Only the Affected Area

Before destructive edits, duplicate only the offending node or the smallest enclosing local section.

Name the backup clearly, for example:

  • Backup - Fix finding 1
  • Backup - Custom nav

Make the backup in its own write call and return the created node ID.

6. Apply the Fix Incrementally

Do not rebuild the whole screen.

Work in small steps:

  1. inspect current node IDs and component linkage
  2. import or locate the needed library component or variable
  3. replace, compose, or retokenize only the targeted area
  4. return all created and mutated node IDs

Prefer swapComponent() when it preserves the node's position and valid overrides.

Prefer rebuilding beside the original when:

  • the current node is a local wrapper with mixed custom structure
  • the review finding points at a custom composition, not a single primitive
  • you need visual comparison before replacing the original

If the first validation pass shows that the recommended component regresses layout, text visibility, icon behavior, or width contract, stop. Report blocked or needs-follow-up instead of continuing to force the same primitive into place.

7. Validate the Finding, Not the Entire Screen

After the write:

  1. screenshot the changed node or its immediate section
  2. confirm the specific review complaint is no longer true
  3. confirm the result is library-backed or token-bound when that was the goal
  4. confirm spacing and text overrides still make sense

Only expand validation beyond the local section if the fix touched a global pattern such as navigation.

Decision Heuristics

  • If the finding says a primitive was recreated as a frame, bias toward swap-instance.
  • If the finding says repeated local wrappers should collapse into a shared pattern, fix one representative node unless the task explicitly asks to roll the fix across all siblings.
  • If the finding is about raw values beside tokenized peers, bias toward bind-tokens.
  • If the finding is about a locally edited instance with the wrong size or state, bias toward align-variant.
  • If the library lacks the required component family or the import fails, mark it blocked instead of improvising a fake connection.
  • If a DS component exists but cannot preserve the node's text/icon/sizing contract, mark it blocked or needs-human-choice instead of forcing the swap.

Writing Rules

  • Keep the write scope tightly aligned to the selected finding.
  • No write before a safe-to-apply compatibility outcome when replacement choice is ambiguous.
  • Do not claim the whole screen is "on system" after fixing one finding.
  • Prefer exact component keys and variable IDs over names.
  • Do not continue into unrelated cleanup just because you noticed more drift.
  • If a broader refactor is obviously needed, finish the targeted fix or report the blocker, then recommend apply-design-system for the next pass.

Deliverable Format

When closing the task, report:

  • Finding fixed: what changed and on which node
  • Validation: how you confirmed the original issue is resolved
  • Blocked or Follow-up: only if the finding could not be fully resolved

Keep the report tied to the single finding. Avoid screen-wide summaries unless the user asks for them.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/fix-a-design-system-finding-msih94xu' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/fix-a-design-system-finding-msih94xu/download' --output '.skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md.part' && mv '.skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md.part' '.skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md' && test -s '.skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/fix-design-system-finding' && cp -R '.skill-downloads/fix-a-design-system-finding-msih94xu' '.claude/skills/fix-design-system-finding'

Cursor
test -f '.skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md' && test -s '.skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/fix-design-system-finding' && cp -R '.skill-downloads/fix-a-design-system-finding-msih94xu' '.cursor/skills/fix-design-system-finding'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/fix-a-design-system-finding-msih94xu'

openskills read 'fix-a-design-system-finding-msih94xu'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/fix-a-design-system-finding-msih94xu/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills