agent-tool-builder について
AI エージェントが使うツールを設計するためのスキルです。ツールのスキーマや動作を定義する開発者向けに、JSON Schema、説明文、検証、エラー処理、MCP を扱い、安全性と認可の実装も重視します。
主な機能
- 01JSON Schema 設計ガイド
- 02ツール説明文の作成
- 03検証とエラー処理
- 04MCP ツール設計の考慮事項
- 05安全性と認可のテスト
活用シーン
- 01エージェントツールのスキーマ定義
- 02選択に役立つツール説明文の改善
- 03検証とエラー処理の計画
- 04MCP ツールの設計
MCP 対応
新しい標準である MCP に沿ったエージェントツール設計を扱います。MCP ツールの設計を解説しますが、MCP サーバーは提供しません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill agent-tool-builderインストール後、Claude Code で/agent-tool-builderを入力して読み込まれたか確認します。
同梱ファイルreferences/detailed-guide.md
詳細
エージェントツールビルダー
ツールは、AI エージェントが外の世界とやり取りするための手段です。適切に設計されたツールがあれば、エージェントは正常に動作します。一方、設計が不十分だと、幻覚を起こしたり、気づかれないまま失敗したり、トークンを無駄に消費したりします。
このスキルでは、スキーマからエラー処理まで、ツールの設計を扱います。JSON Schema のベストプラクティス、LLM の実際に役立つ説明文の作成、検証、そして AI ツールの共通語になりつつある新興の MCP 標準について解説します。
説明文はツールの選択を導きますが、正しさ、認可、安全性を担保するのは実装です。どちらもテストが必要です。また、モデルが公開されたコードや結果を調べる場合もあります。
詳細ガイド
このスキルを実行する前に、詳細ガイドをお読みください。完全な手順と参考資料が記載されています。安全性、前提条件、検証に関する要件は必須として扱ってください。対象を絞って作業する場合は関連セクションを読み込み、最初から最後まで作業する場合はガイド全体をお読みください。
過去の Python SDK スケッチ
モックのみです。固定の天気情報は合成データであり、現在の予報ではありません。課金が発生する呼び出しを行う前に、SDK のベータ API とアカウントからアクセス可能なモデルを確認し、バージョンを固定してください。ツールには、実行と承認に関する制限付きポリシーが必要です。ランナーは外部への作用を認可しません。
import json
import anthropic
from anthropic import beta_tool
client = anthropic.Anthropic()
@beta_tool
def get_weather(location: str, unit: str = "fahrenheit") -> str:
'''Get the current weather in a given location.
Args:
location: The city and state, e.g. San Francisco, CA
unit: Temperature unit, either 'celsius' or 'fahrenheit'
'''
# Implementation
return json.dumps({"temperature": "72°F", "conditions": "Sunny"})
@beta_tool
def search_web(query: str) -> str:
'''Search the web for information.
Args:
query: The search query
'''
# Implementation
return json.dumps({"results": [], "mock": True})
# Tool runner handles the loop
runner = client.beta.messages.tool_runner(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=[get_weather, search_web],
messages=[
{"role": "user", "content": "What's the weather in Paris?"}
]
)
# Process each message
for message in runner:
for block in message.content:
if getattr(block, "type", None) == "text":
print(block.text)
# Or just get final result
final = runner.until_done()
使用する場面
- ユーザーがエージェントツールについて言及、またはそれを示唆している
- ユーザーが関数呼び出しについて言及、またはそれを示唆している
- ユーザーがツールスキーマについて言及、またはそれを示唆している
- ユーザーがツール設計について言及、またはそれを示唆している
- ユーザーが mcp server について言及、またはそれを示唆している
- ユーザーが mcp tool について言及、またはそれを示唆している
- ユーザーが tool use について言及、またはそれを示唆している
- ユーザーがエージェント用ツールの構築について言及、またはそれを示唆している
- ユーザーが関数の定義について言及、またはそれを示唆している
- ユーザーが input_schema について言及、またはそれを示唆している
- ユーザーが tool_use について言及、またはそれを示唆している
- ユーザーが tool_result について言及、またはそれを示唆している
制限事項
- 上記の説明にある対象範囲に、タスクが明確に該当する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。