Claude Agent Skills APIガイド:Claude APIでスキルを使う方法
Claude Agent Skills APIガイド — Agent SkillsをClaude APIで使用する方法を学びましょう。Python、TypeScript、cURLのコード例を含むClaude Agent Skills APIの完全ガイドです。

この記事は、Anthropicの公式ドキュメント「Using Agent Skills with the API」に基づいています。
Claude Agent Skills APIは、整理されたフォルダに格納された指示、スクリプト、リソースを通じてClaudeの機能を拡張します。このClaude Agent Skills APIガイドでは、ビルド済みおよびカスタムのAgent SkillsをClaude APIで使用する方法を説明します。
Claude Agent Skills APIの概要
Claude Agent Skills APIは、コード実行ツールを介してMessages APIと統合されます。Anthropicが管理するビルド済みのAgent Skillsを使用する場合でも、アップロードしたカスタムAgent Skillsを使用する場合でも、Claude Agent Skills APIの統合方法は同じです。どちらもコード実行が必要で、同じcontainer構造を使用します。

Claude Agent Skills API:Anthropic Skillsとカスタムスキルの比較
| 項目 | Anthropic Skills | カスタムスキル |
|---|---|---|
| Type値 | anthropic | custom |
| スキルID | 短縮名: pptx, xlsx, docx, pdf | 生成値: skill_01AbCdEfGhIjKlMnOpQrStUv |
| バージョン形式 | 日付ベース: 20251013 または latest | エポックタイムスタンプ: 1759178010641129 または latest |
| 管理 | Anthropicがビルド・メンテナンス | Skills APIでアップロード・管理 |
| 利用可能性 | 全ユーザーが利用可能 | ワークスペースに限定 |
Claude Agent Skills APIの前提条件
Claude Agent Skills APIを使用するには、以下が必要です:
- Anthropic APIキー(コンソールから取得)
- Betaヘッダー:
code-execution-2025-08-25- コード実行を有効化(Skillsに必須)skills-2025-10-02- Skills APIを有効化files-api-2025-04-14- コンテナへのファイルアップロード・ダウンロード用
- コード実行ツールがリクエストで有効化されていること
Claude APIでAgent Skillsを使用する
コンテナパラメータ
Claude Agent Skills APIでは、Messages APIのcontainerパラメータでAgent Skillsを指定します。1リクエストあたり最大8つのAgent Skillsを含めることができます。
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [{"type": "anthropic", "skill_id": "pptx", "version": "latest"}]
},
messages=[
{"role": "user", "content": "Create a presentation about renewable energy"}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
TypeScriptでの同等コード:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const response = await client.beta.messages.create({
model: "claude-sonnet-4-5-20250929",
max_tokens: 4096,
betas: ["code-execution-2025-08-25", "skills-2025-10-02"],
container: {
skills: [{ type: "anthropic", skill_id: "pptx", version: "latest" }]
},
messages: [{
role: "user",
content: "Create a presentation about renewable energy"
}],
tools: [{ type: "code_execution_20250825", name: "code_execution" }]
});
生成されたファイルのダウンロード
Skillsがドキュメントを作成すると、レスポンスにfile_id属性が含まれます。Files APIを使用してこれらのファイルをダウンロードできます:
- Skillsがコード実行中にファイルを作成
- レスポンスに各作成ファイルの
file_idが含まれる - Files APIを使用して実際のファイルコンテンツをダウンロード
# ステップ1:Skillを使用してファイルを作成
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}]
},
messages=[
{"role": "user", "content": "Create an Excel file with a budget spreadsheet"}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# ステップ2:レスポンスからファイルIDを抽出
def extract_file_ids(response):
file_ids = []
for item in response.content:
if item.type == "bash_code_execution_tool_result":
content_item = item.content
if content_item.type == "bash_code_execution_result":
for file in content_item.content:
if hasattr(file, "file_id"):
file_ids.append(file.file_id)
return file_ids
# ステップ3:各ファイルをダウンロード
for file_id in extract_file_ids(response):
file_metadata = client.beta.files.retrieve_metadata(
file_id=file_id, betas=["files-api-2025-04-14"]
)
file_content = client.beta.files.download(
file_id=file_id, betas=["files-api-2025-04-14"]
)
file_content.write_to_file(file_metadata.filename)
print(f"Downloaded: {file_metadata.filename}")
マルチターン会話
コンテナIDを指定することで、複数のメッセージにわたって同じコンテナを再利用できます:
# 最初のリクエストでコンテナを作成
response1 = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}]
},
messages=[{"role": "user", "content": "Analyze this sales data"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# 同じコンテナで会話を続行
messages = [
{"role": "user", "content": "Analyze this sales data"},
{"role": "assistant", "content": response1.content},
{"role": "user", "content": "What was the total revenue?"},
]
response2 = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"id": response1.container.id, # コンテナを再利用
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
長時間実行オペレーション
Skillsは複数ターンを必要とするオペレーションを実行する場合があります。pause_turn停止理由を処理してください:
messages = [{"role": "user", "content": "Process this large dataset"}]
max_retries = 10
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [{"type": "custom", "skill_id": "skill_01...", "version": "latest"}]
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
for i in range(max_retries):
if response.stop_reason != "pause_turn":
break
messages.append({"role": "assistant", "content": response.content})
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"id": response.container.id,
"skills": [{"type": "custom", "skill_id": "skill_01...", "version": "latest"}],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
複数スキルの使用
1つのリクエストで複数のSkillsを組み合わせることができます(最大8つ):
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{"type": "anthropic", "skill_id": "xlsx", "version": "latest"},
{"type": "anthropic", "skill_id": "pptx", "version": "latest"},
{"type": "custom", "skill_id": "skill_01...", "version": "latest"},
]
},
messages=[
{"role": "user", "content": "Analyze sales data and create a presentation"}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
Claude APIでカスタムAgent Skillsを管理する
Agent Skillの作成
from anthropic.lib import files_from_dir
skill = client.beta.skills.create(
display_title="Financial Analysis",
files=files_from_dir("/path/to/financial_analysis_skill"),
betas=["skills-2025-10-02"],
)
print(f"Created skill: {skill.id}")
print(f"Latest version: {skill.latest_version}")
ZIPファイルや個別のファイルタプルを使用してアップロードすることもできます:
# オプション2:ZIPファイルを使用
skill = client.beta.skills.create(
display_title="Financial Analysis",
files=[("skill.zip", open("financial_analysis_skill.zip", "rb"))],
betas=["skills-2025-10-02"],
)
# オプション3:ファイルタプルを使用
skill = client.beta.skills.create(
display_title="Financial Analysis",
files=[
("financial_skill/SKILL.md", open("financial_skill/SKILL.md", "rb"), "text/markdown"),
("financial_skill/analyze.py", open("financial_skill/analyze.py", "rb"), "text/x-python"),
],
betas=["skills-2025-10-02"],
)
要件:
- トップレベルにSKILL.mdファイルを含める必要があります
- すべてのファイルは共通のルートディレクトリを指定する必要があります
- アップロード合計サイズは8MB以下である必要があります
name:最大64文字、小文字・数字・ハイフンのみdescription:最大1024文字、空でないこと
スキルの一覧表示
# すべてのSkillsを一覧表示
skills = client.beta.skills.list(betas=["skills-2025-10-02"])
for skill in skills.data:
print(f"{skill.id}: {skill.display_title} (source: {skill.source})")
# カスタムSkillsのみを一覧表示
custom_skills = client.beta.skills.list(source="custom", betas=["skills-2025-10-02"])
スキルの取得
skill = client.beta.skills.retrieve(
skill_id="skill_01AbCdEfGhIjKlMnOpQrStUv",
betas=["skills-2025-10-02"]
)
print(f"Skill: {skill.display_title}")
print(f"Latest version: {skill.latest_version}")
スキルの削除
Skillを削除する前に、すべてのバージョンを先に削除する必要があります:
# ステップ1:すべてのバージョンを削除
versions = client.beta.skills.versions.list(
skill_id="skill_01...", betas=["skills-2025-10-02"]
)
for version in versions.data:
client.beta.skills.versions.delete(
skill_id="skill_01...",
version=version.version,
betas=["skills-2025-10-02"],
)
# ステップ2:Skillを削除
client.beta.skills.delete(
skill_id="skill_01...", betas=["skills-2025-10-02"]
)
バージョニング
Skillsは安全な更新のためにバージョニングをサポートしています:
# 新しいバージョンを作成
new_version = client.beta.skills.versions.create(
skill_id="skill_01...",
files=files_from_dir("/path/to/updated_skill"),
betas=["skills-2025-10-02"],
)
# 本番環境の安定性のために特定バージョンを固定
container = {
"skills": [{
"type": "custom",
"skill_id": "skill_01...",
"version": "1759178010641129", # 固定バージョン
}]
}
# 開発時はlatestを使用
container = {
"skills": [{
"type": "custom",
"skill_id": "skill_01...",
"version": "latest",
}]
}
Claude Agent Skills APIがスキルを読み込む仕組み
Claude Agent Skills APIでコンテナにAgent Skillsを指定すると:
- メタデータの検出:Claudeはシステムプロンプトで各Skillのメタデータ(名前、説明)を確認します
- ファイルの読み込み:Skillファイルがコンテナ内の
/skills/{directory}/にコピーされます - 自動使用:Claudeはリクエストに関連するSkillsを自動的に読み込んで使用します
- 組み合わせ:複数のSkillsが複雑なワークフローのために連携します
段階的開示アーキテクチャにより、効率的なコンテキスト利用が実現されます。Claudeは必要な時にのみ完全なSkill指示を読み込みます。
ユースケース
組織向けスキル
- ブランド&コミュニケーション:企業固有のフォーマットを適用し、テンプレートに沿ったコミュニケーションを生成
- プロジェクト管理:企業固有のフォーマットでノートを構造化し、標準化された会議レポートを作成
- ビジネスオペレーション:企業標準のレポートを作成し、分析手順を実行
個人向けスキル
- コンテンツ作成:カスタムドキュメントテンプレート、専門的なフォーマット
- データ分析:カスタムデータ処理パイプライン、専門的なビジュアライゼーション
- 開発:コード生成テンプレート、テストフレームワーク、デプロイワークフロー
例:財務モデリング
ExcelとカスタムDCF分析Skillsを組み合わせる:
dcf_skill = client.beta.skills.create(
display_title="DCF Analysis",
files=files_from_dir("/path/to/dcf_skill"),
betas=["skills-2025-10-02"],
)
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{"type": "anthropic", "skill_id": "xlsx", "version": "latest"},
{"type": "custom", "skill_id": dcf_skill.id, "version": "latest"},
]
},
messages=[{
"role": "user",
"content": "Build a DCF valuation model for a SaaS company"
}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
ベストプラクティス
プロンプトキャッシング
コンテナ内のSkillsリストを変更すると、プロンプトキャッシュが無効になります。最高のキャッシュパフォーマンスを得るために、リクエスト間でSkillsリストを一貫させてください。
バージョン管理
- 本番環境:安定性のために特定バージョンに固定
- 開発環境:アクティブなイテレーションには
"latest"を使用
エラーハンドリング
try:
response = client.beta.messages.create(...)
except anthropic.BadRequestError as e:
if "skill" in str(e):
print(f"Skill error: {e}")
else:
raise
Claude Agent Skills APIの制限と制約
- リクエストあたりの最大Agent Skills数:8
- Agent Skillの最大アップロードサイズ:8MB(全ファイル合計)
- 実行コンテナではネットワークアクセス不可
- ランタイムでのパッケージインストール不可 — プリインストール済みパッケージのみ利用可能
- 隔離された環境 — 各Claude Agent Skills APIリクエストは新しいコンテナで実行されます


