CLAUDE.md とルール)、スキル、フック、その他の機能です。
settingSources を省略すると、query() は Claude Code CLI と同じファイルシステム設定を読み込みます。ユーザー、プロジェクト、ローカル設定、CLAUDE.md ファイル、.claude/ スキル、エージェント、コマンドです。これらなしで実行するには、settingSources: [] を渡します。これにより、エージェントはプログラムで設定したものに限定されます。マネージドポリシー設定とグローバル ~/.claude.json 設定は、このオプションに関係なく読み込まれます。settingSources が制御しないものを参照してください。
各機能の概念的な概要と使用時期については、Claude Code を拡張するを参照してください。
settingSources でファイルシステム設定を制御する
設定ソースオプション(Python ではsetting_sources、TypeScript では settingSources)は、SDK が読み込むファイルシステムベースの設定を制御します。特定のソースにオプトインするための明示的なリストを渡すか、ユーザー、プロジェクト、ローカル設定を無効にするための空の配列を渡します。
この例では、settingSources を ["user", "project"] に設定して、ユーザーレベルとプロジェクトレベルの両方の設定を読み込みます。
<cwd> は cwd オプション経由で渡す作業ディレクトリです(設定されていない場合はプロセスの現在のディレクトリ)。完全な型定義については、SettingSource(TypeScript)または SettingSource(Python)を参照してください。
| ソース | 読み込むもの | 場所 |
|---|---|---|
"project" | プロジェクト CLAUDE.md、.claude/rules/*.md、プロジェクトスキル、プロジェクトフック、プロジェクト settings.json | <cwd>/.claude/ (settings.json とフック用);CLAUDE.md とルール用に <cwd> と全親ディレクトリ;スキル用に <cwd> とリポジトリルートまでの全親ディレクトリ |
"user" | ユーザー CLAUDE.md、~/.claude/rules/*.md、ユーザースキル、ユーザー設定 | ~/.claude/ |
"local" | CLAUDE.local.md、.claude/settings.local.json | <cwd>/.claude/ (settings.local.json 用);CLAUDE.local.md 用に <cwd> と全親ディレクトリ |
settingSources を省略することは ["user", "project", "local"] と同等です。
cwd オプションは、SDK がプロジェクトレベルの入力を探す場所を決定します。CLAUDE.md とルールは <cwd> と全親ディレクトリから読み込まれます。スキルは <cwd> とリポジトリルートまでの全親ディレクトリから読み込まれます。プロジェクト settings.json とフックは <cwd>/.claude/ からのみ読み込まれ、親ディレクトリへのフォールバックはありません。
settingSources が制御しないもの
settingSources はユーザー、プロジェクト、ローカル設定をカバーします。その値に関係なく読み込まれるいくつかの入力があります。
| 入力 | 動作 | 無効にするには |
|---|---|---|
| マネージドポリシー設定 | ホストに存在する場合は常に読み込まれます | マネージド設定ファイルを削除します |
~/.claude.json グローバル設定 | 常に読み込まれます | env の CLAUDE_CONFIG_DIR で再配置します |
~/.claude/projects/<project>/memory/ の自動メモリ | デフォルトではシステムプロンプトに読み込まれます | 設定で autoMemoryEnabled: false を設定するか、env で CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 を設定します |
| claude.ai MCP コネクタ | アクティブな認証方法が claude.ai サブスクリプションの場合に読み込まれます。mcpServers: {} を渡しても抑制されません | strictMcpConfig: true を設定するか、env で ENABLE_CLAUDEAI_MCP_SERVERS=false を設定します |
プロジェクト指示(CLAUDE.md とルール)
CLAUDE.md ファイルと .claude/rules/*.md ファイルは、エージェントにプロジェクトに関する永続的なコンテキストを提供します。コーディング規約、ビルドコマンド、アーキテクチャの決定、指示です。settingSources に "project" が含まれている場合(上記の例のように)、SDK はセッション開始時にこれらのファイルをコンテキストに読み込みます。その後、エージェントはプロジェクト規約に従い、すべてのプロンプトで繰り返す必要がありません。
CLAUDE.md 読み込み場所
| レベル | 場所 | 読み込まれるとき |
|---|---|---|
| プロジェクト(ルート) | <cwd>/CLAUDE.md または <cwd>/.claude/CLAUDE.md | settingSources に "project" が含まれる |
| プロジェクトルール | <cwd>/.claude/rules/*.md および cwd より上のすべての親ディレクトリの .claude/rules/*.md | settingSources に "project" が含まれる |
| プロジェクト(親ディレクトリ) | cwd より上のディレクトリの CLAUDE.md ファイル | settingSources に "project" が含まれ、セッション開始時に読み込まれます |
| プロジェクト(子ディレクトリ) | cwd のサブディレクトリの CLAUDE.md ファイル | settingSources に "project" が含まれ、エージェントがそのサブツリーのファイルを読み込むときにオンデマンドで読み込まれます |
| ローカル | <cwd>/CLAUDE.local.md および cwd より上のすべての親ディレクトリの CLAUDE.local.md | settingSources に "local" が含まれる |
| ユーザー | ~/.claude/CLAUDE.md | settingSources に "user" が含まれる |
| ユーザールール | ~/.claude/rules/*.md | settingSources に "user" が含まれる |
スキル
スキルは、エージェントに専門知識と呼び出し可能なワークフローを提供するマークダウンファイルです。CLAUDE.md(すべてのセッションで読み込まれる)とは異なり、スキルはオンデマンドで読み込まれます。エージェントはスタートアップ時にスキルの説明を受け取り、関連するときに完全なコンテンツを読み込みます。
スキルは settingSources を通じてファイルシステムから検出されます。query() の skills オプションが省略されている場合、検出されたユーザーとプロジェクトのスキルが有効になり、Skill ツールが利用可能になります。これは CLI の動作と一致します。どのスキルを有効にするかを制御するには、skills を "all"、スキル名のリスト、または [] を渡してすべてを無効にします。skills が設定されている場合、SDK は Skill ツールを allowedTools に自動的に追加します。明示的な tools リストも渡す場合は、Claude がスキルを呼び出せるようにそのリストに "Skill" を含めてください。
スキルはファイルシステムアーティファクト(
.claude/skills/<name>/SKILL.md)として作成する必要があります。SDK にはスキルを登録するためのプログラマティック API がありません。詳細については、SDK のエージェントスキルを参照してください。フック
SDK は 2 つの方法でフックを定義することをサポートしており、それらは並行して実行されます。- ファイルシステムフック:
settings.jsonで定義されたシェルコマンド。settingSourcesに関連するソースが含まれている場合に読み込まれます。これらはインタラクティブな Claude Code セッション用に設定するのと同じフックです。 - プログラマティックフック:
query()に直接渡されるコールバック関数。これらはアプリケーションプロセスで実行され、構造化された決定を返すことができます。フックで実行を制御するを参照してください。
.claude/settings.json にフックが既にあり、settingSources: ["project"] を設定している場合、それらのフックは追加の設定なしで SDK で自動的に実行されます。
フックコールバックはツール入力を受け取り、決定辞書を返します。{} を返すことはツールの実行を許可することを意味します。実行をブロックするには、permissionDecision: "deny" と permissionDecisionReason を含む hookSpecificOutput オブジェクトを返します。理由は Claude にツール結果として送信されます。トップレベルの decision と reason フィールドは PreToolUse では非推奨です。完全なコールバック署名と戻り値の型については、フックガイドを参照してください。
どのフックタイプを使用するか
| フックタイプ | 最適な用途 |
|---|---|
ファイルシステム (settings.json) | CLI と SDK セッション間でフックを共有します。"command"(シェルスクリプト)、"http"(エンドポイントへの POST)、"mcp_tool"(接続された MCP サーバーのツールを呼び出す)、"prompt"(LLM がプロンプトを評価する)、"agent"(検証エージェントを生成する)をサポートします。これらはメインエージェントとそれが生成するサブエージェントで実行されます。 |
プログラマティック (query() のコールバック) | アプリケーション固有のロジック、構造化された決定、およびプロセス内統合。これらはサブエージェント内でも実行されます。コールバックは agent_id と agent_type を受け取り、区別することができます。 |
TypeScript SDK は Python を超えた追加のフックイベントをサポートしており、
SessionStart、SessionEnd、TeammateIdle、TaskCompleted が含まれます。完全なイベント互換性テーブルについては、フックガイドを参照してください。適切な機能を選択する
Agent SDK は、エージェントの動作を拡張するいくつかの方法へのアクセスを提供します。どれを使用するか不確かな場合、このテーブルは一般的な目標を正しいアプローチにマップします。| 実現したいこと | 使用 | SDK サーフェス |
|---|---|---|
| エージェントが常に従うプロジェクト規約を設定する | CLAUDE.md | settingSources: ["project"] がそれを自動的に読み込みます |
| エージェントが関連するときに読み込む参考資料を提供する | Skills | settingSources + skills オプション |
| 再利用可能なワークフロー(デプロイ、レビュー、リリース)を実行する | User-invocable skills | settingSources + skills オプション |
| 分離されたサブタスク(研究、レビュー)を新しいコンテキストに委譲する | Subagents | agents パラメータ + allowedTools: ["Agent"] |
| 共有タスクリストと直接的なエージェント間メッセージングで複数の Claude Code インスタンスを調整する | Agent teams | SDK オプション経由で直接設定されません。エージェントチームは CLI 機能で、1 つのセッションがチームリードとして機能し、独立したチームメイト間で作業を調整します |
| ツール呼び出しで決定論的ロジックを実行する(監査、ブロック、変換) | Hooks | hooks パラメータとコールバック、または settingSources 経由で読み込まれたシェルスクリプト |
| Claude に外部サービスへの構造化ツールアクセスを提供する | MCP | mcpServers パラメータ |