Claude Codeのoutput styleとCLAUDE.md・Skillsは何が違うか
Claude Codeのoutput style・CLAUDE.md・Skillsは、システムプロンプト書き換え/常時オン追加/オンデマンド読み込みという別レイヤーで動きます。選び方と組み合わせ方を比較します。
output style・CLAUDE.md・Skillsはどれも「Claudeの振る舞いを変える」機構ですが、変更を差し込む場所とロードされるタイミングが違います。output styleはシステムプロンプトそのものを書き換え、CLAUDE.mdはシステムプロンプトの後にユーザーメッセージとして追加され、Skillsは呼び出されたときだけ会話に読み込まれます。output styleの切り替え・自作の手順そのものは基本ガイドと自作テンプレート集に譲り、本稿はこの3つのうちどれを選ぶか、そして組み合わせられるかに絞って比較します。
比較対象: 3つの機構の実体
output styleはClaude Codeの組み込みシステムプロンプトを直接置き換える機構です。カスタムスタイルは既定でCode向けの指示を外し、書いた本文をシステムプロンプト末尾に追加します。
CLAUDE.mdはこれとは別の階層で動きます。システムプロンプトの後に読み込まれるユーザーメッセージという扱いで、Claudeの基本的な振る舞い自体は変わりません。プロジェクトの規約やビルドコマンドのように、毎回知っておいてほしい事実を書く場所です。
Skillsは呼び出し方式が根本的に違います。関連する作業のときにClaudeが自動で選ぶか、/名前で明示的に呼び出したときだけ、その時点で本文が会話に読み込まれます。セッション開始時に読み込まれる前の2つと違い、必要になるまで存在感がありません。何を書くかも他の2つと性格が異なり、CLAUDE.mdが「常に知っておいてほしい事実」を書く場所であるのに対し、Skillsには「ときどき必要になる手順や参照資料」を書きます。デプロイ手順やAPI仕様書のように、毎回は要らないがまとまった分量になる情報が向きます。
評価軸: 何で見分けるか
3つを見分ける軸は3つあります。①常時オンかオンデマンドか、②変更が反映されるタイミング、③誰が書くかです。
1つ目の軸は単純です。output styleとCLAUDE.mdは毎回のリクエストに乗り、Skillsは使われたときだけ本文が乗ります。2つ目の軸はやや意外な共通点があり、後述します。3つ目の軸はCLAUDE.mdだけに特有です。CLAUDE.mdはあなたが書く指示・規約ですが、Claude Codeにはあなたの指摘や訂正からClaude自身が学んだことを書き残す自動メモリという仕組みもあります。output styleとSkillsは、どちらも人間が用意した指示を読み込むだけで、Claudeが自ら追記する仕組みは持ちません。
比較表
| 機構 | 何を変更するか | ロードされるタイミング | 誰が書くか | 毎リクエストのコスト |
|---|---|---|---|---|
| Output style | 何を変更するかシステムプロンプトを直接書き換える | ロードされるタイミングセッション開始時に1回 | 誰が書くかあなた | 毎リクエストのコスト選んだ本文の分だけ固定で乗る |
| CLAUDE.md(ルート/ユーザー) | 何を変更するかシステムプロンプト後のユーザーメッセージとして追加 | ロードされるタイミングセッション開始時に1回 | 誰が書くかあなた(自動メモリはClaude) | 毎リクエストのコスト全内容が毎回乗る |
| Skills | 何を変更するか呼び出し時に会話へ指示を注入 | ロードされるタイミング呼び出された時点、またはClaudeが関連性を判断した時点 | 誰が書くかあなた | 毎リクエストのコスト呼ばれるまで低コスト(説明文のみ常駐) |
この表で見落としやすいのが「ロードされるタイミング」の列です。output styleとCLAUDE.md(ルート・ユーザーレベル)は、実はどちらも同じ挙動をします。
output styleとルートのCLAUDE.mdだけが次の/clearまで反映されない
output styleを/configで切り替えても、その場では反映されません。output styleはシステムプロンプトの一部としてセッション開始時に1回だけ読み込まれる設定で、変更は次の/clearか再起動まで待たされます。
同じことがルート直下・ユーザーレベルのCLAUDE.mdにも起きます。プロジェクトルートや~/.claude/CLAUDE.mdはセッション開始時に読み込まれてメモリ上に保持され、セッション中に編集してもキャッシュは無効化されず、変更も適用されません。次の/clear・/compact・再起動で初めて新しい内容が読み込まれます。
Skillsはここが違います。呼び出された時点で会話メッセージとして追加されるため、それ以前のキャッシュを無効化しません。サブディレクトリのCLAUDE.mdや、paths:を指定したルールファイルも同様で、Claudeがそのディレクトリのファイルを初めて読んだ時点で読み込まれ、それより前に編集していれば反映されます。今すぐ効いてほしいならSkillsかサブディレクトリのルール、次のセッションでよいならoutput styleかルートのCLAUDE.md、という線引きが実務上の目安です。
それぞれの強みと弱み
output styleの強み・弱み — 再起動が要る
output styleの強みは、トーン・出力形式・役割そのものを1回の選択でまとめて変えられることです。弱みは前節のとおり反映に/clearか再起動が要ることと、システムプロンプトを書き換える性質上、他のoutput styleと重ねて使えない(1度に選べるのは1つ)ことです。
CLAUDE.mdの強み・弱み — 肥大化で精度低下
CLAUDE.mdの強みは、プロジェクトの規約やビルドコマンドのように常に知っておいてほしい事実を確実に届けられることです。弱みは全内容が毎回コンテキストに乗ることです。公式が目安として示す200行を超えて肥大化すると、コンテキスト消費が増えるだけでなく指示同士が矛盾しやすくなり、Claudeがどちらに従うか一定しなくなります。あふれた参照資料はSkillsやパス限定のルールに逃がす設計が推奨されています。
Skillsの強み・弱み — 選ばれないと発動しない
Skillsの強みは、使われるまでのコストがほぼゼロなことです。説明文だけが常時読み込まれ、本文は呼ばれたときにだけ展開されます。弱みは、Claudeが自動選択する運用にした場合、説明文が曖昧だったり他のSkillと似ていたりすると、狙ったSkillが選ばれない、あるいは無関係なSkillが選ばれることです。確実に使わせたい処理は/名前で明示的に呼び出す運用にするか、そもそも強制力が要るならhookに任せる判断も要ります。
使い分け早見表
| 状況 | 選ぶ機構 | 理由 |
|---|---|---|
| プロジェクトの規約・ビルドコマンドを毎回知っておいてほしい | 選ぶ機構CLAUDE.md | 理由常時オンで、あなたが書いた事実として確実に届く |
| 応答のトーン・役割・出力形式そのものをターンごとに変えたい | 選ぶ機構Output style | 理由システムプロンプト自体を書き換えられる機構(--append-system-promptは追記型で、既存のシステムプロンプトを残したまま末尾に足す点が異なる) |
| ときどき必要な手順書・API仕様のような参照資料を持ちたい | 選ぶ機構Skills | 理由使わないときのコストがほぼゼロ |
/deployのように名前で確実に呼び出したい定型作業 | 選ぶ機構Skills | 理由呼び出し方式で発動が保証される |
| 外部サービスへの接続そのものが要る | 選ぶ機構(どれでもない、MCP) | 理由3機構はいずれも接続手段を持たない |
外部接続やサブエージェント・hooksとの役割分担は、この3機構だけでは決まりません。その境界はSkills・MCP・サブエージェント・hooksの4機構比較で扱っています。CLAUDE.mdの階層構造そのものを詳しく知りたい場合はCLAUDE.mdの三層構造を参照してください。
3つは組み合わせられるか
3つは同時に使えます。むしろ組み合わせるのが通常の運用です。CLAUDE.mdが常時オンの規約を担い、output styleがターンごとの応答の性格を決め、Skillsがときどき必要になる手順を担う、という三層構成が典型例です。
具体的には、CLAUDE.mdに「pnpmを使う、コミット前にテストを実行する」という常時ルールを置きます。keep-coding-instructions: trueのoutput styleでコミットメッセージの書式だけを変えます。リリース手順は/releaseのSkillとして呼び出す、という構成なら3つが無理なく共存します。output styleが既定でCode向けの組み込み指示を外す設計になっているのは、コーディングをしない役割(ドキュメント執筆など)専用に使うケースを想定しているためです。通常の開発フローではkeep-coding-instructions: trueにして共存させるのが基本形です。
まとめ
output style・CLAUDE.md・Skillsは、それぞれ違う場所で動く別レイヤーの機構です。システムプロンプトを書き換えるか、ユーザーメッセージとして常時追加するか、呼び出し時にだけ注入するか、という差があります。常時知っておいてほしい事実はCLAUDE.md、応答の性格そのものを変えたいならoutput style、ときどき必要な手順はSkills、という切り分けが基本線になります。output styleとルートのCLAUDE.mdは、実は「セッション開始時に1回だけ読み込まれ、変更は次の/clearまで反映されない」という共通の挙動を持つ点も覚えておくとよいでしょう。3つは組み合わせて使えるので、まずCLAUDE.mdで土台を作り、必要に応じてoutput styleとSkillsを足していく順番に無理がありません。
よくある質問
output styleを切り替えると、CLAUDE.mdの内容は消えますか
消えません。両者は別のレイヤーで管理されており、CLAUDE.mdの内容自体が失われることはありません。切り替えが実際に効く次のセッションではシステムプロンプト全体が読み直されます。セッション途中の切り替えはその場のキャッシュに影響しません。
Skillsの本文はCLAUDE.mdのように毎回トークンを消費し続けますか
いいえ。デフォルトでは説明文だけがセッション開始時に読み込まれ、Claudeがどのスキルを使うか判断する材料になります。本文が展開されてトークンを消費するのは、実際にそのSkillが呼び出された、または選択された時点だけです。
管理ポリシーでoutput styleを固定した場合、CLAUDE.mdやSkillsも同様に組織で強制できますか
はい。CLAUDE.mdは管理ポリシースコープの専用ディレクトリに置くことで組織全体に配布でき、Skillsも同様に管理ポリシースコープからの配布が可能です。この場合、同名のSkillが個人やプロジェクトのスコープにあっても、管理ポリシースコープのものが優先されます。
サブエージェントは呼び出し元のoutput styleを引き継ぎますか
引き継ぎません。output styleはメイン会話にのみ適用され、サブエージェントは自分自身のシステムプロンプトで動きます。例外は親の会話をそのまま複製するforkで、これは親のシステムプロンプト全体を引き継ぐため、親が選んでいたoutput styleの影響も受けます。