Agent Skillsは、指示、スクリプト、リソースを整理したフォルダを通じてClaudeの機能を拡張します。このガイドでは、事前構築済みのSkillとカスタムSkillの両方をClaude APIで使用する方法を説明します。
Claude APIでAgent Skillsを使用してドキュメントを作成する方法を10分以内で学びます。
Claudeが発見して正常に使用できる効果的なSkillの書き方を学びます。
Skillはコード実行ツールを通じてMessages APIと統合されます。Anthropicが管理する事前構築済みSkillを使用する場合でも、アップロードしたカスタムSkillを使用する場合でも、統合の形式は同一です。どちらもコード実行を必要とし、同じcontainer構造を使用します。
Skillは、ソースに関係なくMessages APIで同一の方法で統合されます。containerパラメータでskill_id、type、およびオプションのversionを指定すると、コード実行環境で実行されます。
Skillは2つのソースから使用できます。
| 項目 | Anthropic Skill | カスタムSkill |
|---|---|---|
| Type値 | anthropic | custom |
| Skill ID | 短い名前:pptx、xlsx、docx、pdf | 生成されたID:skill_01AbCdEfGhIjKlMnOpQrStUv |
| バージョン形式 | 日付ベース:20251013またはlatest | バージョンID:skver_01AbCdEfGhIjKlMnOpQrStUvまたはlatest |
| 管理 | Anthropicが事前構築および保守 | Skills APIを通じてアップロードおよび管理 |
| 利用可能性 | すべてのユーザーが利用可能 | ワークスペース内でプライベート |
両方のSkillソースはList Skillsエンドポイントから返されます(sourceパラメータを使用してフィルタリングできます)。統合の形式と実行環境は同一です。唯一の違いは、Skillの出所と管理方法です。
Skillを使用するには、以下が必要です。
SkillはClaude APIで一般提供されており、Skills APIでもMessagesリクエストのcontainer.skillsでもanthropic-betaヘッダーは不要です。このガイドの例では、引き続きskills-2025-10-02ベータヘッダー(およびMessagesリクエストではcode-execution-2025-08-25)を送信し、SDKのbeta名前空間を使用しています。両方のヘッダーは有効なオプトインとして残っているため、例は記載どおりに動作しますが、ご自身のリクエストでは省略できます。
Skillはコード実行ツールを必要とするため、そのモデル互換性リストに記載されているモデルを使用してください。
SkillはMessages APIのcontainerパラメータを使用して指定します。リクエストごとに最大20個のSkillを含めることができます。
構造はAnthropic SkillとカスタムSkillの両方で同一です。必須のtypeとskill_idを指定し、特定のバージョンに固定する場合はオプションでversionを含めます。
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5",
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"}],
)Skillがドキュメント(Excel、PowerPoint、PDF、Word)を作成すると、レスポンスにfile_id属性が返されます。これらのファイルをダウンロードするにはFiles APIを使用する必要があります。
動作の仕組み:
file_idが含まれます(レスポンス形式を参照)。Skillが処理する入力ファイルを提供するには、Files APIでアップロードし、コンテナアップロードブロックを使用してリクエストで参照します。
例:Excelファイルの作成とダウンロード
client = anthropic.Anthropic()
# ステップ1: Skillを使用してファイルを作成
response = client.beta.messages.create(
model="claude-opus-5",
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 simple 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":
# 各コンテンツ項目はfile_idを持つbash_code_execution_outputブロックです
for file in content_item.content:
file_ids.append(file.file_id)
return file_ids
# ステップ3: Files APIを使用してファイルをダウンロード
for file_id in extract_file_ids(response):
file_metadata = client.beta.files.retrieve_metadata(file_id=file_id)
file_content = client.beta.files.download(file_id=file_id)
# ステップ4: ディスクに保存
file_content.write_to_file(file_metadata.filename)
print(f"Downloaded: {file_metadata.filename}")追加のFiles API操作:
client = anthropic.Anthropic()
file_id = "file_011CNha8iCJcU1wXNR6q4V8w"
# ファイルのメタデータを取得
file_info = client.beta.files.retrieve_metadata(file_id=file_id)
print(f"Filename: {file_info.filename}, Size: {file_info.size_bytes} bytes")
# すべてのファイルを一覧表示
for file in client.beta.files.list():
print(f"{file.filename} - {file.created_at}")
# ファイルを削除
client.beta.files.delete(file_id=file_id)レスポンスのcontainerオブジェクトには、コンテナのidとexpires_atタイムスタンプが含まれます(有効期間の詳細についてはコンテナの再利用を参照)。コンテナIDを指定することで、複数のメッセージ間で同じコンテナを再利用できます。
client = anthropic.Anthropic()
# 最初のリクエストでコンテナを作成
response1 = client.beta.messages.create(
model="claude-opus-5",
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 a sample sales dataset and analyze it"}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# 同じコンテナで会話を継続
messages = [
{"role": "user", "content": "Create a sample sales dataset and analyze it"},
{
# アシスタントのテキストを引き継ぐ。container.idが実行状態を保持
"role": "assistant",
"content": "\n".join(
block.text for block in response1.content if block.type == "text"
),
},
{"role": "user", "content": "What was the total revenue?"},
]
response2 = client.beta.messages.create(
model="claude-opus-5",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"id": response1.container.id, # Reuse container
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Skillは複数のターンを必要とする操作を実行する場合があります。pause_turnの停止理由を処理してください。
client = anthropic.Anthropic()
messages = [{"role": "user", "content": "Generate and process a large sample dataset"}]
max_retries = 10
response = client.beta.messages.create(
model="claude-opus-5",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
}
]
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# 長時間の操作に対するpause_turnの処理
for _ 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-opus-5",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"id": response.container.id,
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
}
],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)複雑なワークフローを処理するために、単一のリクエストで複数のSkillを組み合わせます。
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5",
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_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
},
]
},
messages=[
{"role": "user", "content": "Analyze sales data and create a presentation"}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Skillバンドルは、トップレベルにnameとdescriptionのYAMLフロントマターを持つSKILL.mdファイルと、サポートスクリプトやリソースを含むディレクトリです。作成方法についてはAPIでAgent Skillsを始めるを参照し、完全な制約については例の後にある要件リストを参照してください。
カスタムSkillをアップロードして、ワークスペースで利用できるようにします。zipアーカイブまたは個別のファイルオブジェクトをアップロードできます。Python SDKには、ディレクトリパスを受け取るfiles_from_dirヘルパーも用意されています。
ファイルは、添付するファイル名(cURL例の;filename=サフィックスおよびSDK例のファイル名引数)によって識別されます。ウォークスルーのSkillの場合、zip -r financial_skill.zip financial_skill/でzipを作成し、zipアップロードオプションのexample_skill.zipプレースホルダーの代わりに使用してください。
zip -r financial_skill.zip financial_skill/
ant beta:skills create \
--file financial_skill.zip \
--beta skills-2025-10-02---
name: financial-skill
description: Docs example skill.
---print("financial analysis helper")要件:
SKILL.mdファイルを含める必要がありますdisplay_nameはオプションです。省略した場合はSKILL.mdのnameから導出されます。明示的な値は最大255文字で、ワークスペース内で一意である必要はありませんname:最大64文字、小文字の英字/数字/ハイフンのみ、XMLタグ不可、予約語(「anthropic」、「claude」)不可description:最大1024文字、空でないこと、XMLタグ不可完全なリクエスト/レスポンススキーマについては、Create Skill APIリファレンスを参照してください。
Anthropicの事前構築済みSkillとカスタムSkillの両方を含む、ワークスペースで利用可能なすべてのSkillを取得します。sourceパラメータを使用してSkillタイプでフィルタリングします。
# すべてのSkillを一覧表示
ant beta:skills list
# カスタムSkillのみを一覧表示
ant beta:skills list --source customページネーションとフィルタリングオプションについては、List Skills APIリファレンスを参照してください。
特定のSkillの詳細を取得します。
ant beta:skills retrieve \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUvSkillを削除すると、そのすべてのバージョンも削除されます。このカスケード動作はGA専用の動作であるため、このガイドの他の例とは異なり、これらはbeta名前空間ではなくGAサーフェスを直接呼び出します。
ant skills delete \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUv >/dev/nullSkillは、更新を安全に管理するためのバージョン管理をサポートしています。
Anthropic Skill:
20251013カスタムSkill:
skver_01AbCdEfGhIjKlMnOpQrStUv"latest"を使用します新しいバージョンは差分ではなく完全なスナップショットです。毎回Skillの完全なファイルセットをアップロードしてください。省略したファイルは引き継がれず、新しいバージョンのSKILL.mdのnameはSkillの既存の名前と一致する必要があります。以下の例では、Skillの作成の完全なfinancial_skill/バンドルを再アップロードします。
# 新しいバージョンを作成
VERSION_NUMBER=$(ant beta:skills:versions create \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUv \
--file financial_skill.zip \
--transform version \
--raw-output)
# 特定のバージョンを使用
ant beta:messages create \
--beta code-execution-2025-08-25,skills-2025-10-02 <<YAML
model: claude-opus-5
max_tokens: 4096
container:
skills:
- type: custom
skill_id: skill_01AbCdEfGhIjKlMnOpQrStUv
version: "$VERSION_NUMBER"
messages:
- role: user
content: Use updated Skill
tools:
- type: code_execution_20250825
name: code_execution
YAML
# 最新バージョンを使用
ant beta:messages create \
--beta code-execution-2025-08-25,skills-2025-10-02 <<YAML
model: claude-opus-5
max_tokens: 4096
container:
skills:
- type: custom
skill_id: skill_01AbCdEfGhIjKlMnOpQrStUv
version: latest
messages:
- role: user
content: Use latest Skill version
tools:
- type: code_execution_20250825
name: code_execution
YAML詳細については、Create Skill Version APIリファレンスを参照してください。
コンテナでSkillを指定すると、以下のように処理されます。
/skills/{skill-name}/にコピーされます。ディレクトリはSkillの名前(Anthropic Skillの場合はpptx、カスタムSkillの場合はSKILL.mdのname)であり、skill_01...のIDではありません。Claudeは必要な場合にのみ完全なSkill指示をロードします。
Skillは組織的な作業と個人的な作業の両方に適しています。組織では、ドキュメントにブランドフォーマットを適用したり、会社のテンプレートに基づいてメモやレポートを構成したり、会社固有の分析手順を実行したりするために使用します。個人では、カスタムドキュメントテンプレート、専門的なデータパイプライン、コード生成やデプロイの規約に使用します。
ExcelとカスタムDCF分析Skillを組み合わせます。
from anthropic.lib import files_from_dir
client = anthropic.Anthropic()
# カスタムDCF分析Skillを作成
dcf_skill = client.beta.skills.create(
files=files_from_dir("/path/to/dcf_skill"),
)
# Excelと併用して財務モデルを作成
response = client.beta.messages.create(
model="claude-opus-5",
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"}],
)
print(response)name:最大64文字、小文字の英字/数字/ハイフンのみ、XMLタグ不可、予約語(「anthropic」、「claude」)不可description:最大1024文字、空でないこと、XMLタグ不可Skillはコード実行コンテナ内で実行され、以下の制限があります。
利用可能なパッケージについては、コード実行ツールを参照してください。
タスクが複数のドキュメントタイプやドメインに関わる場合にSkillを組み合わせます。
適したユースケース:
避けるべきこと:
このセクションのSDKタブは、Messagesリクエストに含めるcontainer値を示しています。cURLおよびCLIタブは完全なリクエストを示しています。
本番環境の場合: 特定のバージョンに固定することで、Skillの更新がデプロイ済みの動作を変更しないようにします。versionを省略するか"latest"に設定すると、リクエストはSkillの最新バージョンを使用するため、ワークスペース内の誰かがアップロードしたバージョンが、本番エージェントの実行内容を即座に変更します。バージョンIDは、バージョン管理のバージョン作成レスポンス、またはList Skill Versions APIから取得できます。IDは常に文字列です。JSONまたはYAMLではエポックタイムスタンプIDを引用符で囲んでください。
# 安定性のために特定のバージョンに固定
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "1759178010641129",
}
]
}開発環境の場合: latestを使用して、反復作業中に最新バージョンを自動的に取得します。
# アクティブな開発には latest を使用
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
}
]
}プロンプトキャッシングを使用している場合、コンテナ内のSkillリストを変更するとキャッシュが無効になります。Skillは固定された順序でシステムプロンプトにレンダリングされるため、同じリストは同じキャッシュ可能なプレフィックスを生成します。
client = anthropic.Anthropic()
# Skillsは固定されたキャッシュに適した順序でシステムプロンプトにレンダリングされます
response1 = client.beta.messages.create(
model="claude-opus-5",
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 sales data"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# Skillsリストの変更([xlsx] と [xlsx, pptx])はプレフィックスを変更しキャッシュミスとなり、同一リストならキャッシュヒットとなります
response2 = client.beta.messages.create(
model="claude-opus-5",
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",
}, # prefix change: cache miss
]
},
messages=[{"role": "user", "content": "Create a presentation"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)最適なキャッシングパフォーマンスを得るには、Skillリスト(順序を含む)をリクエスト間で一貫させてください。カスタムSkillのバージョンを固定することも役立ちます。"latest"を使用している場合、新しいバージョンを公開するとSkillの説明が変更され、キャッシュされたプレフィックスが無効になる可能性があります。
Skill関連のエラーを適切に処理します。
client = anthropic.Anthropic()
try:
response = client.beta.messages.create(
model="claude-opus-5",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
}
]
},
messages=[{"role": "user", "content": "Process data"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
except anthropic.BadRequestError as e:
if "skill" in str(e):
print(f"Skill error: {e}")
# スキル固有のエラーを処理
else:
raiseAgent SkillsはZDR契約の対象外です。Skill定義と実行データは、Anthropicの標準データ保持ポリシーに従って保持されます。
すべての機能におけるZDR適格性については、APIとデータ保持を参照してください。
組織でCompliance APIが有効になっている場合、そのアクティビティフィードは、Claude APIキーまたはClaude Consoleから行われたSkillおよびSkillバージョンの作成と削除を記録します。Compliance APIがオフの間に発生した操作は記録されず、後から復元することもできないため、この監査証跡に依存する前にCompliance APIをセットアップしてください。
すべてのエンドポイントを含む完全なAPIリファレンス
Claudeが発見して正常に使用できる効果的なSkillの書き方を学びます。
サンドボックス化されたコンテナでPythonとbashコードを実行し、データの分析、ファイルの生成、ソリューションの反復を行います。
Was this page helpful?