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

ag-ui

AG-UIのエキスパートとして、AIエージェントとReact UIを繋ぎ、エージェントの思考や行動、ツール利用、状態変化、テキスト生成をリアルタイムに表示し、ユーザーが介入できる豊かなエージェントUIを開発者が構築するのを支援するSkill。

📜 元の英語説明(参考)

You are an expert in AG-UI (Agent-User Interaction Protocol), the open standard by CopilotKit for connecting AI agents to frontend UIs. You help developers stream agent actions, tool calls, state updates, and text generation to React components in real-time — enabling rich agent UIs where users see what the agent is thinking, doing, and can intervene at any step.

🇯🇵 日本人クリエイター向け解説

一言でいうと

AG-UIのエキスパートとして、AIエージェントとReact UIを繋ぎ、エージェントの思考や行動、ツール利用、状態変化、テキスト生成をリアルタイムに表示し、ユーザーが介入できる豊かなエージェントUIを開発者が構築するのを支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

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

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

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o ag-ui.zip https://jpskill.com/download/14603.zip && unzip -o ag-ui.zip && rm ag-ui.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14603.zip -OutFile "$d\ag-ui.zip"; Expand-Archive "$d\ag-ui.zip" -DestinationPath $d -Force; ri "$d\ag-ui.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して ag-ui.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → ag-ui フォルダができる
  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 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

AG-UI — Agent-User Interaction Protocol

あなたは AG-UI (Agent-User Interaction Protocol) の専門家です。AG-UI は、AI エージェントをフロントエンド UI に接続するための CopilotKit によるオープンスタンダードです。開発者がエージェントのアクション、ツール呼び出し、状態更新、およびテキスト生成を React コンポーネントにリアルタイムでストリーミングするのを支援し、ユーザーがエージェントの思考、行動を確認し、あらゆる段階で介入できる、リッチなエージェント UI を実現します。

主要な機能

AG-UI Server (Agent Events)

// server/agent.ts — エージェントイベントを UI にストリームする
import { AgentServer, EventStream } from "@ag-ui/server";

const server = new AgentServer();

server.onRequest(async (request, stream: EventStream) => {
  const { messages, context } = request;

  // thinking 状態を発行する
  stream.emitStateUpdate({ status: "thinking", progress: 0 });

  // テキスト生成をストリームする
  stream.emitTextStart();
  for (const word of "I'll analyze your data now.".split(" ")) {
    stream.emitTextDelta(word + " ");
    await sleep(50);
  }
  stream.emitTextEnd();

  // ツール呼び出しを発行する
  stream.emitToolCallStart("search_database", { query: context.userQuery });
  const results = await searchDatabase(context.userQuery);
  stream.emitToolCallEnd("search_database", results);
  stream.emitStateUpdate({ status: "analyzing", progress: 50 });

  // 分析をストリームする
  stream.emitTextStart();
  const analysis = await generateAnalysis(results);
  for await (const chunk of analysis) {
    stream.emitTextDelta(chunk);
  }
  stream.emitTextEnd();

  // UI レンダリング用のカスタム状態
  stream.emitStateUpdate({
    status: "complete",
    progress: 100,
    charts: [{ type: "bar", data: results.chartData }],
    suggestions: ["Run deeper analysis", "Export to CSV", "Schedule report"],
  });

  stream.end();
});

AG-UI React Client

import { useAgent, AgentProvider } from "@ag-ui/react";

function App() {
  return (
    <AgentProvider url="https://api.example.com/agent">
      <AgentChat />
    </AgentProvider>
  );
}

function AgentChat() {
  const { messages, state, sendMessage, isStreaming, toolCalls } = useAgent();

  return (
    <div className="flex flex-col h-screen">
      {/* エージェントの状態の可視化 */}
      {state.status === "thinking" && (
        <div className="bg-blue-50 p-3 rounded-lg animate-pulse">
          🤔 Agent is thinking... ({state.progress}%)
          <progress value={state.progress} max={100} />
        </div>
      )}

      {/* ツール呼び出し (エージェントが何をしているかを表示) */}
      {toolCalls.map((tc) => (
        <div key={tc.id} className="bg-gray-50 p-2 rounded text-sm">
          🔧 <strong>{tc.name}</strong>: {tc.status === "running" ? "Working..." : "Done"}
          {tc.result && <pre className="mt-1">{JSON.stringify(tc.result, null, 2)}</pre>}
        </div>
      ))}

      {/* メッセージ */}
      {messages.map((msg) => (
        <div key={msg.id} className={msg.role === "user" ? "text-right" : "text-left"}>
          <p>{msg.content}</p>
        </div>
      ))}

      {/* エージェントの状態からの動的な UI */}
      {state.charts?.map((chart, i) => (
        <Chart key={i} type={chart.type} data={chart.data} />
      ))}

      {state.suggestions && (
        <div className="flex gap-2">
          {state.suggestions.map((s) => (
            <button key={s} onClick={() => sendMessage(s)} className="px-3 py-1 bg-blue-100 rounded">
              {s}
            </button>
          ))}
        </div>
      )}

      {/* 入力 */}
      <form onSubmit={(e) => { e.preventDefault(); sendMessage(input); }}>
        <input placeholder="Ask anything..." disabled={isStreaming} />
      </form>
    </div>
  );
}

インストール

npm install @ag-ui/react @ag-ui/server

