agent-friendly-design
AIエージェントがウェブサイトやアプリをエンドユーザーとして利用できるよう、構造化されたデータやAPIを活用し、アクセシビリティにも配慮した設計を行うことで、エージェントが理解・操作しやすい環境を構築するSkill。
📜 元の英語説明(参考)
Design 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.
🇯🇵 日本人クリエイター向け解説
AIエージェントがウェブサイトやアプリをエンドユーザーとして利用できるよう、構造化されたデータやAPIを活用し、アクセシビリティにも配慮した設計を行うことで、エージェントが理解・操作しやすい環境を構築するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o agent-friendly-design.zip https://jpskill.com/download/8083.zip && unzip -o agent-friendly-design.zip && rm agent-friendly-design.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/8083.zip -OutFile "$d\agent-friendly-design.zip"; Expand-Archive "$d\agent-friendly-design.zip" -DestinationPath $d -Force; ri "$d\agent-friendly-design.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
agent-friendly-design.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
agent-friendly-designフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
エージェントフレンドリーな設計
AIエージェントが実際に利用できるサイトやアプリを構築する方法。
これが存在する理由
ほとんどの設計ガイダンスは、エージェントがUIを構築することに関するものです。このスキルは、エージェントがUIを消費することに関するものです。あなたのサイトの対象者はもはや人間だけではありません。自動化されたトラフィックは2024年に人間のトラフィックを超えました(すべてのウェブインタラクションの51%)。エージェントは、ユーザーに代わって閲覧、比較、購入、調査、およびインタラクションを行います。
あなたのサイトがエージェントに見えない場合、あなたはウェブの成長する大多数に見えません。
中核となる洞察
もともとスクリーンリーダーのために構築されたアクセシビリティツリーは、AIエージェントとあなたのウェブサイトの間の主要なインターフェースになりつつあります。OpenAIのAtlasは、ページ構造を解釈するために明示的にARIAタグを使用しています。MicrosoftのPlaywright MCPは、スクリーンショットではなく、アクセシビリティのスナップショットを提供します。ビジョンファーストのエージェント(Anthropic Computer Use、Google Mariner)でさえ、信頼性のためにアクセシビリティデータを取り入れています。
エージェント向けに構築することと、アクセシビリティのために構築することは同じ作業です。 一方のために行うすべての改善は、他方にも利益をもたらします。
チェックリスト
1. セマンティックHTML(必須)
エージェントはあなたのレイアウトを「見る」ことができません。彼らは構造を読みます。divのスープは見えません。
- ネイティブ要素を使用する:
<button>、<nav>、<main>、<article>、<section>、<header>、<footer>、<aside> - 適切な見出しの階層:
<h1>から<h6>まで、レベルを飛ばさない <label>要素をフォーム入力に明示的に関連付ける(for属性を使用)- 表形式のデータには
<table>を使用し、<thead>、<th>、およびscope属性を使用 - リンクは
<a>要素、ボタンは<button>要素。決して<div onclick>を使用しない - フォームには
<form>を使用し、グループには<fieldset>と<legend>を使用 - 意味のある
<img alt>テキスト(「image1.png」ではない)
テスト: CSSを無効にします。それでもページを理解できますか?もしそうなら、エージェントも理解できます。
2. ARIA:便利だが、魔法ではない
ARIAはセマンティックHTMLを補完します。置き換えるものではありません。ネイティブ要素がインタラクションを表現できない場合に使用します。
- 可視テキストがないボタンやリンクに
aria-labelを使用(アイコンボタン、閉じるボタン) - トグル、ドロップダウン、アコーディオンに
aria-expandedを使用 - エージェントが気づく必要のある動的コンテンツに
aria-liveリージョンを使用(ステータスメッセージ、通知) - ネイティブ要素がない場合にのみ
role属性を使用(例:role="tablist"、role="dialog") - 追加のコンテキストが必要な複雑なフォームフィールドに
aria-describedbyを使用 - エージェントが無視すべき装飾要素に
aria-hidden="true"を使用
やってはいけないこと: すべてにARIAを配置する。過剰なラベル付けはノイズを作成します。ネイティブ要素がすでに役割を伝えている場合は、ARIAをスキップします。
3. 機械可読な状態
エージェントは視覚的な手がかりを解釈できません。グレー表示されたボタンは、disabledが設定されていない限り意味がありません。
- 非アクティブなコントロールに
disabled属性を使用 - トグル状態に
aria-selected、aria-checked、aria-pressedを使用 - ローディング状態:コンテンツを更新するコンテナに
aria-busy="true"を使用 - エラー状態:検証エラーのあるフィールドに
aria-invalid="true"を使用し、エラーテキストにリンクするaria-errormessageも使用 - 空の状態:実際のDOMコンテンツをレンダリングする(CSSの
::after疑似要素だけではない) - ページネーション:現在のページを
aria-current="page"でマークする
ルール: 人間が見て状態を判断できる場合、エージェントはDOMを読んで状態を判断できる必要があります。
4. 構造化データ(JSON-LD + Schema.org)
エージェントがコンテンツの構造だけでなく、何であるかを理解するのに役立ちます。
- 必要に応じて
Organization、Product、Article、BreadcrumbList、FAQPage、HowToスキーマを使用 <script type="application/ld+json">内のJSON-LD(マイクロデータまたはRDFaよりも推奨)- 構造化データを可視コンテンツと同期させる。キーワードを詰め込まない
- エージェントが鮮度を知るために
dateModifiedとdatePublishedを含める - 製品ページ:価格、在庫状況、レビュー、SKU
- 記事:著者、datePublished、headline、description
5. llms.txt
/llms.txtにあるMarkdownファイルで、LLMにあなたのサイトの簡潔な概要を提供します。robots.txtと同様ですが、言語モデル用です。
# 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...
- クイックコンテキストローディングのために2000トークン未満に保つ
- 重要なページの詳細なMarkdownバージョンにリンクする(可能であれば
.mdをURLに追加) - コンテンツが変更されたときに更新する。古くなったllms.txtは何もないより悪い
- 仕様:https://llmstxt.org
6. クロール可能性とレンダリング
エージェントはすべてJavaScriptを実行できるわけではありません。多くは生のHTMLに依存しています。
- サーバーサイドレンダリング(SSR)または重要なコンテンツの事前レンダリング
- クライアントサイドのみのJavaScriptの背後に重要な情報を隠さない
- 既知のAIユーザーエージェント(ChatGPT-User、OAI-SearchBot、Googlebotなど)を許可するように
robots.txtを更新する - 最新の
sitemap.xmlを維持する - 高速な応答時間(エージェントは10〜30秒でタイムアウトする可能性があります)
- 重要なコンテンツはHTMLソースの上位にある必要があります(エージェントはスクロールしない可能性があります)
7. 予測可能なインタラクション
エージェントはパターンを見つけることによって自動化します。一貫性のなさはそれらを壊します。
- 一貫した命名:「カートに追加」が1つのページのボタンテキストである場合、別のページでは「今すぐ購入」にしないでください
- 標準のHTMLフォームコントロール(入力のように見えるがそうではないカスタムJavaScriptウィジェットではない)
- 類似のページ間で予測可能なIDとクラス名
- 複雑な解除シーケンスを必要とするモーダル、ポップアップ、およびインタースティシャルを避ける
- 閲覧のためのログインウォールを最小限に抑える(可能な場合はゲストチェックアウトを許可する)
- 重要でないフローでCAPTCHAを避ける。エージェントを完全にブロックします
8. APIファーストのパターン
エージェントがHTMLをスクレイピングせずにデータを取得できる場合、誰もが得をします。
- コアデータ(製品、コンテンツ、ステータス)のRESTまたはGraphQLエンドポイント
- OpenAPI仕様を公開し、llms.txtからリンクする
- 直接ツールアクセスのためのMCP(Model Context Protocol)サーバー。エージェントはブラウザの自動化なしでMCPを介してAPIを呼び出すことができます
- NLWeb統合
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
agent-friendly design
how to build sites and apps that AI agents can actually use.
why this exists
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 core insight
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.
the checklist
1. semantic HTML (non-negotiable)
agents can't "see" your layout. they read structure. div soup is invisible.
- use native elements:
<button>,<nav>,<main>,<article>,<section>,<header>,<footer>,<aside> - proper heading hierarchy:
<h1>through<h6>, no skipped levels <label>elements explicitly associated with form inputs (useforattribute)<table>for tabular data with<thead>,<th>, andscopeattributes- links are
<a>elements, buttons are<button>elements. never<div onclick> - use
<form>for forms, with<fieldset>and<legend>for groups - meaningful
<img alt>text (not "image1.png")
test: disable CSS. can you still understand the page? if yes, agents can too.
2. ARIA: useful, not magic
ARIA supplements semantic HTML — it doesn't replace it. use it when native elements can't express the interaction.
aria-labelon buttons and links that lack visible text (icon buttons, close buttons)aria-expandedon toggles, dropdowns, accordionsaria-liveregions for dynamic content agents need to notice (status messages, notifications)roleattributes only when there's no native element (e.g.,role="tablist",role="dialog")aria-describedbyfor complex form fields that need additional contextaria-hidden="true"on decorative elements agents should ignore
don't do: put ARIA on everything. over-labeling creates noise. if the native element already communicates the role, skip the ARIA.
3. machine-readable state
agents can't interpret visual cues. a grayed-out button means nothing if disabled isn't set.
- use
disabledattribute on inactive controls - use
aria-selected,aria-checked,aria-pressedfor toggle states - loading states:
aria-busy="true"on containers updating content - error states:
aria-invalid="true"on fields with validation errors, plusaria-errormessagelinking to the error text - empty states: render actual DOM content (not just CSS
::afterpseudo-elements) - pagination: current page marked with
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.
4. structured data (JSON-LD + Schema.org)
helps agents understand what your content is, not just how it's structured.
Organization,Product,Article,BreadcrumbList,FAQPage,HowToschemas as appropriate- JSON-LD in
<script type="application/ld+json">(preferred over microdata or RDFa) - keep structured data in sync with visible content — don't stuff keywords
- include
dateModifiedanddatePublishedso agents know freshness - product pages: price, availability, reviews, SKU
- articles: author, datePublished, headline, description
5. llms.txt
a 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...
- keep it under 2000 tokens for quick context loading
- link to detailed markdown versions of important pages (append
.mdto URLs if possible) - update when content changes — stale llms.txt is worse than none
- spec: https://llmstxt.org
6. crawlability and rendering
agents can't all execute JavaScript. many rely on raw HTML.
- server-side render (SSR) or pre-render critical content
- don't hide key information behind client-side-only JavaScript
- update
robots.txtto allow known AI user-agents (ChatGPT-User, OAI-SearchBot, Googlebot, etc.) - maintain an up-to-date
sitemap.xml - fast response times (agents may time out at 10-30 seconds)
- important content should be high in the HTML source (agents may not scroll)
7. predictable interactions
agents automate by finding patterns. inconsistency breaks them.
- consistent naming: if "Add to Cart" is the button text on one page, don't make it "Buy Now" on another
- standard HTML form controls (not custom JavaScript widgets that look like inputs but aren't)
- predictable IDs and class names across similar pages
- avoid modals, popups, and interstitials that require complex dismissal sequences
- minimize login walls for browsing (allow guest checkout where possible)
- avoid CAPTCHAs on non-critical flows — they block agents completely
8. API-first patterns
if agents can get data without scraping HTML, everyone wins.
- REST or GraphQL endpoints for core data (products, content, status)
- OpenAPI spec published and linked from llms.txt
- MCP (Model Context Protocol) server for direct tool access — agents can call your API through MCP without browser automation
- NLWeb integration for natural language queries against your data
- A2UI for agent-driven native interfaces (Google's open project — agents send component blueprints that inherit host app styling)
- webhooks for state changes agents need to react to
9. content for agents, not just humans
- write clear, descriptive page titles (agents use
<title>heavily) - meta descriptions that actually describe the page content
- use descriptive link text ("View pricing details") not generic ("Click here")
- break long content into sections with headings
- provide summaries or TL;DRs for dense pages
- don't rely on images alone to convey information — always have text equivalents
10. test with agents
- use browser dev tools to inspect the accessibility tree (Chrome: Accessibility pane in Elements)
- test critical flows with AI browser agents (ChatGPT Atlas, Playwright MCP)
- run Lighthouse accessibility audit — most issues it catches affect agents too
- check that forms can be completed programmatically
- verify that dynamic content updates are reflected in the DOM, not just visually
the dual-interface mental model
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.
routing
- every web project: items 1-3 (semantic HTML, ARIA, machine-readable state) are non-negotiable
- public-facing sites: add items 4-6 (structured data, llms.txt, crawlability)
- products/e-commerce/SaaS: add items 7-9 (predictable interactions, API-first, content optimization)
- full agent-readiness: all 10 items
emerging protocols to watch
| 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 |
compounding
after building or auditing a site for agent-friendliness:
- document which patterns agents struggled with → add to this skill's checklist
- note which ARIA patterns made the biggest difference → share with the team
- track agent traffic in analytics (user-agent strings) → understand actual usage
- test new protocols as they mature (MCP, A2UI) → update this guide
the web is shifting from page-driven to action-driven. designing for agents isn't future-proofing — it's building for today's traffic.