# Your AI doesn't understand design. So I gave it a library it can read.

> Source: <https://dev.to/voltwake/your-ai-doesnt-understand-design-so-i-gave-it-a-library-it-can-read-5cg0>
> Published: 2026-08-22 06:18:47+00:00

Ask any LLM to "make this landing page look like a high-end Swiss design studio" and you'll get something that *gestures* at the idea — a sans-serif font, some whitespace, maybe a red accent because it half-remembers Müller-Brockmann. It looks AI-generated because it is. The model has read a billion words *about* design but has no grounded, reusable representation of what "Swiss International Style" actually specifies: the exact grid, the type scale, the spacing ramp, the rules for what you must *not* do.

That gap is the whole problem. Models are great at language and bad at design systems, because a design system isn't language — it's a set of constrained values plus the discipline to apply them consistently. So I built the missing piece: a library of real design styles, turned into something a machine can actually consume.

It's called [Curio](https://designbycurio.com). This post is about the part I think is interesting to other builders: **making design machine-readable, and publishing the catalog for agents instead of for humans.**

The insight is boring and that's why it works. Pick any coherent visual language — Bauhaus, Memphis, the Edo woodblock palette, Stripe's product aesthetic — and you can decompose it into:

Once a style is expressed that way, an AI doesn't have to *imagine* the look. It interpolates within a fixed, internally-consistent set of values. The output stops looking like a guess because it isn't one. Each style in Curio is packaged exactly like this — tokens, component specs, and an explicit "avoid" list — as a DESIGN.md file — markdown with YAML frontmatter — that a model can read in one shot ([what is DESIGN.md?](https://designbycurio.com/learn/what-is-design-md)).

```
# excerpt of a design package an agent consumes
meta:
  name: Swiss International Style
  isDark: false
color:
  ink: "<hex>"
  paper: "<hex>"
  accent: "<hex>"   # values intentionally omitted here
type:
  family: "Helvetica Neue, Inter, sans-serif"
  scale: [<px>, <px>, <px>, …]   # 7-step modular scale
rules:
  always: ["strict baseline grid", "flush-left, ragged-right body"]
  never:  ["centered paragraphs", "more than two weights", "decorative type"]
```

Here's the design decision I keep getting questions about. Curio's primary user isn't a person browsing a gallery — it's the **agent** acting on a person's behalf. When someone tells their assistant "design my deck like a 1980s arcade," the agent should be able to *discover* that a matching style exists and *fetch* its tokens, without a human in the loop.

So the catalog is published the way you'd publish for a crawler that thinks:

`llms.txt`

`llms-full.txt`

`index.json`

— the entire catalog as structured data (id, name, tags, color family, era, region, usage), so an agent can filter "give me dark, East-Asian, editorial" without scraping HTML.This costs almost nothing to maintain (it's generated from the same source the site is built from) and it changes who the product is *for*. A human-first directory makes agents scrape and guess. An agent-first directory just answers. If you're building anything an LLM is supposed to consume, I'd push the `llms.txt`

+ open-JSON pattern hard — it's the cheapest "API" you'll ever ship.

There's a second reason to publish structured, citable pages: AI search. When someone asks Perplexity or ChatGPT "where do I find design tokens for a Bauhaus look," the answer comes from indexed, structured pages — not from a JS app that renders an empty shell. Every Curio style has a server-rendered page with the spec in the HTML, schema markup, and a stable URL. The same discipline that makes a page good for Googlebot makes it good for an AI engine citing sources. Designing for "the crawler is now a model" turns out to be the same checklist, just with the bar raised.

Curio has 1,000+ styles right now and grows weekly. Browsing and using it is free; there's a Pro tier for the full set. But honestly, the reason I wrote this is the pattern, not the pitch: **treat design as data, and publish your catalog for the agent, not just the human.** If you try the `llms.txt`

approach on your own project I'd love to compare notes — and if the "why does AI design all look the same" problem is your itch too, I wrote up the longer argument [here](https://designbycurio.com/learn/why-ai-design-looks-generic).

If you want to poke at it: [designbycurio.com](https://designbycurio.com) — and the [ llms.txt](https://designbycurio.com/llms.txt) /

`index.json`
