
Anthropic Skillsで始めるAIエージェント開発:Tool Useとの違いと実装パターン
お疲れ様です!IT業界で働くアライグマです!
先日、Anthropicが「Skills」という新しいコンセプトを発表しました。AIエージェント開発に取り組んでいるエンジニアの間で「Tool Use(Function Calling)と何が違うのか」という疑問が広がっています。
「Skillsって結局Tool Useの言い換えでは?」「どう使い分ければいいのか分からない」——こうした声を私のチームでも耳にしました。
この記事では、Anthropic SkillsとTool Useの本質的な違いを整理し、AIエージェント開発における実装パターンを解説します。私自身がプロジェクトで試した知見も交えてお伝えします。
Anthropic Skillsとは何か:Tool Useとの違いを整理する
まず、Anthropic Skillsの基本的な概念を整理しましょう。Skillsは単なる「ツールの呼び出し」ではなく、「業務マニュアル付きの道具箱」として設計されています。
Tool Use(Function Calling)は、LLMが外部関数を呼び出すためのインターフェースです。一方、Skillsは「どのような状況で」「どのような手順で」「どのような判断基準で」ツールを使うべきかという文脈情報を含んでいます。
具体的な違いを整理すると、以下のようになります。
- Tool Use:関数の定義(名前・引数・戻り値)を提供し、LLMが適切なタイミングで呼び出す
- Skills:ツールの使い方に加え、業務コンテキスト・判断基準・エラーハンドリング方針まで含めたパッケージ
OpenAI GPT-5.2の新機能解説:推論モデルとエージェント開発の実践ガイドでも触れましたが、AIエージェント開発では「ツールを呼び出せる」だけでなく「適切に使いこなせる」ことが重要です。ChatGPT/LangChainによるチャットシステム構築実践入門でも強調されているように、エージェントの品質はツールの使い方の精度に大きく依存します。

Skillsを活用するための前提条件
Skillsを効果的に活用するには、いくつかの前提条件を整理しておく必要があります。ここでは、想定読者のスキルレベルと、実装に必要な環境について説明します。
想定読者と必要なスキル
この記事は、以下のような読者を想定しています。
- Claude APIを使ったことがある、または使い始めようとしているエンジニア
- AIエージェント開発に興味があり、Tool Useの基本は理解している
- Python 3.9以上の環境で開発できる
- REST APIの基本的な概念を理解している
Tool Useを使ったことがない方は、まずAnthropicの公式ドキュメントでTool Useの基本を押さえてから、この記事に戻ってくることをおすすめします。SkillsはTool Useの上位概念として設計されているため、Tool Useの理解が前提となります。
利用するライブラリとバージョン
本記事のコード例では、以下の環境を前提としています。
- Python 3.11
- anthropic(公式SDK)1.0以上
- pydantic 2.0以上(型定義用)
- httpx(非同期HTTP通信用)
特にpydanticは、Skillsの入出力スキーマを定義する際に非常に便利です。型安全な設計を行うことで、エージェントの挙動を予測しやすくなり、デバッグも容易になります。
Pydantic v2のバリデーション設計:型安全なAPIとLLMアプリケーションの実装パターンで解説したように、LLMアプリケーションでは型安全な設計が重要です。Python自動化の書籍でも触れられているように、型ヒントを活用することでエージェントの挙動を予測しやすくなります。

