A design system AI agents can build with
After a reorganization cut capacity and the work kept growing, I made our design system readable by AI agents, so PMs and agents build on-system UI by default, and engineers build features from it.
- Role
- Design owner, Syntax design system
- Team
- Design-system engineers, a content designer, a platform engineer. PMs, designers, and developers as early users. Sponsored by the CPTO.
- Timeline
- March 2026 → now
- Status
- In use. As of October 2026, the curated index is in review.
Outcomes so far
- ShippedAbout two weeks from first prototype to production: a PM prototyped a redesigned sign-in page on the real design system, and the front-end team built it from that prototype. No baseline: building from a prototype on the real system wasn't a practice here before.
- Decision"Agent-ready design system" became company direction, with my spec as the reference.
- ShippedA couple of dozen prototypes from about fifteen people across design, product, and content. At least two engineering teams built production features from them.
- ShippedA design plugin with 26 skills from six contributors, which other teams build on.
- ShippedIn a small test built to tempt an agent into copying hand-built UI, it did so every time without the setup and never with it. Three runs each, prototypes only.
Fewer people, more work
Syntax is the design system behind Phrase's products. Getting a merged company to adopt it across three tech stacks took three years (Part 1). By early 2026, adoption was finally moving.
In March 2026, a two-week spike showed that an AI agent could build real, on-system UI if the system was written for it. In May, a reorganization cut design, engineering, and QA capacity. The work didn't shrink. It grew. What had been an experiment became the plan.
The system had to keep working without a designer in the room. More UI would be built by PMs, by developers working fast, and by AI agents. The only way to keep that UI on-system was to make the system readable by the things building it.
March 2026
A two-week spike
Sponsored by the CPTO. Can an agent build real, on-system UI? Yes, with the right grounding.
April
A pilot with PMs and designers
First testers, first setup walls, first guides.
May
Reorganization
Design, engineering, and QA capacity cut. The workload went up. The experiment became the plan.
June
The design plugin
Skills that wrap the setup, so the rules arrive by default.
August
Docs agents can read, and a first feature shipped
The docs site replaces a paid docs tool. The sign-in redesign goes from prototype to production.
October
Rules enforced
Lint, edit-time reminders, and docs lookup. Prototypes build on the system by default.
Agents copy what they see
Building it surfaced a problem I hadn't expected. Our codebase was full of custom components the system never designed. Agents read the code around them and treated those components as permission.
I tested it. I asked an agent to add a button to a legacy screen full of hand-built buttons. Without our setup, it copied the hand-built style every time. With it, never. Three runs each, on prototypes, so a small sample, but every run went the same way.
without the setup
- <button type="button" class="btn" @click="duplicate(item)">Duplicate</button>
✗ hand-built· copied the screen's hand-built buttons
with the setup
- <SynButton
- :variant="SynButtonVariant.outline"
- :size="SynButtonSize.small"
- @click="duplicate(item)"
- >
- Duplicate
- </SynButton>
✓ SynButton, from the system· reached for the system's Button
Context engineering: three versions
Knowing the components isn't the hard part. Choosing is. The agent has to decide from whatever is in its context, "this is the right one" or "keep looking," so the real design problem was what to put in that context, and how much.
I chose a coding agent that works inside our repository, on our real Vue components, over tools that generate lookalikes. Then I went through three versions of what it reads before it picks.
The first, manifest-full.json, was a dump of every component and every prop in one file: expensive for the context, and not very effective. The second, manifest-compact.json, was a list of the components, loaded every time; for detail, the agent went back to the full manifest. The third is a curated index. It helps the agent choose with use when and avoid when, and says where each component's details live, including the design, accessibility, and content guidance the first two never had.
- 1
manifest-full.json281 KB
Every component and every prop, in one file
always in context - 2
manifest-compact.json35 KB
A list of the components, loaded every time
always in contextthen fetched for detail: the full manifest - 3
Curated index
Use when, avoid when, and where each component's details live
always in contextthen only the files it pickedmetadata.mdcontent.mdaccessibility.mdtypes.tspattern.md
I judged each version by the output, by cost, and by a few tests. The deciding signal was the custom-component problem: whatever we built had to make agents reach for the system first.
From code to judgment
The notes that made the difference were judgment calls: why this component and not that one, and when a variant stops being right.
That judgment used to live in people's heads. A junior engineer struggled with the same gaps an agent did. It wasn't an AI problem. It was a documentation problem AI happened to expose.

