jpskill.com
🛠️ 開発・MCP コミュニティ

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本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
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
🪟 Windows (PowerShell)
$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. 1. 下の青いボタンを押して agent-friendly-design.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → agent-friendly-design フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

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-selectedaria-checkedaria-pressedを使用
  • ローディング状態:コンテンツを更新するコンテナにaria-busy="true"を使用
  • エラー状態:検証エラーのあるフィールドにaria-invalid="true"を使用し、エラーテキストにリンクするaria-errormessageも使用
  • 空の状態:実際のDOMコンテンツをレンダリングする(CSSの::after疑似要素だけではない)
  • ページネーション:現在のページをaria-current="page"でマークする

ルール: 人間が見て状態を判断できる場合、エージェントはDOMを読んで状態を判断できる必要があります。

4. 構造化データ(JSON-LD + Schema.org)

エージェントがコンテンツの構造だけでなく、であるかを理解するのに役立ちます。

  • 必要に応じてOrganizationProductArticleBreadcrumbListFAQPageHowToスキーマを使用
  • <script type="application/ld+json">内のJSON-LD(マイクロデータまたはRDFaよりも推奨)
  • 構造化データを可視コンテンツと同期させる。キーワードを詰め込まない
  • エージェントが鮮度を知るためにdateModifieddatePublishedを含める
  • 製品ページ:価格、在庫状況、レビュー、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 (use for attribute)
  • <table> for tabular data with <thead>, <th>, and scope attributes
  • 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-label on buttons and links that lack visible text (icon buttons, close buttons)
  • aria-expanded on toggles, dropdowns, accordions
  • aria-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 context
  • aria-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 disabled attribute on inactive controls
  • use aria-selected, aria-checked, aria-pressed for toggle states
  • loading states: aria-busy="true" on containers updating content
  • error states: aria-invalid="true" on fields with validation errors, plus aria-errormessage linking to the error text
  • empty states: render actual DOM content (not just CSS ::after pseudo-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, HowTo schemas 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 dateModified and datePublished so 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 .md to 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.txt to 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.