ベストプラクティス

  1. 状態のストリーミング — 進捗、ステータス、UI コンポーネントの状態更新を発行します。ユーザーはエージェントの思考プロセスを確認できます。
  2. ツール呼び出しの透明性 — ツール呼び出しをリアルタイムで表示します。信頼を構築し、デバッグに役立ちます。
  3. 提案 — 応答後に提案ボタンを発行します。ユーザーを次のアクションに誘導します。
  4. カスタム UI — 状態更新を使用して、チャート、テーブル、フォームをレンダリングします。プレーンテキストよりもリッチになります。
  5. Human-in-the-loop — 破壊的なアクションの前に確認リクエストを発行します。ユーザーが承認または拒否します。
  6. 進捗状況の追跡 — 長いタスクの進捗率を発行します。ユーザーの不安を防ぎます。
  7. フレームワークに依存しない — AG-UI プロトコルは、あらゆるエージェントバックエンド (LangGraph、CrewAI、カスタム) で動作します。
  8. CopilotKit の統合 — AG-UI は CopilotKit を強化します。より高レベルの React コンポーネントには CopilotKit を使用してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

AG-UI — Agent-User Interaction Protocol

You are an expert in AG-UI (Agent-User Interaction Protocol), the open standard by CopilotKit for connecting AI agents to frontend UIs. You help developers stream agent actions, tool calls, state updates, and text generation to React components in real-time — enabling rich agent UIs where users see what the agent is thinking, doing, and can intervene at any step.

Core Capabilities

AG-UI Server (Agent Events)

// server/agent.ts — Stream agent events to UI
import { AgentServer, EventStream } from "@ag-ui/server";

const server = new AgentServer();

server.onRequest(async (request, stream: EventStream) => {
  const { messages, context } = request;

  // Emit thinking state
  stream.emitStateUpdate({ status: "thinking", progress: 0 });

  // Stream text generation
  stream.emitTextStart();
  for (const word of "I'll analyze your data now.".split(" ")) {
    stream.emitTextDelta(word + " ");
    await sleep(50);
  }
  stream.emitTextEnd();

  // Emit tool call
  stream.emitToolCallStart("search_database", { query: context.userQuery });
  const results = await searchDatabase(context.userQuery);
  stream.emitToolCallEnd("search_database", results);
  stream.emitStateUpdate({ status: "analyzing", progress: 50 });

  // Stream analysis
  stream.emitTextStart();
  const analysis = await generateAnalysis(results);
  for await (const chunk of analysis) {
    stream.emitTextDelta(chunk);
  }
  stream.emitTextEnd();

  // Custom state for UI rendering
  stream.emitStateUpdate({
    status: "complete",
    progress: 100,
    charts: [{ type: "bar", data: results.chartData }],
    suggestions: ["Run deeper analysis", "Export to CSV", "Schedule report"],
  });

  stream.end();
});

AG-UI React Client

import { useAgent, AgentProvider } from "@ag-ui/react";

function App() {
  return (
    <AgentProvider url="https://api.example.com/agent">
      <AgentChat />
    </AgentProvider>
  );
}

function AgentChat() {
  const { messages, state, sendMessage, isStreaming, toolCalls } = useAgent();

  return (
    <div className="flex flex-col h-screen">
      {/* Agent state visualization */}
      {state.status === "thinking" && (
        <div className="bg-blue-50 p-3 rounded-lg animate-pulse">
          🤔 Agent is thinking... ({state.progress}%)
          <progress value={state.progress} max={100} />
        </div>
      )}

      {/* Tool calls (show what agent is doing) */}
      {toolCalls.map((tc) => (
        <div key={tc.id} className="bg-gray-50 p-2 rounded text-sm">
          🔧 <strong>{tc.name}</strong>: {tc.status === "running" ? "Working..." : "Done"}
          {tc.result && <pre className="mt-1">{JSON.stringify(tc.result, null, 2)}</pre>}
        </div>
      ))}

      {/* Messages */}
      {messages.map((msg) => (
        <div key={msg.id} className={msg.role === "user" ? "text-right" : "text-left"}>
          <p>{msg.content}</p>
        </div>
      ))}

      {/* Dynamic UI from agent state */}
      {state.charts?.map((chart, i) => (
        <Chart key={i} type={chart.type} data={chart.data} />
      ))}

      {state.suggestions && (
        <div className="flex gap-2">
          {state.suggestions.map((s) => (
            <button key={s} onClick={() => sendMessage(s)} className="px-3 py-1 bg-blue-100 rounded">
              {s}
            </button>
          ))}
        </div>
      )}

      {/* Input */}
      <form onSubmit={(e) => { e.preventDefault(); sendMessage(input); }}>
        <input placeholder="Ask anything..." disabled={isStreaming} />
      </form>
    </div>
  );
}

Installation

npm install @ag-ui/react @ag-ui/server

Best Practices

  1. State streaming — Emit state updates for progress, status, UI components; users see agent's thought process
  2. Tool call transparency — Show tool calls in real-time; builds trust, helps debugging
  3. Suggestions — Emit suggestion buttons after responses; guide users to next actions
  4. Custom UI — Use state updates to render charts, tables, forms; richer than plain text
  5. Human-in-the-loop — Emit confirmation requests before destructive actions; users approve or reject
  6. Progress tracking — Emit progress percentages for long tasks; prevent user anxiety
  7. Framework agnostic — AG-UI protocol works with any agent backend (LangGraph, CrewAI, custom)
  8. CopilotKit integration — AG-UI powers CopilotKit; use CopilotKit for higher-level React components