button.json · a note written for agents
- {
- "name": "Button",
- "location": "components/button",
- "useWhen": [
- "An action in a header, toolbar, form, or dialog",
- "The main action needs emphasis (aim for one per area)"
- ],
- "avoidWhen": [
- "A variant already fits: don't hand-style a clickable element",
- "Two primary buttons would compete",
- "An icon-only button has no accessible label"
- ],
- "related": [
- "Button with chevron",
- "Tooltip"
- ]
- }
So the per-component notes grew beyond code: design choices, accessibility, and content guidance, each in a small file the agent loads only when it needs it. Along the way we found that most guidance pages had drifted from the code, and we reconciled them.
Prompt
Project rules
Cached
Index
Every component, where it lives, when to use it, when to avoid it, what's related. Cached.
The agent picks only what it needs
metadata.md
content.md
accessibility.md
types.ts
pattern.md
Output
The people using it
The system's users are people first.
On day one of the pilot, the first testers got stuck on setup, not on the design system. We fixed the guide that morning. Then we built a starter project, and rules that tell the agent its user may never have used a terminal.
From prototype to production. A PM was asked to redesign the sign-in and sign-up pages. They started from the starter project and had a first full page within a few hours. A designer shaped the directions. The front-end team then built the production feature from that prototype, on the same design-system components. About two weeks from first prototype to production.
User flow · A PM's path to production
Step 1
Start a new prototype
The starter project already uses the design system.
Step 2
First full page
On the real design system, within a few hours.
Step 3
Share it as a link
The team reviews a working page at an internal link.
Step 4
In production
The front-end team builds it on the same components, about two weeks after step 1.
The PM's verdict: smooth, but long build sessions got expensive. Within days, the design plugin had a skill that keeps long builds cheap.
That loop was the method. Collect where people stumble, change the system, and watch the next person not stumble there. Another PM's flow exposed copy that broke our content rules and rules the agent forgot, so we added content skills and made the rules enforced instead of advisory.
By October, a couple of dozen prototypes came from about fifteen people across design, product, and content, and at least two engineering teams had built production features from them.
The design plugin grew the same way: 26 small skills from six contributors. I built the plugin and the prototyping, docs, and audit skills; colleagues contributed the rest, including accessibility and content. Colleagues in other teams have built their own plugins on top of it.
Start
New prototype
Sets up a fresh prototype that already uses the design system
Share as a link
Turns a throwaway prototype into a shareable internal link
Design file for any project
Teaches an AI assistant the system's look, with nothing to install
Build
Read the docs from anywhere
Any project or chat can look up the design system
On-voice copy
Writes or reviews interface copy against the content rules
Check
Audit for hand-built UI
Flags hand-built parts the design system already covers
Use SynButton from the design system instead.
Accessibility review
Checks a component against accessibility checklists
Report UX issues
Reviews a live page, then files confirmed issues to the team that owns it
What it didn't fix
The AI setup covers the component library, not the older toolkit products. For those, the agent has to guess, and the guesses show.
The agent exposed that gap instead of closing it. That turned out to be useful. It put a price on the compromise from Part 1 and gave a new argument for migrating those products.
Where it stands
As of October 2026:
- Per-component notes ship with the design system. The curated index is in review.
- Rules are enforced, not advisory: lint, edit-time reminders, and a docs lookup.
- New prototypes build with the system by default.
- An automatic check to keep guidance and code aligned is next.
- "Agent-ready design system" is company direction, with my spec as the reference.
None of this happens without the design-system engineers who built the pipelines, the content designer who wrote the content rules, and the PMs and designers who tested it before it was comfortable.
What I'd take with me
Progressive disclosure works for agents too. Show what's needed to decide, then reveal the detail. Load only what's relevant to the task. It's the oldest pattern in interface design, applied to a new kind of user.