Claude Code には、事前に定義したプロンプト (ルールや前提知識など) をセッション開始時に読み込ませたり (= システムプロンプト)、セッション中に (暗黙裡に) 呼び出したりする機能が色々あるので、既に似た記事もありますが、私なりの観点で整理しました。
機能一覧と比較
⚙️ は事前定義プロンプトをシステムプロンプト (= セッション開始時に読み込まれ優先的に遵守されやすいプロンプト) として与えます。
👤 は事前定義プロンプトをユーザプロンプト (= 通常のプロンプト) として与えます。
| 機能名 (ファイル名) | 一言でいうと | トリガー |
|---|---|---|
|
カスタムスラッシュコマンド 👤 |
ユーザプロンプトのテンプレート機能 但し 2026-02-09 現在、サポートはされているがドキュメントが削除されており、上位互換機能のスキルの使用が暗に推奨されているようである |
明示的 |
|
スキル [公式ドキュメント] 👤 or ⚙️ (※) |
ユーザプロンプト (※) のテンプレート機能 (暗黙使用とサブエージェント実行のオプション付き) | 明示的・暗黙裡 (使用場面は description に定義) ※ どちらかに制限も可 |
|
サブエージェント [公式ドキュメント] ⚙️ |
専用システムプロンプトを与えた別セッション (コンテキスト長制限も別になるし、モデル自体も別にできるし、永続メモリ機能もあるし再開も可能) で回答させる機能 (組み込みサブエージェントもあるし、カスタムサブエージェントも定義可) (スキルも複数取り込み可) | 暗黙裡 (使用場面は description に定義) ※ ユーザプロンプトで明示的呼び出しも可能 ※ 制限の仕組みはなし |
|
~/.claude/CLAUDE.md, ./CLAUDE.md [公式ドキュメント] ⚙️ |
これはシステムプロンプト (= セッション開始時に読み込まれ優先的に遵守されやすいプロンプト) そのもの 1 | セッション開始時 |
|
./サブディレクトリ/CLAUDE.md [公式ドキュメント] 👤 |
エージェントがそのサブディレクトリにアクセスしたときにユーザプロンプトに追加されるプロンプト | 対象ファイルアクセス時 |
|
./.claude/rules/*.md (paths 指定) [公式ドキュメント] 👤 |
エージェントがその paths のパターンにマッチしたファイルにアクセスしたときにユーザプロンプトに追加されるプロンプト (ルールを適用する拡張子を限定するような用途が想定されているように読める) | 対象ファイルアクセス時 |
(※) スキルをサブエージェントで実行するとスキルの内容がサブエージェントのシステムプロンプトになると思われますが、ドキュメントに明記はなく、私は検証していません。
各機能の詳細
興味がある特徴のみ列挙しています。具体的な使い方は公式ドキュメントを参照ください。
-
カスタムスラッシュコマンド : ユーザプロンプトのテンプレート機能
但し 2026-02-09 現在、サポートはされているがドキュメントが削除されており、上位互換機能のスキルの使用が暗に推奨されているようである- ⭕ ユーザが明示的に使用する (スラッシュコマンドによる)
- ❌ エージェントが暗黙裡に使用する
- ⭕ 引数を注入する
- ⭕ 外部コマンド実行結果を注入する 2
- ⭕ ユーザプロンプトへの回答のための権限を指定する (allowed-tools)
- ❌ ユーザプロンプトへの回答をサブエージェントにさせる
-
スキル : ユーザプロンプトのテンプレート機能 (暗黙使用とサブエージェント実行のオプション付き) [公式ドキュメント]
- ⭕ ユーザが明示的に使用する (スラッシュコマンドによる)
- ⭕ エージェントが暗黙裡に使用する (description に基づく)
- ⭕ エージェントの暗黙裡な使用を禁止する (disable-model-invocation: true)
- ⭕ ユーザによる明示的な使用を禁止する (user-invocable: false)
- ⭕ 引数を注入する
- ⭕ 外部コマンド実行結果を注入する
- ⭕ ユーザプロンプトへの回答のための権限を指定する (allowed-tools)
- ⭕ ユーザプロンプトへの回答をサブエージェントにさせる (context: fork) 3
-
サブエージェント : 専用システムプロンプトを与えた別セッション (コンテキスト長制限も別になるし、モデル自体も別にできるし、永続メモリ機能もあるし再開も可能) で回答させる機能 (組み込みサブエージェントもあるし、カスタムサブエージェントも定義可) 4 [公式ドキュメント]
- ⭕ ユーザが明示的にサブエージェントを呼び出す (ユーザプロンプト中で
@サブエージェント名 プロンプトとすることで、メインエージェントに、サブエージェントにそのプロンプトを伝えさせることができる) - ⭕ エージェントが暗黙裡にサブエージェントを呼び出す (description に基づく)
- ❌ エージェントによる暗黙裡な呼び出しを禁止する
- ❌ ユーザによる明示的な呼び出しを禁止する
- ⭕ スキルを (複数) 取り込む (skills)
- ⭕ 永続メモリを有効にする (memory)
- ⭕ フォアグラウンドで実行する (エージェント判断 + ユーザプロンプトで指示)
- ⭕ バックグラウンドで実行する (エージェント判断 + ユーザプロンプトで指示)
- ⭕ バックグラウンドでの実行を禁止する (環境変数 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1)
- ⭕ 前回のサブエージェントセッションを再開する (ユーザプロンプトで指示)
- ⭕ ユーザが明示的にサブエージェントを呼び出す (ユーザプロンプト中で
- ~/.claude/CLAUDE.md, ./CLAUDE.md : これはシステムプロンプト (= セッション開始時に読み込まれ優先的に遵守されやすいプロンプト) そのもの 5 [公式ドキュメント]
- ./サブディレクトリ/CLAUDE.md : エージェントがそのサブディレクトリにアクセスしたときにユーザプロンプトに追加されるプロンプト 67 [公式ドキュメント]
- ./.claude/rules/*.md (paths 指定) : エージェントがその paths のパターンにマッチしたファイルにアクセスしたときにユーザプロンプトに追加されるプロンプト (ルールを適用する拡張子を限定するような用途が想定されているように読める) [公式ドキュメント] 89
所感
以降は私の個人的な想像と感想です (未検証の内容を含みます)。
-
「セッション中に必要となったときに、エージェントにルールや前提知識のプロンプトを与えたい」という目的なら、スキル / サブエージェント / サブディレクトリ CLAUDE.md のいずれでも実現することができると思います。
- 「そのルールや前提知識の使用場面がそのサブディレクトリで作業するときである」のであれば、まずはサブディレクトリ CLAUDE.md に記述する (必要ならこれをスキルやエージェントから読む) のが管理上よいと思います。
- 「使用場面がサブディレクトリと紐づいていない」なら、スキルがよいと思います。
- さらに、「別セッションを立ち上げさせたい (新規セッションのシステムプロンプトとしてより強く遵守させたい、コンテキスト圧縮を避けたいなど)」場合は、スキルかサブエージェントが向くと思います。
- 「暗黙呼び出しを絶対に避けたい」場合は、スキルがよいかもしれません。
- 「前回のサブセッションを再開できるようにしたい」「作業に関する記憶を育てさせたい」「モデル自体を切り替えたい」となると、サブエージェントが便利だと思います。
| スキル | サブエージェント | |
|---|---|---|
| メインセッション中のユーザプロンプトで前提知識を呼び出したい | ⭕ | ❌ |
| 前提知識をシステムプロンプトとした別セッションを立ち上げさせたい | ⭕ (context: fork) | ⭕ |
| 前提知識を用いた作業に関する記憶をもたせ育てさせたい | 🔺 (自前で記憶を書き込むファイルを指定して、そこへの記述をブラッシュアップする指示を含めること自体はできるとは思う) | ⭕ (memory フィールドがある) |
| 前回の続きから作業を再開させたい | ❌ (自前で会話履歴を管理すればよいがそれならもうサブエージェントを使うほうがよいと思う) | ⭕ (会話履歴が管理されているので、再開するよう依頼すればよい) |
| 前提知識がいつ読み込まれるかを完全に制御したい | ⭕ (暗黙使用を禁止できる) | 🔺 (暗黙使用を禁止できない) (もっとも意図せず使用されることがあるかは内容によると思われる) |
- 最近カスタムスラッシュコマンドのドキュメントが削除されていることに気付きました。機能ではスキルが上位互換ですが、カスタムスラッシュコマンドは 1 ファイルで定義できて手軽だと思うので、サポートが継続してほしいです。
-
Claude Code はこれらのファイルをシステムプロンプトとして受け取るより先に、Claude Code システムレベルのシステムプロンプト (ツールの使い方、振る舞いのルール、安全性のガイドラインなど) を受け取っている、と Claude 本人が言っていた。 ↩
-
カスタムスラッシュコマンドに外部シェルスクリプト実行結果を取り込む例はこちらの記事を参考 : Claude Code への依頼時にチェックポイント (方針まで/差分まで/直接変更) を明示するカスタムスラッシュコマンド - Qiita ↩
-
「スキルをサブエージェントに回答させること」と「スキルをもつサブエージェントに回答させること」は異なる。公式ドキュメントを参照のこと。 ↩
-
ユーザが自分で意識していなくても Claude は組み込みサブエージェントを使用している。例えば、あなたが Claude に Claude Code の使い方に関する質問をすると、画面上に
claude-code-guide(Find subdirectory CLAUDE.md docs)などと表示されることがある。これは組み込みサブエージェント Claude Code Guide の呼び出し (及びそのサブエージェント向けに発されたプロンプト) である。 ↩ -
./CLAUDE.md は ./.claude/CLAUDE.md としてもよい。が、ドット始まりのディレクトリに入れると Obsidian に表示できないので、Obsidianist は前者にするとよい。 ↩
-
./サブディレクトリ/CLAUDE.md は ./サブディレクトリ/.claude/CLAUDE.md としてもよいかどうかは不明 (ドキュメントに明記はなく、私は検証していない)。 ↩
-
サブディレクトリの CLAUDE.md がそのサブディレクトリにアクセスしたときに読み込まれる旨はなぜか日本語版のドキュメントにはない (2026-02-09 現在)。 ↩
-
./.claude/rules/*.md は paths 指定がなければ単に「./CLAUDE.md をファイルを分けて整理したもの」である。ただ公式ドキュメントでは 1 ファイルに 1 トピックになるようにルールを分けることが推奨されているようにも見えるので、そうするとエージェントも遵守しやすくなるのかもしれない。私は検証していない。 ↩
-
エージェントは ./.claude/rules/*.md を「予め全て読み込んでおく」のか、「予め paths まで読み込んでおき、アクセスしたファイルが paths に合致したときにさらに読み込む」のかは公式ドキュメントに明記はない (paths がなければ無条件に読み込まれる、とはある)。プロンプト量の節約のために ./.claude/rules/*.md を使用するといった記事をよく見かけるように思うので後者なのだろうかと思うが、私は検証していない。 ↩