The Problem
Design systems promise consistency and speed. In practice they often introduce an uncomfortable challenge. At Step, our design system had matured into a large and powerful foundation — 265 design tokens covering color, typography, spacing, and border radius, and 281 reusable components. Yet there was no reliable way to ensure those tools were actually being used.
The Gap
Designers could still introduce hardcoded colors, arbitrary spacing values, or custom components that were similar to something already in the system. These issues were often invisible until someone carefully inspected a file during design review.
Over time, this created a familiar dynamic. Design leaders became responsible for auditing system compliance during reviews, which meant conversations that should have focused on product quality often drifted into token enforcement, component usage, and implementation details.
The effect was subtle but real. Reviews slowed down, designers felt scrutinized, and leaders spent time on work that didn't meaningfully move the product forward.
The issue was visibility, not discipline.
The Insight
Design reviews were doing two fundamentally different jobs: evaluating the quality of the product experience and auditing adherence to the design system.
When leaders are forced to do both simultaneously, the conversation shifts toward small implementation details instead of bigger product questions. This also creates unnecessary tension inside design teams.
Adherence to your Design system shouldn't rely on human vigilance. It should be built into the way your team works.
Starting With AI
My first attempt at solving this was a Claude Skill.
I documented our design system rules in Markdown so Claude could understand how Step uses tokens and components, then created a skill that could review work against those rules.
It worked. More importantly, it proved that a lot of the knowledge I was applying manually during reviews could be made explicit enough for a system to evaluate.
Despite being useful this version had limitations. Designers had to leave their existing workflow and deliberately ask Claude to perform the review. I had automated the knowledge, but I hadn't solved the problem.
---name: design-system-agentdescription: > An expert design system agent that audits Figma files, suggests improvements, and generates structured documentation. Claude should activate this skill whenever a user asks to audit, improve, analyze, or document a design system, component library, or Figma file.---## When to use this skillActivate this skill when the user:- Shares a Figma file URL and wants feedback or analysis- Asks to audit a design system, component library, or token architecture- Asks for documentation for components, tokens, or design guidelines- Asks for improvement suggestions on naming, consistency, accessibility, or coverageHow could we introduce this skill into a designer’s usual workflow?
Bringing the System Into the Workflow
Instead of expecting designers to remember to run a separate review, I wanted compliance to be available where the decisions were actually being made. I used Claude Code to build SDS Audit, a Figma plugin that checks a designer's work against the Step Design System.
Designers can run an audit on an entire page or just their current selection. The plugin walks through the underlying layers and checks properties including fills, strokes, typography, corner radius, spacing, and padding. Anything already connected to an approved variable is left alone; unbound values are flagged for review.
When it finds a violation, SDS Audit doesn't just point out the problem. It recommends an appropriate design token and lets the designer apply it directly.

Building the Tool With Claude Code
I didn't write the plugin code by hand. Claude Code did.
My role was defining how the system should work: what constitutes a violation, what properties need to be inspected, how the plugin should choose between possible tokens, what happens when token data isn't available, and what the designer should be able to do with the results.
That required translating years of experience building and operating design systems into explicit rules a system could execute.
I would define the behavior, Claude would implement it, and I would test the result in Figma — finding edge cases, changing rules, debugging unexpected behavior, and iterating until the tool worked the way I expected.
How It Works
Under the hood, SDS Audit is made up of three pieces:
Figma Plugin
Reads the canvas, traverses layers, evaluates properties, and applies fixes directly to the design.
Plugin UI
Displays violations, suggestions, filters, and actions. It also handles communication between the plugin and the token service.
Token Service
A lightweight service hosted on Vercel retrieves the current Step design tokens from Figma without requiring every designer to configure their own API credentials.
Together they create a simple loop:

Encoding Design-System Judgment
Finding an incorrect value is relatively straightforward. Deciding what should replace it is more interesting.
For spacing, radius, and font size, SDS Audit compares the value against the system and finds the closest approved token. For colors, it uses similarity matching with a threshold so it won't recommend a token simply because it's the closest of several bad options.
I also added a rule based on how I want designers to use our system:
Setting guidelines like “Prefer semantic tokens over primitives” helps the AI think like a senior designer.
If a value is close to both a raw color token and something like Background/Primary, SDS Audit favors the semantic token even when the primitive is numerically a little closer.
That's not a rule Figma gave us. It's design-system judgment that previously lived in reviews, now encoded into the tool.
From Detection to Correction
I didn't want to build a linting tool that gave designers another list of things to fix.
When SDS Audit finds an unbound value, designers can tap the suggested token name and the plugin binds the appropriate Figma variable directly to that property.
The goal was to make following the system easier than ignoring it.
That changed the role of the tool from an auditor into something closer to an assistant — identifying problems, explaining the right system choice, and helping designers correct them without leaving Figma.
One System, Multiple Workflows
The Figma plugin isn't the end state.
We still maintain the Markdown documentation originally created for the Claude Skill. That same structured definition of the design system can become useful beyond design review.
The next step is incorporating it into our build process so the rules designers use in Figma can also provide context to AI and engineering workflows downstream.
That creates an interesting opportunity:
Instead of documenting the design system separately for designers, AI, and engineers, the same system can power multiple tools across the product-development process.
Organizational Impact
- Design reviews can focus more on product decisions
- Token violations are caught earlier
- Designers can validate their own work before review
- System adoption becomes part of the workflow instead of a management responsibility
- Design-system knowledge becomes reusable infrastructure rather than static documentation
Leadership Takeaway
The Most Meaningful Impact Was Cultural
Instead of design leaders policing system usage during reviews, designers have a quick way to validate their own work.
That shifts design system enforcement from manager oversight to designer workflow.
Great Design Systems Reduce Operational Load
The value of a design system isn't just consistency. A good system should make the organization easier to operate.
Automating compliance removes a recurring source of friction between designers and leadership while improving the consistency of the product itself.
Leaders Can Build the Systems Around the Work
This project also changed how I think about building as a design leader.
I've spent years identifying the processes, systems, and behaviors that help design teams operate effectively. Tools like Claude Code give me a much shorter path from recognizing an operational problem to building something that solves it.
I don't need to personally write every line of code. I need to understand the problem deeply enough to define the architecture, behavior, rules, edge cases, and experience — and then be able to test and iterate on what gets built.
For me, that's the most interesting part of AI-assisted development. You can iterate your way to the best solution quickly and easily.