Install
openclaw skills install agent-friendly-designDesign websites and applications that AI agents can consume, navigate, and interact with. Use when building any site, app, or product that agents will use as an end-user — not just crawl or index. Covers semantic structure, accessibility-as-agent-interface, machine-readable data, API-first patterns, and the emerging protocols (llms.txt, MCP, NLWeb, A2UI) that make sites agent-ready. Triggers on: agent-friendly, agent-readable, agent-accessible, AX, agent experience, agentic web, dual-interface, machine-readable, llms.txt, MCP integration, NLWeb, accessibility tree, ARIA for agents, structured data, JSON-LD, Schema.org, API-first design, build for agents, agent-ready.
openclaw skills install agent-friendly-designhow to build sites and apps that AI agents can actually use.
most design guidance is about agents building UI. this skill is about agents consuming UI. the audience for your site is no longer just humans — automated traffic surpassed human traffic in 2024 (51% of all web interactions). agents browse, compare, purchase, research, and interact on behalf of users.
if your site is invisible to agents, you're invisible to a growing majority of the web.
the accessibility tree — originally built for screen readers — is becoming the primary interface between AI agents and your website. OpenAI's Atlas explicitly uses ARIA tags to interpret page structure. Microsoft's Playwright MCP provides accessibility snapshots, not screenshots. even vision-first agents (Anthropic Computer Use, Google Mariner) are incorporating accessibility data for reliability.
building for agents and building for accessibility are the same work. every improvement you make for one benefits the other.
agents can't "see" your layout. they read structure. div soup is invisible.
<button>, <nav>, <main>, <article>, <section>, <header>, <footer>, <aside><h1> through <h6>, no skipped levels<label> elements explicitly associated with form inputs (use for attribute)<table> for tabular data with <thead>, <th>, and scope attributes<a> elements, buttons are <button> elements. never <div onclick><form> for forms, with <fieldset> and <legend> for groups<img alt> text (not "image1.png")test: disable CSS. can you still understand the page? if yes, agents can too.
ARIA supplements semantic HTML — it doesn't replace it. use it when native elements can't express the interaction.
aria-label on buttons and links that lack visible text (icon buttons, close buttons)aria-expanded on toggles, dropdowns, accordionsaria-live regions for dynamic content agents need to notice (status messages, notifications)role attributes only when there's no native element (e.g., role="tablist", role="dialog")aria-describedby for complex form fields that need additional contextaria-hidden="true" on decorative elements agents should ignoredon't do: put ARIA on everything. over-labeling creates noise. if the native element already communicates the role, skip the ARIA.
agents can't interpret visual cues. a grayed-out button means nothing if disabled isn't set.
disabled attribute on inactive controlsaria-selected, aria-checked, aria-pressed for toggle statesaria-busy="true" on containers updating contentaria-invalid="true" on fields with validation errors, plus aria-errormessage linking to the error text::after pseudo-elements)aria-current="page"the rule: if a human can tell the state by looking, an agent should be able to tell the state by reading the DOM.
helps agents understand what your content is, not just how it's structured.
Organization, Product, Article, BreadcrumbList, FAQPage, HowTo schemas as appropriate<script type="application/ld+json"> (preferred over microdata or RDFa)dateModified and datePublished so agents know freshnessa markdown file at /llms.txt that gives LLMs a concise overview of your site. like robots.txt, but for language models.
# Your Project Name
> Brief description of what this site/product does.
## Docs
- [Getting Started](https://yoursite.com/docs/getting-started): How to set up...
- [API Reference](https://yoursite.com/docs/api): Full API documentation...
## Optional
- [Changelog](https://yoursite.com/changelog): Recent updates...
.md to URLs if possible)agents can't all execute JavaScript. many rely on raw HTML.
robots.txt to allow known AI user-agents (ChatGPT-User, OAI-SearchBot, Googlebot, etc.)sitemap.xmlagents automate by finding patterns. inconsistency breaks them.
if agents can get data without scraping HTML, everyone wins.
<title> heavily)you're building two interfaces on one page:
human interface: visual hierarchy, color, typography, whitespace, motion, delight agent interface: semantic structure, ARIA roles, JSON-LD, predictable controls, API endpoints
they don't conflict. a well-structured semantic page is easier for humans AND agents. the dual-interface is additive, not a trade-off.
| protocol | what it does | status |
|---|---|---|
| llms.txt | markdown site overview for LLMs | adopted by many, simple to implement |
| MCP | direct tool access for agents (no browser needed) | growing fast, Anthropic-led |
| NLWeb | natural language queries against your data | Microsoft open-source, early |
| A2UI | agent-driven native UI components | Google, early spec |
| AGENTS.md | project-level agent instructions | community adoption growing |
after building or auditing a site for agent-friendliness:
the web is shifting from page-driven to action-driven. designing for agents isn't future-proofing — it's building for today's traffic.