← Back
[W] Writing

Your next user might be an agent

Most shadcn/ui components are now installed by an AI coding agent, not by a person typing a command.

I run a component library, so that changed how I think about it. A person reads the page, looks at the demo, and copies what they need. An agent fetches a URL, and has to make sense of what comes back. If it can't, it writes the component by hand and gets it wrong.

So here's the same page, for each of them.

The agent's view is the real start of hextaui.com/pricing.md. The person's view is a sketch of the same page.

An agent's experience is real too

The difference in size is hard to believe until you measure it.

/pricing243 KB
/pricing.md16 KB
Uncompressed, measured with curl on November 4, 2026. An agent pays for every byte it reads, in tokens and in how much it can keep in mind.

Most of that HTML is for people, and it's right that it's there. But to an agent it's noise, and if it fetches a page of noise it's likely to skim. So every page on HextaUI has a Markdown version. Add .md to the URL.

What I built

llms.txtThe front door: what this is, when to use it, how to install, and what not to do
.md pagesEvery page, as clean Markdown
RegistryEach component as JSON, with its dependencies as full URLs
MCP serverSearch and read the docs without scraping them
Skill and pluginThe rules of the library, installed into the agent
OpenAPI specFor anything that wants structure
Each one gives an agent less to get wrong.

It's the same craft

What surprised me is how familiar this felt. Each of these is an interface problem that I'd handle the same way for a person.

Tell them what to do. My llms.txt has a section called "Use HextaUI when". It also says things like "Compose with the render prop, not asChild", because agents trained on older code will reach for asChild. That's a tooltip, for a different kind of reader.

Handle the error state. A registry that fails validation fails silently, and the agent quietly writes something by hand. A silent failure is the worst kind of error state, whoever you're designing for.

Make the obvious path the right one. If your Dialog depends on your Button, write out the full URL in registryDependencies. If you only write button, the CLI pulls in shadcn's Button instead. So the shortest way of writing it is wrong, and that's a design bug.

Test it with a real user. Ask an agent to do a task from a clean project and read what it does. It's usability testing. The participant's just very patient and never lies to be polite.

Who gets to design this?

Right now this mostly falls to whoever's closest. It's treated as SEO, or as a docs task, or a bit of plumbing.

I think it should be a design engineer's job. It needs someone who cares what the experience is like for the reader, who can also write the code that delivers it. There's a new reader now, and it needs someone paying attention to its experience.

Next