Work

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.

  1. March 2026

    A two-week spike

    Sponsored by the CPTO. Can an agent build real, on-system UI? Yes, with the right grounding.

  2. April

    A pilot with PMs and designers

    First testers, first setup walls, first guides.

  3. May

    Reorganization

    Design, engineering, and QA capacity cut. The workload went up. The experiment became the plan.

  4. June

    The design plugin

    Skills that wrap the setup, so the rules arrive by default.

  5. 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.

  6. 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

  1. <button type="button" class="btn" @click="duplicate(item)">Duplicate</button>

✗ hand-built· copied the screen's hand-built buttons

with the setup

  1. <SynButton
  2. :variant="SynButtonVariant.outline"
  3. :size="SynButtonSize.small"
  4. @click="duplicate(item)"
  5. >
  6. Duplicate
  7. </SynButton>

✓ SynButton, from the system· reached for the system's Button

The new button, as the agent wrote it. Both render as a button. Only one is part of the system. Three runs each; all matched these.

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. 1

    manifest-full.json281 KB

    Every component and every prop, in one file

    always in context
  2. 2

    manifest-compact.json35 KB

    A list of the components, loaded every time

    always in context
    then fetched for detail: the full manifest
  3. 3

    Curated index

    Use when, avoid when, and where each component's details live

    always in context
    then only the files it picked
    metadata.md
    content.md
    accessibility.md
    types.ts
    pattern.md
What the agent has in context when it chooses, and what it fetches afterwards. Dots show relative size: eighty for the full manifest, ten for each list. The two manifests are measured file sizes (280,575 and 35,081 bytes), about eight times apart; the curated index isn't sized. Amber is the guidance for the components it picked.

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.

The Syntax design system docs site: a sidebar of component groups, a search bar, and the Components page showing cards for SynButton and SynButtonGroup.
The docs site I designed, which replaced a paid docs tool. People browse it like this; agents read the same components as small notes, like the one below.

button.json · a note written for agents

  1. {
  2. "name": "Button",
  3. "location": "components/button",
  4. "useWhen": [
  5. "An action in a header, toolbar, form, or dialog",
  6. "The main action needs emphasis (aim for one per area)"
  7. ],
  8. "avoidWhen": [
  9. "A variant already fits: don't hand-style a clickable element",
  10. "Two primary buttons would compete",
  11. "An icon-only button has no accessible label"
  12. ],
  13. "related": [
  14. "Button with chevron",
  15. "Tooltip"
  16. ]
  17. }
Judgment, not specs. The same note helps a junior engineer and an agent.

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.

  1. Prompt

  2. Project rules

    Cached

  3. Index

    Every component, where it lives, when to use it, when to avoid it, what's related. Cached.

  4. The agent picks only what it needs

  5. metadata.md

    content.md

    accessibility.md

    types.ts

    pattern.md

  6. Output

Before, the agent read one big list and one big guide. After, it chooses from a small index, then loads only the files for what it picked.

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

  1. Step 1

    Start a new prototype

    The starter project already uses the design system.

  2. Step 2

    First full page

    On the real design system, within a few hours.

  3. Step 3

    Share it as a link

    The team reviews a working page at an internal link.

  4. Step 4

    In production

    The front-end team builds it on the same components, about two weeks after step 1.

The sign-in redesign, step by step. Same components, same structure; the front-end team rebuilt it in the product codebase from the prototype.

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

Eight of the 26 skills. The audit rule's own message, when it finds a hand-built button: the same mistake the agent made in the test.

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.