For the past decade, design systems were built for humans. Designers browsed them in Figma. Developers referenced them in documentation. That model worked well — until AI agents became a meaningful part of how products are built.
AI agents now write UI code, build screens, generate components. They consume your design system. But they were never designed for. The system lives in an external tool. The agent has to be told about it each time, has to interpret it, has to guess how visual decisions translate to code. The result is familiar: inconsistency that compounds with every generated screen.
This is not an argument against Figma or hosted design systems — those tools remain valuable for human collaboration and visual design. The argument is simpler: modern design systems need to support both humans and AI agents. Right now, most don't support agents at all.
The problem — and what changes
What it looks like — the three-layer model
Three structured files do most of the work. Each layer has a distinct role — and the agent reads all three before touching any UI.
Before structuring things this way, agents would regularly create variations of components that already existed — slightly different button styles, custom spacing that didn't match the system. After implementing the component map, reuse improved considerably. The output felt more like work from someone who knew the codebase.
Why this matters for design leaders
This is fundamentally a question of design governance in an AI-native environment. The implications extend well beyond technical architecture.
When agents build from a shared component map, consistency improves — not because anyone enforced it manually, but because the system itself guided the output.
A large source of design debt in AI-assisted development is components generated rather than reused. The component map creates structural pressure to reuse.
New developers, new agents, new team members — all can understand the design system through a single file. The component map becomes onboarding documentation.
When the design system lives inside the codebase, changes are tracked through version control. You can see when a component changed, why, and what screens were affected.
The component map creates a common language between designers, developers, and AI agents. Same component names, same prop vocabulary — communication improves across the team.
The promise of agentic development is speed. The risk is quality degradation. The design system is the structural mechanism that lets you increase speed without proportional inconsistency.
Design leaders have always been responsible for maintaining the design system. In an AI-native team, that responsibility evolves — the system itself needs to be maintained in a format that agents can consume. That's a design leadership decision, not a technical one.
Before the architecture — the thinking
Everything you're about to see came from a deliberate architectural decision made before any code was written. Most teams skip this step. With agentic development, that compounds quickly — agents inherit whatever structure exists, good or bad.
Before defining a design system, you need the agent architecture itself — what agents exist, what they own, how they communicate, what they're never allowed to touch. That thinking shapes everything downstream, including how a design system fits into the project.
Read the architecture article →The reference architecture
This structure works inside Claude Code, Cursor, Windsurf, or any agentic IDE that reads project context. The file names and folder conventions map directly across tools.
Two agents. Separate responsibilities.
The most important structural decision: split UI work between two distinct agent roles.
This separation is what makes governance work. The design system agent is the gatekeeper — new components don't appear in the product without going through it. Every component that enters gets documented. The library stays accurate.
What happens when you give a task
A new component request — a countdown timer for session expiry — from task to production-ready.
--color-danger
--font-mono
How to set it up
Create .agent/skills/ui/, .agent/rules/, .agent/agents/, src/styles/, and src/components/ui/. The separation between agent-readable and real code is the most important decision.
Create tokens.css with every color, font, spacing, and radius. Import once in main.jsx. From that point every component uses var(--token-name) — no hardcoded values anywhere else.
Start with five components. Each entry: name, exact file path, props with types and defaults, one usage example. This is what the agent reads before every UI task.
.agent/skills/ui/component-library.mdThe most important rule: read the component library before writing any UI code. Secondary rules cover token usage, file locations, and what to do when a component is missing.
.agent/rules/design-system.mdA dedicated agent file that owns all component creation and maintenance. Defines responsibilities, workflow, what it must read before starting, and what it must never do.
.agent/agents/design-system-agent.mdAsk the design system agent to build each component against the token system. Button, InputField, Card, Badge, Modal — each added to the component map immediately after being built.
src/components/ui/A single page rendering every component, every variant, every state — visible in the browser during development only. Agent updates it automatically when new components are added.
src/component-preview.jsxPoint a subdomain at the preview route — behind authentication if needed. Stakeholders browse real rendered components. Same codebase, same deploy, no separate maintenance.
designsystem.yourdomain.comWhat the key files look like
tokens.css
:root { --color-primary: #1E6FCC; --color-danger: #CC3B3B; --color-warning: #E5900A; --color-success: #2A8A4A; --color-text-primary: #1A1F2E; --color-text-secondary: #5A6478; --font-sans: 'Inter', sans-serif; --font-mono: 'JetBrains Mono', monospace; --space-4: 16px; --space-6: 24px; --space-8: 32px; --radius-md: 8px; --radius-lg: 12px; }
component-library.md — what the agent reads
## Button Path: src/components/ui/Button.jsx Variants: primary | secondary | ghost | danger Props: label, onClick, disabled, loading, size Usage: <Button variant="primary" label="Submit" onClick={handleSubmit} /> --- ## CountdownTimer Path: src/components/ui/CountdownTimer.jsx Variants: compact | full | banner Props: duration (ms), onComplete, variant, warningThreshold (ms) Usage: <CountdownTimer duration={300000} onComplete={handleExpiry} variant="banner" />
A screen using the library
import { Card } from '@/components/ui/Card' import { InputField } from '@/components/ui/InputField' import { Button } from '@/components/ui/Button' export default function LoginPage() { return ( <Card variant="flat" padding="lg"> <InputField label="Email" type="email" required /> <InputField label="Password" type="password" required /> <Button variant="primary" label="Sign in" onClick={handleLogin} /> </Card> ) }
Making it visible — the stakeholder subdomain
Where design systems are heading
The challenge is no longer creating a design system. The challenge is creating one that both humans and AI agents can actually use.
will ship more consistent products, faster, tomorrow.