Claude を使用した LLM 搭載アプリケーションの構築
このスキルは、Claude を使用して LLM 搭載アプリケーションを構築するのに役立ちます。ニーズに基づいて適切なサーフェスを選択し、プロジェクトの言語を検出した後、関連する言語固有のドキュメントを読んでください。
開始前に
ターゲットファイル(またはターゲットファイルがない場合はプロンプトとプロジェクト)をスキャンして、Anthropic 以外のプロバイダマーカー(import openai、from openai、langchain_openai、OpenAI(、gpt-4、gpt-5、agent-openai.py や *-generic.py といったファイル名、またはコードをプロバイダニュートラルに保つ明示的な指示)がないか確認します。見つかった場合は停止し、このスキルが Claude/Anthropic SDK コードを生成することをユーザーに伝え、ファイルを Claude に切り替えるか、Claude 以外の実装を希望するかを尋ねてください。Anthropic 以外のファイルを Anthropic SDK 呼び出しで編集しないでください。(例外:prompt-audit サブコマンドは非対話型であり、ここで停止しません。レポートの前提条件に Anthropic 以外のプロバイダマーカーを記録し、Anthropic 以外のファイルを Anthropic SDK に切り替えることを提案しません。)
出力要件
ユーザーが Claude 機能の追加、変更、実装を依頼した場合、コードは以下のいずれかを通じて Claude を呼び出す必要があります:
- プロジェクトの言語用の公式 Anthropic SDK(
anthropic、@anthropic-ai/sdk、com.anthropic.*など)。プロジェクトにサポートされている SDK が存在する場合、これがデフォルトです。 - Raw HTTP(
curl、requests、fetch、httpxなど)。ユーザーが明示的に cURL/REST/raw HTTP を要求した場合、プロジェクトがシェル/cURL プロジェクトの場合、または言語に公式 SDK がない場合にのみ使用します。
この2つを混在させないでください。Python や TypeScript プロジェクトで、軽量だからという理由で requests/fetch を使用しないでください。OpenAI 互換の shim にフォールバックしないでください。
SDK の使用法を決して推測しないでください。 関数名、クラス名、名前空間、メソッドシグネチャ、インポートパスは、このスキルの {lang}/ ファイル、または shared/live-sources.md にリストされている公式 SDK リポジトリやドキュメントリンクからの明示的なドキュメントに基づく必要があります。必要なバインディングがスキルファイルに明示的に文書化されていない場合は、コードを書く前に shared/live-sources.md から関連する SDK リポジトリを WebFetch してください。cURL の形状や別の言語の SDK から Ruby/Java/Go/PHP/C# の API を推測しないでください。
WebFetch またはリポジトリへのアクセスが失敗した場合(ネットワーク制限、タイムアウト、クローンブロック):再試行を続けずに、{lang}/ ファイルのパターンと名前空間/パッケージテーブルからコードを書き、コンパイラまたはインタプリタを実行し、エラー出力に基づいて反復してください。静的に型付けされた SDK(C#、Java、Go)では、ローカルエラーに対するコンパイル-修正ループの方が、ブロックされたネットワーク調査よりもはるかに速く動作するコードに到達します。
デフォルト
ユーザーが別途要求しない限り:
Claude モデルバージョンについては、Claude Opus 5.5 を使用し、正確なモデル文字列 claude-opus-5-5 でアクセスしてください。複雑な処理には適応的思考(thinking: {type: "adaptive"})をデフォルトで使用してください。また、長い入力、長い出力、または高い max_tokens を伴う可能性のあるリクエストには、ストリーミングをデフォルトで使用してください。これにより、リクエストのタイムアウトを防ぐことができます。個々のストリームイベントを処理する必要がない場合は、SDK の .get_final_message() / .finalMessage() ヘルパーを使用して完全なレスポンスを取得してください。ストリーミングリクエストでユーザー定義(クライアント)ツールを定義する場合は、それらの各ツールに eager_input_streaming: true を設定して、大きなツール入力(ファイルコンテンツ、コード、ドキュメント)がサーバーがバッファリングを完了するのを待って一括で到着するのではなく、生成されると同時にストリーミングされるようにします。その場合、クライアントが検証を担当します。SDK の寛容なパーサーは、エラーを発生させる代わりに暗黙的に切り詰められた入力を返す可能性があるため、実行前に解析された各ツール入力をそのスキーマに対して検証してください(betaZodTool や型付けされた @beta_tool などの型付けされたランナーヘルパーはこれを自動的に行います。betaTool() JSON-Schema ツールと手動ループは自分で検証する必要があります)。失敗を無効な JSON(ブロックを保持している場合は INVALID_JSON エラー tool_result、それ以外の場合は再発行)のように扱い、ツールを実行する前に max_tokens / refusal 停止理由を確認し、SDK の JSON エラーのみをキャッチし、型付けされた API エラーは決してキャッチしないでください。パターンは shared/tool-use-concepts.md -> Eager input streaming を参照してください。非ストリーミングリクエスト、サーバーツール、およびプロキシやフィールドを拒否する古い Bedrock モデルデプロイメントを経由するリクエストでは、これをオフにしてください。
警告:API ドリフト - トレーニングの前提が古くなっている可能性があります
いくつかの一般的な Claude API の形状は 2025~2026 年に変更されました。トレーニングからパターンを思い出した場合は、コードを書く前にこのスキルの {lang}/ ファイルで確認してください。以下の行が最も頻繁なドリフトポイントです:
| 領域 | 古い前提 | 現在の API |
|---|---|---|
| 拡張思考 | thinking: {type: "enabled", budget_tokens: N} | Claude 4.6+ モデル:thinking: {type: "adaptive"}。budget_tokens は Opus 4.6 / Sonnet 4.6 では非推奨であり、Fable 5/5.1 / Sonnet 5.5 / Sonnet 5 / Opus 5.5 / 5 / 4.8 / 4.7 では 400 で拒否されます。4.6 より前のモデルは引き続き budget_tokens を使用します。 |
| Web 検索 / web fetch ツールタイプ | web_search_20250305、web_fetch_20250910 | web_search_20260209、web_fetch_20260209(動的フィルタリング)、Opus 5.5/5/4.8/4.7/4.6、Sonnet 5.5、Sonnet 5、Sonnet 4.6 で利用可能。古いモデルは基本的なバリアントを維持します。Vertex AI では基本の web_search_20250305 のみが利用可能です(web fetch は Vertex では利用できません)。Server Tools QR を参照してください。 |
| PHP パラメータ名 | snake_case ワイヤ名を名前付き引数として使用(max_tokens) | トップレベルの名前付き引数は camelCase(maxTokens)になります。ネストされた配列キーは機能によって異なります(例:'taskBudget'、'skillID'、'mcp_server_name')。ドキュメント化された例から正確なキーをコピーしてください。一括変換しないでください。 |
| Managed Agents の認証情報 | カスタムツールを介してシークレットをホスト側で保持(vault が出荷される前の唯一のオプション) | Vault environment_variable 認証情報 - Anthropic によって保存され、出力時に置換され、サンドボックスでは決して表示されません(shared/managed-agents-tools.md -> Vaults)。ホスト側のカスタムツールは、セルフホストサンドボックス用のフォールバックとして残ります。 |
| Files API / Skills | client.beta.files.* / client.beta.skills.*、ベータヘッダー files-api-2025-04-14 / skills-2025-10-02 付き | ベータ版から卒業:client.files.* / client.skills.*、ベータヘッダーなし。現在の SDK では、client.beta.files / client.beta.skills は以前のバージョンから形状が変更されており、安定した名前空間と一致しています。shared/live-sources.md -> Files API / Skills Guide に従って移行してください。 |
このスキル内の {lang}/ ファイルは、記憶されたパターンよりも優先されます。
サブコマンド
このプロンプトの下部にあるユーザーリクエストが、散文のないサブコマンド文字列である場合は、このドキュメント内の全てのサブコマンドテーブルを検索し(以下に追加されたセクションも含む)、一致するアクション列に直接従ってください。これにより、ユーザーは /claude-api <subcommand> を介して特定のフローを呼び出すことができます。ドキュメント内のテーブルと一致しない場合は、リクエストを通常の散文として扱ってください。
| サブコマンド | アクション |
|---|---|
migrate | 既存の Claude API コードを新しいモデルに移行します。直ちに shared/model-migration.md を読み、その順序に従ってください:ステップ0(スコープを確認 - 編集前にどのファイル/ディレクトリかを質問)、ステップ1(各ファイルを分類)、次にターゲットごとの破壊的変更セクション。ガイドを要約せず、実行してください。ユーザーがターゲットモデルを指定しなかった場合は、スコープの質問と同じターンで移行先モデルを尋ねてください。ターゲットごとの変更が適用された後、スコープ内のプロンプトテキスト、ツールの説明、リクエストコードを shared/prompt-audit.md に対して監査してください。ソースモデル用に書かれたプロンプトはすべての移行の一部であり、自己通知しません。 |
prompt-audit | 既存のプロンプト、ツールの説明、スキル、エージェント設定ファイル(CLAUDE.md、ルールファイル、コマンド、サブエージェント)を古いパターン("cruft")について監査します:古いモデル向けに書かれたテキスト、リポジトリが成長しきった、または互いに矛盾する指示。直ちに shared/prompt-audit.md を読み、その順序に従ってください:ステップ0(リクエストとリポジトリからスコープとターゲットモデルを確立 - レポートで前提を述べ、停止して質問しない)、インベントリ、出典、次にパターンスキャン。両方の成果物(発見事項を含む監査レポート、および提案された差分)を完全に、確認のために一時停止せずに生成してください。リクエストが明示的に編集を要求した場合にのみ編集を適用してください。ガイドを要約せず、実行してください。 |
upgrade | プロジェクトの Anthropic SDK 依存関係をメジャーバージョン間でアップグレードします - 現在は Python SDK、anthropic 0.x -> 1.x。後続の単語で言語やスコープを指定できます(upgrade python、upgrade python sdk src/)。直ちに python/claude-api/sdk-upgrade.md を読み、その順序に従ってください:ステップ0(スコープを確認、次に現在のバージョンとターゲットバージョンを確立 - ピンを書き込む前に公開された 1.x が存在する必要があります)、ステップ1 のインベントリ、各番号付きセクション、次に検証とレポート。ガイドを要約せず、実行してください。検出または指定された言語にこのスキル内に sdk-upgrade.md がない場合は、その SDK のメジャーバージョンアップグレードガイドがまだバンドルされていないことを伝え、その SDK の CHANGELOG(shared/live-sources.md 内のリポジトリ)をユーザーに案内してください。Python ガイドから即興で作成しないでください。これはモデル移行ではありません。コードを新しい Claude モデルに移行するには、migrate を使用してください。 |
cost-optimize | 既存の Claude API コードの実行コストを、出力品質を犠牲にせずに削減します。直ちに shared/cost-optimization.md を読み、その順序に従ってください:ステップ0(スコープ、品質基準、ベースラインを確立)、トークンプロファイル - ユーザーが Admin API キーを持っている場合は Usage and Cost Admin API を通じて、アプリが response.usage ログを持っている場合はそれらから(尋ねる)、それ以外の場合はコードから推定 - 次に、節約額でランク付けされたレバーの候補リスト(持っているデータソースに応じて、ドル、請求額の割合、または相対バケットで見積もる)、無料の勝利(キャッシュ、入力トークンの衛生、ループの衛生、出力トークンの衛生、バッチ)をトレードオフ(予算、労力、モデル選択、マルチモデル)の前に。候補となった各レバーは独自の差分になり、デフォルトで提案され、ユーザーが要求して承認した場合に、そのトラフィックをカバーする eval に対して適用および測定されます。「変更推奨なし」も有効な結果です。2つの常規則:モデルを実行するすべての実行は実際の費用がかかるため、まずユーザーの承認を得ること。レバーのコンテキストが不足している場合は、ユーザーと対話的に作業すること。このワークフローはワンショットで監査を完了することを想定していません。ガイドを要約せず、実行してください。プロファイルとランク付けされた計画をユーザーに提示することは実行の一部です。 |
build-eval | ユーザーが Claude 搭載アプリの評価セットを構築するのを支援します。直ちに shared/evals/build-eval.md を読み、そのインタビューを実行してください:ステップ0(何を評価するか)、ステップ1(プロンプトのソース - 既存の eval / トランスクリプト / 合成)、ステップ2(採点方法)、ステップ3(実行可能なスクリプト + 測定コスト)。eval を生成する前に、入力、採点方法、コストについてユーザーの明示的な承認を得てください。 |
preserved-thinking-migration | 既存の統合を保存された思考と互換性を持たせます - 思考ブロックを、それを生成した会話内でのみ有効に保つチェック。直ちに shared/preserved-thinking-migration.md を読み、その順序に従ってください:ステップ0(スコープ、トラフィッククラス、プラットフォームとモデル、実施ステータス、品質基準、ベースライン)、ステップ0.5(3リクエストのセルフテストでチェックが実行されていることを確認)、ステップ1(リクエスト本文をキャプチャし、shared/preserved-thinking-migration/prefix_diff.py で連続するペアを差分し、コード内の原因をスキャンし、各編集に名前を付け、それが意図的かどうかを判断)、ステップ2(thinking-binding-controls-2026-08-01 ヘッダーの下で prefix_mismatch_behavior: "drop_block" を使用してテストスライスを再生し、会話ごとの新しいドロップされたブロックをカウントし、存在する場合は診断ヘッダーを読み取る)、ステップ3(失われた推論の順序で原因ごとに1つの差分 - デフォルトで提案、ユーザーが要求した場合に適用 - その後再測定、保持または元に戻す。eval が存在する場合の3アームプロトコル)、ハーネスがモデル間でルーティングする場合のモデルスイッチセクション(shared/preserved-thinking-migration/causes.md 内、原因テーブルと保持リスト付き)、ステップ4(ブレークプロファイルと変更)。2つの常規則:すべての再生は実際の費用がかかるため、最初に測定予算についてユーザーの承認を得ること。そして「変更推奨なし」- スライスが思考を再生し、何もドロップされなかった - は有効な結果です。新しいベータ版の下でのみ追加専用形式を持つ原因(テール保持とバックグラウンド圧縮:compact-2026-09-04;同名ツール変更:inline-tools-2026-09-15)は、そのベータ版が利用できない場合、測定および決定され、書き換えられません。理由(3ステップチェック、追加専用編集テーブル)については、shared/model-migration.md -> Breaking change 3 にチェーンされます。ガイドを要約せず、実行してください。 |
hillclimb | 既存の eval に対してユーザーのアプリを反復的に改善します。直ちに shared/evals/eval-hillclimb.md を読み、それに従ってください:ステップ0(実行可能な eval が存在することを確認 - ない場合は build-eval にルーティング)、ステップ1(何を変更するか / 何を変更してはいけないか)、ステップ2(測定された実行あたりのコストからの予算 + 停止条件)、計画の承認を得てから、ディスク上の状態とトレイン/バリデーション/テスト分割を使用した読み取り->提案->適用->実行->記録ループを実行します。 |
言語検出
コード例を読む前に、ユーザーが作業している言語を特定してください(例外:prompt-audit サブコマンドの場合は、このセクションの質問手順をスキップしてください。監査は非対話型であり、そのインベントリは言語に依存しません。言語が推測できない場合は、質問せずに進め、レポートでその前提を述べてください):
- プロジェクトファイルを調べて 言語を推測します:
*.py、requirements.txt、pyproject.toml、setup.py、Pipfile-> Python -python/から読み取ります*.ts、*.tsx、package.json(typescript 依存関係あり)、tsconfig.json-> TypeScript -typescript/から読み取ります*.go、go.mod-> Go -go/から読み取ります*.java、pom.xml、build.gradle、build.gradle.kts-> Java -java/から読み取ります*.rb、Gemfile、*.gemspec-> Ruby -ruby/から読み取ります*.php、composer.json-> PHP -php/から読み取ります*.cs、*.csproj、*.sln-> C# -csharp/から読み取りますDockerfile、*.sh、*.bash、Makefile、Justfile、Taskfile.yml、compose.yaml、compose.yml(シェルまたは DevOps コンテキスト) -> Shell -shell/から読み取ります- 上記のいずれでもないか、複数言語が混在している場合:プロジェクトがオーケストレーションファイル(
docker-compose.yml、Makefile、Taskfile.yml、Justfile)を中心としているか、shebang行がsh、bash、zshを指定している場合はシェルと見なします。それ以外の場合は、作業している言語を尋ねます。
-
検出された言語のファイル構造を調べて、説明文と使用例を読みます。
-
プロジェクトに Anthropic SDK が既に設定されている場合(
import anthropic、from anthropic、require('@anthropic-ai/sdk')、gem install anthropic、go get github.com/anthropics/anthropic-sdk-go、composer require anthropic/anthropic-sdk-php、dotnet add package Anthropicなど)、SDK の初期化コードを変更せずにそのまま使用します。それ以外の場合は、言語の設定例に従ってください。
スキルファイル構造
このスキルは以下のように整理されています:
shared/- 言語に依存しないガイド、リファレンステーブル、ユーティリティ。live-sources.md- 各 SDK の公式リポジトリとドキュメントリンク。model-migration.md- モデル間の移行手順。prompt-audit.md- プロンプト/設定の監査手順。cost-optimization.md- コスト削減戦略。tool-use-concepts.md- ツール使用のパターンと落とし穴。managed-agents-tools.md- Managed Agents ツール(Vault を含む)。preserved-thinking-migration.md- 保存された思考の移行ガイド。preserved-thinking-migration/prefix_diff.py- プレフィックス差分ユーティリティ。preserved-thinking-migration/causes.md- 保存された思考の問題の原因テーブル。evals/build-eval.md- eval セット構築ガイド。evals/eval-hillclimb.md- eval による反復改善ガイド。
python/- Python 固有のドキュメントと例。claude-api/- Python SDK の包括的な使用ガイド。
typescript/- TypeScript 固有のドキュメントと例。go/- Go 固有のドキュメントと例。java/- Java 固有のドキュメントと例。ruby/- Ruby 固有のドキュメントと例。php/- PHP 固有のドキュメントと例。csharp/- C# 固有のドキュメントと例。shell/- Shell/cURL 固有のドキュメントと例。
各 {lang}/ ディレクトリには、その言語の SDK を使用するための完全なリファレンスが含まれています。
使用例
各言語ディレクトリには、以下の典型的な操作をカバーする使用例が含まれています:
- 基本設定 - SDK のインストールとクライアントの初期化
- テキスト生成 - 基本的な会話の作成
- ストリーミング - イベントストリームの処理
- ツール使用 - 関数呼び出しの定義と処理
- 拡張思考 - 思考ブロックの操作
- エラーハンドリング - レート制限と API エラーの管理
- バッチ処理 - 複数リクエストの効率的な処理
- Managed Agents - エージェントベースのワークフローの作成
言語固有の完全なドキュメントについては、対応する言語ディレクトリの README を参照してください。