# The agent-readiness audit

> A checklist for your design system. Six sections, yes or no answers, and one test at the end that matters more than the other twenty-one.

Source: https://umairalikhatri.com/work/the-agent-readiness-audit/
Author: Umair Ali Khatri
Updated: 2026-08-29

---

[&larr; Back to work](https://umairalikhatri.com/work/)
Agent-ready

# The agent-readiness audit

29 August 2026 · 6 min read

You can find out how agent-ready your design system is in one afternoon.

This is the checklist I run. Six sections, twenty-two questions, every one a yes or a no.

Write the answers down. The noes are the work.

Answer for the system as it is written today, not as you intend it. A rule that lives in someone's head is a no. A rule in a Figma comment is a no.

An agent reads files.

If you want the argument behind the checklist rather than the checklist itself, that is in [agent-ready design systems](https://umairalikhatri.com/work/agent-ready-design-systems/).

## Before you start

Pick one screen your team has already shipped. Something real, with a form, a table and an empty state.

Set it aside. You need it for the last section.

Then open your design system.

## The tokens

Does every colour have a semantic name? color-surface-raised is a yes. grey-200 is a no. Ask an agent for a card background and it reaches for a raw value. Next screen, it reaches for a different one.

Is there one path to each raw value? If both #1B1B1B and color-fg-default sit in your docs, the agent uses whichever it read last.

Are foreground and background stated as pairs? A list of colours is not a palette. color-fg-onBrand on color-bg-brand is a pairing. An agent cannot work out which of your nine greys survives on your brand blue.

Is there a declared contrast minimum, written as a number? WCAG 2.2 success criterion 1.4.3 sets 4.5:1 for normal text and 3:1 for large text at Level AA. If your system names no bar, the agent has nothing to check its own output against.

Do you say what to do when no token fits? Every system runs out. The ones that do not admit it get invented tokens.

## The components

Is each rule written as an instruction? "Buttons feel confident" is a description. "Use the primary button once per screen" is an instruction. Only one of them survives translation.

Are the states enumerated? Default, hover, focus, active, disabled, loading, empty, error. Any state you leave off the list is a state the agent designs from scratch.

Are the do-nots written down? The DESIGN.md spec gives them their own heading, alongside Overview, Colors, Typography, Layout, Elevation, Shapes and Components. A system with no don'ts is a system with no edges.

Does each component have exactly one name? The docs say Card, the Figma library says Surface, the codebase says Panel. The agent picks one and your review picks another.

Is the variant list closed? Say whether those are all the variants or the common ones. An open list is an invitation to invent.

## The behaviour

Is there any procedural instruction at all? Search your docs for a numbered list of steps. Description is not instruction. A system can be complete on how things look and silent on how to work.

Is there an ordered path for one common task? Build a settings page. Add a field to a form. Numbered, in order, start to finish.

Is there a check the agent can run on its own output? A rule with no test is a preference.

Is it stated when the agent should stop? Name the cases it hands back. A new component, a new colour, anything touching consent or payment.

Does your entry point say when to use it, not only what it covers? The SKILL.md spec asks the description field to carry both. The name and the description are the only parts loaded at startup, at around 100 tokens. Get them wrong and the body never loads.

## The provenance

Does anything in your system carry a date? One date, on one file, saying when it was last true.

Does each imported rule name where it came from? A URL, a spec, a ticket. Something a person can open.

Is there a version on the system as a whole? The DESIGN.md spec puts its own version in frontmatter. Its current value is alpha, which is itself useful information.

Is there a named owner? Not a team. A person who decides.

A design system with no dates is a design system an agent will confidently misapply. It has no way to know that your radius changed in March.

## The gaps

Are the missing parts declared as missing? DESIGN.md carries an omitted array in frontmatter, where you list what you left out. Its only required key is name, and its only required content is the primary colour palette. Everything else may be absent, as long as the absence is declared.

Is an unfinished file marked unfinished? skill-kit uses a status field with four values. enriched, downloaded, vendor-only, stub-no-source. A stub with no source behind it says so in its own frontmatter.

Is the marking queryable? A note in prose helps a reader. A field in frontmatter gives you a work list you can filter.

Is deprecated content marked deprecated, and dated? Old rules that read as current are worse than missing rules.

Those two, the omitted array and status: stub-no-source, are the honest precedents. An agent cannot tell a gap from an omission. Silence reads as complete.

## The test

Now take the screen you set aside.

Hand your design system to the agent your team already uses. Ask it to build that screen. Give it nothing else.

No clarifying prompt, no correction, no nudge when you see it going wrong.

Then put its output next to the real one.

What it gets wrong is your audit result. Not what the checklist said. This.

The checklist tells you what is missing on paper. The test tells you what the absence costs. They are rarely the same list, and when they disagree, the test is right.

Run it twice if you have two agents in the building. Where they diverge is where your system is ambiguous rather than incomplete.

## After

You now have a list of noes and one screen that came back wrong.

That is the easy half. The checklist finds the gaps. Closing them is the judgment call, and judgment is the part that does not download.

Which rules survive translation into a file an agent reads. What to cut, because the SKILL.md spec recommends holding the body under 5,000 tokens.

Which of your don'ts are real constraints and which are taste. How to write a rule so that two agents read it the same way.

That is what the [audit](https://umairalikhatri.com/work/) is for. 2 to 3 days. Your system comes back as SKILL.md and DESIGN.md files, tested against the agents your team already uses.

If your team would rather do the writing, the workshop is half a day. They leave with a draft of their own. Talks are the third option, for when the room needs the argument before the work.

None of that is urgent. The checklist is yours either way, and it works without me.

If your design system needs to work with agents, say hello.

Run it on your own system first. The noes are the brief.
[Back to work](https://umairalikhatri.com/work/)
