← AIバイブコーディングTips 一覧へ Claude Code Official / Steering

どの指示を、どこに書くかで差がつく

Claude Codeの挙動を決める方法は、CLAUDE.mdだけではない。rules・skills・subagents・hooks・output styles・system prompt追記を合わせて7種類あり、それぞれ読み込まれるタイミングもコストも違う。公式が出した比較表と「よくある書き方→推奨の書き換え」を、実例つきで読み解く。

この記事で手に入るもの

7つの方法を読み込みタイミング・compaction耐性・コンテキストコスト・向いている用途で並べた一覧、そして「今すぐ書き換えるべき5パターン」の具体例。今のCLAUDE.mdが太りすぎていないか、この記事で棚卸しできる。

01 — 7つの方法、何が違うか

「とりあえずCLAUDE.mdに書く」が肥大化の原因になる

Claude Codeの挙動を制御したいとき、多くの人はまずCLAUDE.mdに書き足す。手軽だからだ。だが方法によって「いつ読み込まれるか」「コンテキストの圧縮(compaction)でどう扱われるか」「常時払うコストか、必要な時だけのコストか」がまったく違う。公式記事はこれを1枚の表に整理している。

方法読み込みタイミングCompaction時コスト向いている用途
CLAUDE.md(ルート)セッション開始時、全体で保持キャッシュ化・再読込高(常時)ビルドコマンド、構成、チーム規約
CLAUDE.md(サブディレクトリ)該当ディレクトリ操作時のみ再読込まで消える低(必要時のみ)サブディレクトリ固有の規約
Rulesセッション開始時(path-scoped除く)Compaction時に再注入中(scope限定で低下)APIルールなど特定制約
Skills説明のみ常時、本体は呼び出し時予算内で再注入低(呼び出し時のみ)デプロイ手順など定型作業
Subagents説明のみ常時、本体は呼び出し時最終メッセージのみ返却低(分離コンテキスト)ログ分析など並列サイドタスク
Hooksライフサイクルイベント時Compactionの影響を受けない低(外部設定)リンター実行、通知等の自動化
Output styles / system prompt追記セッション開始時Compaction対象外中〜高役割・出力形式の大幅変更

ポイントは、「常に読ませたい情報」と「必要な時だけ読ませたい情報」を意図的に分けて置くということ。CLAUDE.mdルートは全セッションで常時コストを払う場所なので、ここが太るほど毎回のやり取りが重くなる。


02 — よくある書き方 → 推奨の書き換え

「CLAUDE.mdに全部書く」を卒業する

公式記事の「Quick tips」がそのまま棚卸しチェックリストになる。

よくある書き方推奨の書き換え
「毎回Xしたら必ずYする」をCLAUDE.mdに記述Hooks(settings.json)で自動実行にする
「これは絶対するな」をCLAUDE.mdに記述Hooks(PreToolUse)で決定的にブロックする
30行の手順をCLAUDE.mdに丸ごと記述Skills(.claude/skills/)に移す
APIルール全体をscope無指定のruleにするpathsで対象ディレクトリを限定する
個人的な好みをプロジェクトのCLAUDE.mdに記述ローカル・ユーザーレベルの設定に置く

「絶対に守らせたいルール」は、指示文では守らせきれない。CLAUDE.mdに"やるな"と書いても、それはお願いに過ぎない。本当に確実にブロックしたいなら、Hooksで機械的に止める設計にする。ここが一番見落とされがちな差。


03 — 具体例

実際にどう置き換わるか

01

モノレポでの自動振り分け

src/api/CLAUDE.mdにAPI固有の命名規約を書けば、ドキュメント編集など無関係な作業時には読み込まれない。ルートCLAUDE.mdを薄く保ったまま、領域ごとの規約を持てる

02

デプロイ手順をSkill化

「必ず実行したい5ステップの手順」は、CLAUDE.mdに書き続けるのではなく/deployのようなSkillにする。普段は説明文しか読み込まれず、呼び出した時だけ本体が展開されるので、常時コストを払わずに済む。

03

危険な操作をPreToolUseフックで止める

「このコマンドは実行させたくない」を確実に守らせたいなら、PreToolUseフックで呼び出し内容を検査し、条件に合致すれば拒否する。指示文で"お願いする"のではなく、機械的に弾く設計にできる。


04 — 自分の運用に当てはめる

「スキルのトークン設計」の続きだった

以前このサイトで書いた「自作スキルは適切なトークン量に設計されていない」という話は、今回の比較表で言えば「常時コストを払う場所(CLAUDE.md)」と「呼び出し時だけコストを払う場所(Skills)」の区別そのものだった。今回の公式記事は、その区別をCLAUDE.mdだけでなくrules・subagents・hooksまで含めた7方式に広げたものと捉えると理解しやすい。

今のCLAUDE.mdを見直す「本当に毎回必要な情報か」「手順やルールとして別の場所に移せないか」を1項目ずつ確認する。
"絶対にやるな"はHooksへ指示文で禁止しているだけの項目があれば、PreToolUseフックでの機械的ブロックに置き換えられないか検討する。
手順書はSkillに寄せるデプロイ・リリース・定型チェックのような「決まった手順」は、常時読み込みではなく呼び出し時読み込みのSkillに移す。

出典: Claude Blog — Steering Claude Code: CLAUDE.md files, skills, hooks, rules, subagents and more