The first Agent-Ready audit, in June, scored 37 design systems against five signals and marked 82 of its 185 cells unknown. That is the honest word for “we did not check”, and on a site whose whole pitch is verified evidence it is also a liability: nearly half the grid was a gap. The September re-audit closed 34 of them by reading each system’s repository instead of its documentation. This is what moved, how, and what the method got wrong on the way. The table lives on the Index; the diff against June is on what changed.
01 · The problem with unknown
A docs page can only ever prove presence.
Two of the five signals are files, not endpoints. Code Connect mappings live in a repo. DTCG tokens are JSON in a repo. A remote scan of a docs origin can fetch a handful of guessed URLs and report what it found, but a miss means nothing — the file may simply be somewhere the guess did not reach. So the June audit, correctly, left those cells unknown for almost every system. Correct and useless are not opposites.
02 · The method
Read the whole tree, so absence becomes evidence.
A blobless shallow clone — git clone --filter=blob:none --no-checkout --depth 1 — downloads a repository’s tree without any file contents. Shopify’s Polaris lands in about a second and 408 KB, and yields a complete listing of 4180 tracked paths. Individual files are then read only where a path looks relevant, pinned to the commit that was listed.
Completeness is the point. “No *.figma.tsx among 4180 tracked files” is a finding. “Fetched six URLs, got 404” never was. But the inference only holds for signals that must be in the repo, and the auditor is explicit about which those are:
| Signal | Absence from the tree | Why |
|---|---|---|
| Figma Code Connect | proves no | Mapping files must live in the repository. A complete tree with no *.figma.tsx and no figma.config.* is the answer. |
| DTCG tokens | proves no | DTCG is a JSON serialisation. No JSON file carrying $value and $type means tokens are not published in that format, whatever else ships. |
| MCP server | proves nothing | A server can be hosted anywhere. An in-repo package only counts once npm has seen it. |
| llms.txt | proves nothing | Docs frameworks generate it at build time with no checked-in file. |
| Registry | proves nothing | A shadcn-style registry can be generated from component source that contains no registry.json. |
Only the first two are ever scored no from a tree. The other three are positive-only: a repository cannot disprove something a site serves. The whole rule set is one module, lib/repo-audit.ts, and the same rules run behind the public checker, the quarterly script and the tests.
03 · What moved
22 of 37 systems changed. 5 cells went to yes, 30 unknowns settled as no, nothing was retracted.
The correction that matters most is Primer. The June audit recorded no MCP server for GitHub’s design system. The tree has one at packages/mcp, and npm confirms it is published as @primer/mcp@1.1.0. The headline signal, on a system a great many teams build against, and the Index had it backwards. The evidence link in the table now points at the package manifest at the audited commit.
Carbon moved furthest. Its tokens declare $schema: https://tr.designtokens.org/format/ — not “DTCG-shaped”, the actual schema — and the tree holds 155 Code Connect files, each importing @figma/code-connect. Two unknowns became two yeses, and Carbon is now the only system at 4/5, ahead of shadcn/ui. Helios and Backpack picked up confirmed DTCG the same way.
The other 30 movements are the quiet kind: systems that were unknown on Code Connect or DTCG and are now no, because their complete trees contain neither. Polaris, Ant Design, Spectrum, Gestalt, Paste, Mantine, PatternFly. None of these is a criticism — Spectrum publishes tokens, in the pre-spec Style Dictionary shape, and that distinction is exactly what the signal measures. It is simply the first time the Index could say so rather than shrug.
Totals now: 12 of 37 ship a first-party MCP server, 10 an llms.txt, 6 confirmed DTCG, 3 Code Connect, 1 a CLI-installable registry. 19 of 37 still score zero.
04 · What the auditor got wrong
Three positives were false, and the script was fixed rather than the data fudged.
The first sweep reported an MCP server for Helios. There is one, complete, at packages/mcp — at version 0.0.0 and unpublished, so no agent can register it. In-repo is intent; published is a shippable artifact; the signal measures the latter. The rule became “only if npm has seen it”.
It reported DTCG tokens for Helios too. The file it cited sits under packages/tokens/src/carbon-extracted: IBM Carbon’s palette, vendored in. Citing it would have credited HashiCorp for Carbon’s spec adoption. Paths that look vendored, extracted or imported now score below anything else.
And it reported no DTCG for MUI after scanning 150 of a much larger set of JSON files. Saying no there claims more than was checked. A capped scan now reports unknown — the word the whole exercise was trying to get rid of, kept where it is still the honest one.
A fourth catch was in the data, not the script. Two recorded repositories are not the system’s implementation at all: Vercel’s geist-font holds a typeface, and the BBC’s gel builds documentation. Auditing them produced confident negatives about component sets that are not public. The links module now carries holds: “typeface” | “docs” and the auditor refuses to score either. Every one of these was caught by checking the positives by hand before they were written, which is why the quarterly run opens a pull request instead of pushing to main.
05 · Score your own
The same rules, on your system, in seconds.
The Agent-Ready Check takes a docs URL, and now a public GitHub repo. The origin scan settles what a site serves — llms.txt, the registry, the MCP endpoint. The tree settles what a repo contains — Code Connect and DTCG, either way. A yes from either side wins. It is one request from a script:
curl -s -X POST https://www.designsystems.one/api/agent-ready-check \
-H "Content-Type: application/json" \
-d '{"url":"your-design-system.dev","repo":"owner/repo"}' | jq '{score, checks}'06 · Cadence
Quarterly, on a runner, as a pull request.
Reading every recorded repository is now cheap enough to schedule. A GitHub Actions workflow re-runs the audit on the first of March, June, September and December, applies what it can prove, verifies the site still builds, and opens a PR with every finding listed above a note saying the positives need a human. The Index is the only dataset in this category that is re-audited on a schedule against first-party evidence; a one-off census cannot make that claim, however good its first pass.
The data
Every score, every evidence URL and the commit it was read at are open — JSON and CSV, CC BY 4.0. Baseline 2026-06-10, re-audited 2026-09-04. If your system is scored wrong, the evidence is the link in the row — tell us and it is re-checked within the cycle.