Skillsの基本的な実装パターン
ここでは、Skillsを使った基本的な実装パターンを紹介します。私のチームで実際に試した構成をベースに解説します。
Skill定義の基本構造
Skillsは、以下の要素で構成されます。
- name:スキルの識別名
- description:スキルの目的と使用場面の説明
- tools:このスキルで使用するツールのリスト
- instructions:ツールの使い方に関する詳細な指示
コード例:ファイル操作スキルの定義
以下は、ファイル操作を行うスキルの定義例です。
from anthropic import Anthropic
client = Anthropic()
file_management_skill = {
"name": "file_management",
"description": "ファイルの読み書き・検索を行うスキル。ユーザーが指定したパスに対して操作を実行する。",
"tools": [
{
"name": "read_file",
"description": "指定されたパスのファイルを読み込む",
"input_schema": {
"type": "object",
"properties": {
"path": {"type": "string", "description": "読み込むファイルのパス"}
},
"required": ["path"]
}
},
{
"name": "write_file",
"description": "指定されたパスにファイルを書き込む",
"input_schema": {
"type": "object",
"properties": {
"path": {"type": "string", "description": "書き込み先のパス"},
"content": {"type": "string", "description": "書き込む内容"}
},
"required": ["path", "content"]
}
}
],
"instructions": """
ファイル操作を行う際は、以下の手順に従ってください:
1. まずread_fileで既存の内容を確認する
2. 上書きが必要な場合は、ユーザーに確認を求める
3. write_fileを実行する前に、パスが正しいことを再確認する
4. エラーが発生した場合は、具体的なエラーメッセージをユーザーに伝える
"""
}
ポイントは、instructionsフィールドに業務手順を明示的に記述している点です。Tool Useだけでは「何ができるか」しか伝わりませんが、Skillsでは「どう使うべきか」まで伝えられます。
git worktreeとDocker Volumeスナップショットで実現するAIエージェント並行開発環境でも触れましたが、エージェント開発では「安全に試行錯誤できる環境」が重要です。リファクタリング(第2版)でも強調されているように、明確な責務分離がコードの品質を高めます。

Skillsの発展的な活用パターン
基本的な実装を踏まえて、より発展的な活用パターンを紹介します。
複数スキルの組み合わせ
実際のエージェント開発では、複数のスキルを組み合わせて使うことが多いです。以下のグラフは、私のチームで検証した各アプローチの開発効率を比較したものです。
Tool Useのみの場合と比較して、Skillsを導入することで開発効率が約40%向上しました。特に、エラーハンドリングや例外ケースの対応で差が出ました。
ケーススタディ:ドキュメント検索エージェントの改善
私のチームでは、社内ドキュメントを検索するエージェントを開発していました。
状況(Before)
当初はTool Useのみで実装していました。検索ツール、要約ツール、回答生成ツールの3つを定義し、LLMに適切に呼び出させる設計です。しかし、以下の問題が発生しました。
- 検索結果が0件のときに、無限ループに陥ることがあった
- 複数のドキュメントがヒットしたとき、どれを優先すべきか判断が不安定だった
- ユーザーの質問が曖昧なとき、適切な確認を行わずに回答してしまった
行動(Action)
Skillsを導入し、以下の改善を行いました。
- 検索結果が0件の場合は「検索キーワードを変えて再試行」「ユーザーに確認」のどちらかを選ぶ判断基準を明記
- 複数ドキュメントがヒットした場合の優先順位ルール(更新日時、関連度スコア)を設定
- 質問が曖昧な場合は、まず確認質問を行うフローを追加
結果(After)
改善後、エージェントの回答精度が78%から92%に向上しました。特に、曖昧な質問への対応が大幅に改善され、ユーザーからの「的外れな回答が返ってくる」というフィードバックが激減しました。
Mem0でAIエージェントにメモリを持たせる:LangChainと連携した長期記憶の実装パターンでも触れましたが、エージェントの品質向上には「文脈の保持」が重要です。達人プログラマーでも強調されているように、ソフトウェア開発では「暗黙知を明示化する」ことが品質向上の鍵になります。

まとめ
Anthropic Skillsは、Tool Useを拡張した「業務マニュアル付きの道具箱」として設計されています。
この記事で伝えたかったポイントを整理すると、以下の3点です。
- Tool Useは「何ができるか」を定義し、Skillsは「どう使うべきか」まで含めたパッケージ
- Skillsの
instructionsフィールドに業務手順を明記することで、エージェントの挙動が安定する - 複数スキルを組み合わせる際は、判断基準と優先順位を明確にすることが重要
まずは既存のTool Use実装にinstructionsを追加するところから始めてみてください。具体的には、既存のツール定義に使用場面と判断基準を記述したinstructionsを追加し、エラーハンドリングの方針を明記し、複数ツールを組み合わせる場合は優先順位と使い分けの基準を整理してください。小さな改善でも、エージェントの挙動が安定することを実感できるはずです。AIエージェント開発は試行錯誤の連続ですが、Skillsを活用することで「なぜこの挙動になったのか」を追跡しやすくなります。ぜひ、あなたのプロジェクトでも試してみてください。










