In my free time, I spend my time building furniture and other things from wood. This post is derived from that experience. Let me tell you a story…
Two woodworkers buy the same router on the same day.
The first clamps the workpiece to the bench, freehands the cut, and gets a clean edge on Tuesday. Wednesday’s edge wanders. Thursday’s is clean again. The conclusion: the router is temperamental, and it’s time to buy a better one.
The second spends the first afternoon not cutting anything. Instead, they build a jig: a scrap-plywood fixture that holds the workpiece the same way every time, guides the router along the same path, and stops it at the same depth. Tuesday’s edge matches Thursday’s. When a customer orders forty chairs, the answer is yes.
Same tool, same hands. The second woodworker understood that the router was never the variable worth engineering. The setup was.
Plenty of design orgs are somewhere in the first woodworker’s arc. One pod ships a polished agent-built prototype every week. The pod next door, on the same licenses, produced one impressive demo in March and nothing since. Engineering gets a prototype built from components that don’t exist in production and rebuilds it from scratch. Leadership sees the variance and reaches for procurement: a better router.
The first piece in this series argued that AI adoption is an ops problem. This is the tooling part of that argument, and the thesis is simple:
Inconsistent output is a harness problem. For a design org, you already own the most important jig in the shop. It’s your design system. The question is whether an agent can read it.
Repeatability lives in the setup
The mental-model article established the core fact about this material: model output is a draw from a distribution. You can’t hand-craft the variance away, not with better prompts typed fresh each morning and not with your most talented designer at the keyboard. Every element you don’t standardize widens the distribution. A different model version. A context dump worded differently each time. A workflow retold from memory. A personal account with different settings.
A harness is everything around the model that you can hold constant:
- which model runs
- what context it’s given
- what instructions encode the workflow
- what environment and tools it has access to
- what the output must pass before anyone calls it done
Hold those constant and the distribution narrows to something a team can rely on. The variance that remains belongs to the material, and now it’s visible instead of buried under setup noise. The jig doesn’t make the router deterministic. It makes everything around the cut deterministic, so the cut is the only thing left to judge.
Anthropic’s engineering team gave this discipline a name in 2025, context engineering, and their guiding principle is a good one to tape to the wall:
…find the smallest set of high-signal tokens that maximize the likelihood of your desired outcome.
In simple terms: the agent knows only what your harness tells it. That reframes the variance between your pods as something measurable: the difference between one pod that built a jig informally, usually invisible and living in one person’s habits and folders, and pods that freehand every cut. The fix is to make the jig explicit, shared, and owned.
The design system is design’s woodworking jig
Most of the harness is generic. Any team running agents needs a sanctioned model, written instructions, and a review gate. But one part of it is specific to design, and it matters more than the rest combined.
When an agent generates interface code, every decision it makes is a design-system decision, whether intended or not.
Which button.
Which spacing value.
Which color for an error state.
Which layout for a settings page.
An agent with no access to your system makes those decisions anyway, fluently and differently each time. This results in the drift that befuddles designers who strive to keep high craft standards, but can’t figure out why it isn’t working.
The teams that have tried it report the same failure pattern. Atlassian found agents surfacing outdated patterns, missing accessibility requirements, and inventing components. 1Password watched a general-purpose agent put tokens at the wrong tier and reach for raw HTML instead of the library’s primitives, leaving reviewers to clean up after it.
Give the agent the system, and the same decisions come out the same way every time. That’s the jig.
It’s also the only jig that runs the full length of the path from idea to production. A designer prototyping in Figma Make or Claude Code, an engineer building the feature in Cursor, and the code that finally ships can all draw from the same components and the same tokens. When they do, the prototype stops being a throwaway. It’s built from the parts production is built from, so handoff becomes a code review.
The design system is the source of truth that code generation builds on. Treat it that way, and every other layer of the harness gets easier.
Murphy Trueman put the shift well:
Your design system is already an API; the question is whether it’s a good one.
For the last decade, design systems were written for people. People skim, absorb conventions socially, and fill gaps with judgment. An agent reads every word, has no social context, and fills gaps by improvising. Most of the content your system needs already exists; the work is repackaging it for a literal reader.
My team is building exactly this right now: an MCP server for our design system that carries component metadata, usage documentation, and example patterns, all ready for agents. We’re laying the groundwork that positions us for a comprehensive redesign, while at the same time preserving the context that lets us push the product forward today.
The rest of this piece is about how to do that well, drawing on the teams furthest along.
The jig now comes in standard sizes
First, some context on the formats, because the past year changed what’s possible.
After World War II, European cabinetmakers converged on drilling every hole on a 32-millimeter grid. The number came from the machinery: 32mm was the closest that drill bits could sit side by side on a line-boring machine. Hinge, drawer-slide, and shelf-pin makers designed their hardware to the same grid. The payoff was interchangeability. A hinge from one manufacturer fit a cabinet from another, and a shop could change suppliers without rebuilding its fixtures.
The striking part is how the 32mm system got there:
While not defined by any standardization body, it is in wide use globally.
That’s almost exactly where agent tooling landed in 2025 and 2026. Nobody convened a committee. A handful of conventions shipped, worked, got copied, and some got handed to neutral stewards. Each answers a different question:
| Standard | The question it answers | Where it came from (as of Nov 2026) | Role in a design org |
|---|---|---|---|
| MCP | What can the agent reach, and ask? | Anthropic, 2024; donated to the Agentic AI Foundation (Linux Foundation) Dec 2025. Supported by effectively every major agent tool. | How the design system is delivered to agents, on demand |
| DTCG tokens | What are the exact values? | W3C Design Tokens Community Group; first stable spec Oct 2025. | The design system’s foundation, in a portable format |
| SKILL.md (Agent Skills) | How do we do this task? | Anthropic, Oct 2025; open standard at agentskills.io Dec 2025; adopted across most major agent tools. | Procedures: build a page, create a component, migrate a screen |
| AGENTS.md | How do we work here? | Emerged from OpenAI Codex, Amp, Jules, Cursor, and Factory; stewarded by the Agentic AI Foundation. 60k+ open-source projects. | The pointer: tells every agent where the design system lives and what rules apply |
| DESIGN.md | What should it look like, and why? | Google Labs’ Stitch; draft spec open-sourced Apr 2026. Alpha; ships a linter. | A portable summary of the system for tools that can’t reach the full thing |
The order of that table is deliberate. For a design org, MCP is where the design system lives at runtime. It lets an agent ask your system a question (“what’s the right component for a destructive confirmation?”) and get back a specific, current answer. Tokens are the foundation everything else references. Skills carry procedure. AGENTS.md is the signpost. DESIGN.md is useful, and I’ll come back to where it fits, but a single Markdown file can’t carry a full design system.
(Foreshadowing: Atlassian tested DESIGN.md, and it is not the answer)
The business case for all five is the same as the 32mm grid: portability. The MCP server you build serves Claude Code, Cursor, Copilot, Codex, and whatever ships next year. The skills your librarian writes run across tools. A year ago, changing agent tools meant rebuilding your jig. Now the tool churn problem is cheaper to manage, because the expensive asset, your encoded design knowledge, travels.
What the teams furthest along are shipping
There’s now enough public work to see the pattern. A sample:
| System | What agents get | The practice worth stealing |
|---|---|---|
| Meta Astryx (open source, beta, June 2026) | 150+ React components, a CLI and MCP that return typed JSON docs, props, examples, and templates. astryx init writes agent instruction files into your project. |
A gap-report command for agents to log missing components, and a “vibe tests” harness that measures agent output against the system. “We test conventions rather than assert them.” |
| GitHub Primer | An MCP server with separate tools for component API, examples, usage guidelines, accessibility guidelines, patterns, and tokens. | Token lookup by intent, plus lint_css and an alt-text reviewer so agents can check their own work. The Primer Brand server is version-aware. |
| Atlassian Design System | An MCP server (early access), an agent skill, and a DESIGN.md, all generated from one structured source. | Schemas live in TypeScript beside the code, so the agent-facing content can’t drift. They benchmarked every delivery method. |
| IBM Carbon | Carbon MCP: components, tokens, icons, guidance, and code across React and Web Components. | Migration (v10 to v11, and from other systems) is on the roadmap as an agent task. |
| Storybook | An MCP server reading a generated component manifest: props, stories as examples, plus tools to write stories and run tests. | Agents verify props against documented stories instead of guessing, and run accessibility tests in a fix-and-retest loop. |
| Figma | Figma’s MCP server, with Code Connect mappings, variables, and a generated design-system rules file. | Code Connect maps each Figma component to its real code component, so design-to-code uses your library instead of re-creating it. |
| SmartHR | 104 component guides and 22 pattern guides as agent skills, shipped as a plugin. No MCP server. | Guides are generated from component metadata and ESLint rule docs, so do’s and don’ts match what the linter enforces. |
| v0 | Imports a design system from repo, Figma, and docs, saves it as a skill, and builds a starter app to prove it understood. | A grounding rule: “If a component, prop, or token cannot be verified from the sources, v0 should not use it.” |
Read across the rows and the convergence is obvious. Every one of these teams broke the system into the same handful of parts, made each part machine-readable, delivered it on demand, and gave the agent a way to check its work.
What is an agent-ready design system?
I’ve divided this into six parts. The first four are content: what your system knows. The last two are infrastructure: how agents get it and how you know they used it correctly.
1. Tokens: the only legal values
Tokens are what make generated code clean. An agent that styles with color.border.critical produces something that themes, flips to dark mode, and survives a rebrand. An agent that styles with red-500 produces a liability. Every other part of the system references tokens, so they come first.
- Use the DTCG format. It’s stable, vendor-neutral, and exports to everything else (CSS variables, Tailwind, platform code, DESIGN.md).
- Separate primitives from semantics. Primitives hold the raw palette and scale. Semantic tokens hold decisions (
color.text.subtle,space.inset.card). Components reference semantic tokens only. That one rule is what makes theming work without the agent thinking about it. - Name by purpose.
color.border.criticaltells an agent when to use it.red-500tells it nothing. - Mark status. Introduced, deprecated, replaced-by. Agents can’t tell a legacy token from a current one unless you say so.
- Make raw values a lint error. Then “use tokens” is enforced on every build.
2. Component metadata: the contract, as data
Prose docs tell a person what a component is. Metadata tells an agent what it’s allowed to do. Every component needs a structured record:
- props with types, defaults, allowed values, and constraints
- variants, sizes, and states
- composition rules: what it can contain, what it can sit inside
- the tokens it binds to
- an accessibility contract
- status (stable, beta, deprecated) with the replacement named
- import path and version
Generate it from source wherever you can. This is the single most important practice. Atlassian keeps its schemas in TypeScript beside the components. Astryx’s doctor command checks documented props against the actual TypeScript props. SmartHR generates guidelines from metadata and lint rules. Hand-maintained metadata drifts, and an agent will trust drifted metadata completely.
Name components by purpose, too. ConfirmDestructiveAction carries intent an agent can pattern-match to. ModalAlt2 doesn’t.
3. Usage guidance: judgment, written as rules
This is the part most systems are weakest on, and the part agents need most. Metadata says what a component can do. Usage guidance says when it should.
- Use when / use instead. “Use Button for actions in the current view. For navigation, use Link. For on/off settings, use Switch.” Agents are constantly choosing between near neighbors. Tell them how.
- Do’s and don’ts that are checkable. “One primary button per view” is a rule an agent can follow and a reviewer can verify. “Use primary buttons thoughtfully” isn’t.
- Content standards. Label length, casing, verb-first, error-message structure. Atlassian’s agent-facing content was written with content designers, which is the right call: the words in a component are part of its contract.
- Chunked per component. Retrieval works on small pieces. A forty-page “Buttons and Actions” doc gets loaded whole or not at all.
4. Example patterns: what the agent will actually imitate
Models learn more from one good example than from a page of rules. Examples are your highest-leverage content and the easiest to neglect.
- Canonical examples per component. Three is a reasonable floor: the common case, a tricky state, and a composition with neighbors. Storybook’s MCP returns a component’s first three stories for exactly this reason.
- Page-level patterns. Most real requests are bigger than a component: a settings page, a data table with filters, an empty state, a destructive confirmation flow. Primer exposes patterns as their own tools. Astryx ships templates. SmartHR has 22 pattern guides. This is where your system’s taste lives.
- Keep examples compiling. An example that references a removed prop teaches the agent to use a removed prop. Test examples like code, because they are code.
Here’s what parts 1 through 4 look like together for a single component. The format is illustrative: the metadata is the point.
component: Button
status: stable # stable | beta | deprecated
since: 4.2.0
import: "@acme/ds/Button"
purpose: Triggers an action in the current view.
props:
variant:
type: enum
values: [primary, secondary, subtle, danger]
default: secondary
rule: One primary per view. Danger only for destructive, irreversible actions.
label:
type: string
required: true
rule: Verb first, sentence case, three words or fewer.
size:
type: enum
values: [sm, md, lg]
default: md
icon:
type: IconName
required: false
tokens:
background: color.action.primary.bg
text: color.action.primary.text
radius: radius.control
accessibility:
- Icon-only buttons require an aria-label.
- Touch targets are at least 44×44 px.
use_when: The user commits or triggers something in the current view.
use_instead:
navigate to another page: Link
toggle a setting: Switch
confirm a destructive action: patterns/destructive-confirmation
examples:
- stories/button--default
- stories/button--loading
- patterns/form-footer
5. Delivery: the MCP server, plus a few signposts
Content in a repo doesn’t help an agent that can’t reach it. Delivery has a primary channel and several supporting ones:
- An MCP server for on-demand retrieval. This is the main channel, and the next section covers how to design one.
- Skills for procedures that span many components: build a page from a pattern, scaffold a new component, migrate a legacy screen. 1Password wrote eight narrow skills for exactly these jobs. Knowledge comes from the server; procedure comes from the skill.
- An AGENTS.md section in every consuming repo that says, in effect: for any UI work, use the design-system server; never use raw values; report gaps instead of inventing components. Astryx writes this section for you on install.
- DESIGN.md as an export for tools that can’t use MCP or skills.
- llms.txt on your docs site, which is cheap to add and low-value (more on that below).
6. Enforcement and feedback: how you know it worked
- A review tool the agent can call. Primer’s Brand server checks generated JSX and CSS for unknown components, invalid props, and hardcoded values. The agent runs it before handing work back, and catches its own mistakes.
- Lint in CI. The same rules, enforced on every pull request regardless of who or what wrote the code.
- Accessibility tests wired into the loop, as Storybook does with its test runner.
- Gap reporting. When the agent needs something the system doesn’t have, it should say so rather than improvise. Astryx’s
gap-reportdoes this. Every report is design-system intake, which is a better signal of what to build next than most roadmaps. - Evals. Astryx’s vibe tests run the same prompts against the system and against baselines, then score the output. That’s how you measure “agent-ready.”
Designing the design-system MCP server
If you’re building one, as my team is, here’s what the public work suggests.
Build your tools around the questions agents ask. Your docs site is organized for browsing. Agents work by asking: “what components exist?”, then “what are this one’s props?”, then “show me an example.” Expose that sequence directly, with small responses at each step. This is progressive disclosure, the same principle that makes Agent Skills efficient: load the index first, the detail only when needed.
A starter tool set, modeled on Primer and Astryx:
| Tool | Returns | Why the agent needs it |
|---|---|---|
list_components |
Name, one-line purpose, status | Discovery without loading everything |
get_component |
The metadata record: props, tokens, accessibility, status | The contract |
get_examples |
Canonical code examples and stories | What it will imitate |
get_usage |
Use when, use instead, do’s and don’ts, content rules | Judgment, as rules |
list_patterns / get_pattern |
Page-level compositions | Requests bigger than one component |
find_tokens |
Tokens matched by intent (“critical border,” “card padding”) | Kills raw values at the source |
review |
Unknown components, invalid props, raw values, accessibility issues | Self-check before handing back |
report_gap |
Logs a missing component or pattern to intake | The escape valve |
Keep responses small and structured. Context isn’t free. Storybook’s docs warn that excessive or misleading context degrades agent performance, and they let you tag components out of the manifest. Return the smallest useful record.
Make it version-aware. An agent working in a repo pinned to v4 should get v4’s API. Primer’s Brand server reads the docs of the installed package version for exactly this reason.
Pair it with a skill. The server knows what’s in the system. A skill knows how your team builds with it: start from a pattern, check usage before choosing a variant, run review before finishing. This isn’t a one or the other choice. Atlassian uses both.
Then measure it, because the delivery method matters more than you’d expect. Recall the foreshadowing above: Atlassian ran a production-style task (build a login screen) four ways and published the averages:
| Setup | Avg. tokens | Avg. time | Avg. turns |
|---|---|---|---|
| No design-system context | 4.20M | 6m 19s | 43 |
| ADS MCP server | 3.75M | 5m 1s | 35.1 |
| ADS agent skill | 4.43M | 5m 23s | 36 |
| DESIGN.md alone | 7.21M | 6m 46s | 45.3 |
The MCP server was the cheapest and fastest. DESIGN.md alone used about 92% more tokens than MCP, took longer than having no context at all, and led agents to re-create existing components instead of importing them, because a single file describes what components look like rather than pointing to the real ones. It also had to be cut to fit: Atlassian’s full guidance runs about 2.5 MB, and the DESIGN.md came in around 80 KB. In a separate benchmark, structured content behind the MCP server produced more accurate code with fewer errors, tokens, and tool calls than agents working without it.
Atlassian is careful to say these results aren’t conclusive; different models, prompts, and systems will vary. Their conclusion is still the right one: DESIGN.md is “not a replacement for richer design system tooling.” It’s genuinely useful for visual direction, quick prototypes in unfamiliar tools, and theming. Generate one. Just generate it from your source, as an export.
One source, every surface
The practice that ties all of this together is what Atlassian advises: avoid creating another source of truth.
Your design system already has too many copies of itself: the Figma library, the code package, the docs site, the Storybook, the Confluence pages nobody has updated since the last rebrand. Adding agent-facing content as another copy guarantees drift, and agents trust drifted content completely. Instead:
- One structured source, ideally beside the component code, holds tokens, metadata, usage, and examples.
- Everything else is generated from it: the MCP server’s responses, the skill, the DESIGN.md, the docs site, the lint rules’ documentation.
- Figma connects through Code Connect, so a designer’s frame maps to real code components, and design-to-code generation uses your library instead of approximating it.
- Agent-facing content updates in the same pull request as the component. Atlassian goes further: when a component changes, agents update the structured content and run evals and code-health checks.
Get this right and the prototype-to-production path collapses. A designer prototyping in v0, Figma Make, or Claude Code queries the same server an engineer queries from Cursor. The prototype is made of production components with production tokens. What reaches engineering is code engineering can keep.
It also changes what the design-system team is. They’re now shipping an API with real consumers, and it needs API-grade ownership: versioning, changelogs, deprecation policy, and evals. Atlassian’s bylines on this work are telling: content designers, a design technologist, and a prompt engineer, working together. Staff accordingly.
Building a reference stack
Each layer is something held constant so the layer above it can be trusted. Ownership maps to the three roles. The design system now runs through three of the five layers, which is why it deserves to be treated as the center of the harness.
| Layer | What it holds | What’s in it | Owner |
|---|---|---|---|
| 5. Output Gate | What leaving the harness must pass | DS review tool, lint in CI, a11y tests, eval rubric, human sign-off | Eval owner + design systems |
| 4. Harness | Where work runs | Agent environment, design-system MCP server, other MCP connectors, permissions, hooks | Agent-ops + design systems |
| 3. Skills | How work is done | SKILL.md folders: build-from-pattern, research-synthesis, ui-copy-variants… versioned |
Skill librarian (contributions: everyone) |
| 2. Context | What the org knows | Design system: tokens, component metadata, usage, example patterns — one source, generated outward. Plus AGENTS.md, product context, voice | Design systems + librarian + discipline leads |
| 1. Model | What runs underneath | Sanctioned models & accounts, versions recorded, change announcements | Agent-ops |
Packaging: MCP config + skills, shipped as one plugin.
Sidecar: a tool registry & evals — what’s approved, what’s measured, what triggers a re-check.
Three observations
- Context and Output Gate are still the ones orgs skip. Everyone has a model. The enthusiastic have skills. Without a shared context layer, every skill runs against a different private retelling of your product, and without an output gate, “done” means whatever the last person felt like. For design orgs, the design system fills most of both, if it’s been made agent-ready.
- The design-system team now owns infrastructure. Layer 4 used to be purely agent-ops territory. A design-system MCP server puts design systems in the runtime path of every agent that touches UI. Plan for uptime, versioning, and access the way you would for any internal API.
- Standard formats don’t come with standard content. The 32mm grid tells you where to drill the holes. It doesn’t tell you what cabinet to build. Every layer in this stack is empty until your team writes down how you design, and that writing is the actual job.
What it looks like in a repo
Two repos matter. The design system’s repo is the source; every product repo consumes it.
design-system/ # the source of truth
├── tokens/ # DTCG; primitives + semantic tiers
├── components/
│ └── button/
│ ├── Button.tsx
│ ├── button.meta.ts # metadata record, beside the code
│ ├── button.usage.md # use when / use instead / do's and don'ts
│ └── button.stories.tsx # canonical examples, tested
├── patterns/ # page-level compositions
├── mcp-server/ # serves all of the above on demand
├── skills/
│ └── build-from-pattern/SKILL.md
├── evals/ # benchmark tasks, run on release + model change
└── dist/
└── DESIGN.md # generated export, never hand-edited
And the section every product repo’s AGENTS.md should carry:
## UI and the design system
- For any UI work, use the `acme-ds` MCP server. Check `get_usage`
before choosing a component or variant.
- Style only with design tokens. Raw color, spacing, or type values
fail CI.
- Start page-level work from a pattern (`list_patterns`).
- If the system doesn't have what you need, call `report_gap`
and build the closest compliant alternative. Don't invent components.
- Run `review` before handing work back.
- No MCP access? Fall back to /design-system/dist/DESIGN.md.
This is design-systems work more than platform work: the same discipline that built your system, aimed at a new reader.
On the horizon: what to pilot, what to watch
Below the stable layer, a second wave of standards is arriving. Most design teams haven’t heard of them yet, and a couple will matter a lot to design systems specifically.
Agent Plugins 1.0
- What it is: A packaging format, published August 2026, that bundles Agent Skills and MCP server configuration into one directory with a
plugin.jsonmanifest. Developed by representatives from Amazon, Cursor, Microsoft, OpenAI, and Vercel; supported in VS Code, Cursor, GitHub Copilot, Codex, and Kiro. Independently governed and not an AAIF project. - Why design cares: This is how a design system ships to every team in one install: server config plus skills, together. SmartHR and Mitsubishi Electric’s Serendie already distribute their systems as installable Claude Code plugins. Agent Plugins is the attempt to make that package portable across tools.
- Call: Pilot. Hooks were left out of v1 because tools disagree on how they work, so expect some tool-specific glue to remain.
A2UI (Agent-to-UI)
- What it is: Google’s open spec for agents to describe an interface declaratively, which the client app then renders with its own native components. v0.9 shipped in April 2026; a v1.0 release candidate is out, with official React, Flutter, Lit, and Angular renderers.
- Why design cares: The agent picks from a catalog of components the client already owns. Your design system becomes the agent’s vocabulary at the protocol level, including for agents that generate UI at runtime inside your product.
- Call: Watch closely if you design agent-facing products. Pilot it if you’re already building generative UI.
MCP Apps
- What it is: An official MCP extension, built by Anthropic, OpenAI, and the MCP-UI project, that lets a tool return interactive UI rendered in a sandboxed frame inside a chat host. Stable spec dated January 2026.
- Why design cares: Your product can now show up as an interface inside someone else’s agent. That surface needs your design system, your states, and your error handling, in a frame you don’t control.
- Call: Pilot if your company exposes an MCP server. Otherwise, watch.
llms.txt
- What it is: A community proposal (Jeremy Howard, 2024) for a Markdown file at a site’s root summarizing its content for language models.
- Why design cares: Design-system docs sites are a natural fit, and some (Carbon among them) publish one.
- Call: Cheap, but don’t count on it. No major model provider has confirmed reading it, and one 2026 server-log study found the vast majority of files received no AI requests at all. Your MCP server does this job properly.
The TL;DR – Agentic design system checklists
For those that don’t like to read, here’s the article in a handy checklist:
Shipping an agent-ready design system
- Tokens are in DTCG format, split into primitive and semantic tiers, named by purpose.
- Components reference semantic tokens only, and raw values fail lint.
- Every component has a structured metadata record, generated from source, not hand-maintained.
- Status is machine-readable. Deprecated components and tokens name their replacements.
- Every component has usage guidance: use when, use instead, checkable do’s and don’ts, content rules.
- Every component has an accessibility contract the agent can read and a test can verify.
- Every component has at least three canonical examples, and they compile and pass tests.
- Your top flows exist as page-level patterns.
- An MCP server delivers all of it with progressive disclosure, small structured responses, and version awareness.
- Agents can check their work and report gaps: a review tool and a gap-report tool, both live.
- There’s one source. DESIGN.md, docs, skills, and Figma mappings are generated or connected, never hand-copied.
- It’s benchmarked. The same tasks run with and without the system, scored on accuracy, tokens, and turns, re-run on every major release and model change.
Making a workflow repeatable
A workflow doesn’t get called standard (it doesn’t enter the library or count toward the Pod Score’s workflow-integration dimension) until it passes all ten. Think of it as the woodworker’s careful jig inspection before entering full production.
- Model recorded. The skill names the model and version it was validated against. “Whatever I had open” is the first source of phantom variance.
- AGENTS.md covers it. Rules, file locations, and hand-back checks live in the repo’s AGENTS.md, not in the author’s personal notes or chat history.
- UI work runs through the design system. Components, tokens, and patterns come from the design-system server (or its DESIGN.md export where MCP isn’t available), and output passes the system’s review tool.
- The workflow is a SKILL.md. The description reads like a matching rule, the human review points are marked, and a “bad for” section documents where it fails. The file, not its author, is the source of truth.
- Clean-start test passed. From a fresh environment with only the repo, the workflow runs. No “oh, you also need to…”
- Second-designer test passed. Someone who didn’t build it gets acceptable output on the first attempt, with no verbal coaching. If they don’t, the gap is in the file. Fix the file and retest.
- Second-tool test passed. The same skill and the same design-system server work in a second agent tool with no edits. This proves you built to the standard instead of to one vendor’s quirks.
- Reference set stored. Three sample inputs, their known-good outputs, and the eval owner’s rubric sit beside the skill, graduated from the pile-sorting exercise in the twenty-runs piece, so “acceptable” is something you can show.
- Output gate defined. One sentence at the top of the skill states what the deliverable passes before it leaves the harness: design-system review, lint, rubric score, human sign-off.
- Owner and drift trigger named. A named owner, plus a rule to re-run the reference set when the model underneath or the design system changes. Re-validation is what keeps the library from becoming a museum, because a jig that’s drifted out of square is worse than no jig: it produces confident wrong cuts.
A pod that can tick all ten for even two workflows, on top of a system that passes the first list, will out-produce a pod holding every design tool license on the market, and do it repeatably, which is the whole point.
Craft must be repeatable AND predictable
Back to the second woodworker, and the moment that pays for the jig: the customer who orders forty chairs. Freehand craft, however good, can’t say yes to forty chairs. The jig can, in a form that freelance woodworkers can use to fill the order after its designer goes home.
That’s what your org is being asked for: a strong prototype per pod, per sprint, at a quality bar someone wrote down, built from the same parts that engineers use. You already own the jig that makes that possible. It’s been sitting in your design system the whole time, written for a reader who skims.
Rewrite it for the one that doesn’t.
Tools & resources
Agent-ready design systems to study
- Meta Astryx (GitHub, CLI docs): the most complete open example of a system built for agents from the start, including its evaluation approach.
- Primer MCP and Primer Brand MCP: the clearest public tool taxonomy for a design-system server.
- Atlassian, Teaching AI to speak our design language and Atlassian’s DESIGN.md is here: the best published evidence on structured content and delivery methods.
- Carbon MCP, Storybook MCP, and Figma’s MCP server with Code Connect.
- SmartHR Design System and Serendie: two systems distributing skills and servers as plugins. Classmethod’s roundup compares them with Astryx and v0.
- 1Password, Agent-driven design system: narrow skills, an MCP server, and honest lessons about where agents still need humans.
- Murphy Trueman, Your next design system user is an agent: the case for treating your system as an API.
Standards
- Model Context Protocol and the MCP Apps announcement.
- W3C Design Tokens specification.
- Agent Skills and AGENTS.md.
- DESIGN.md and Google’s announcement.
- Agent Plugins 1.0.
- Anthropic, Effective Context Engineering for AI Agents: why the context layer matters.