Claude Codeの仕組み講座(講師のためのエンジニア水準)

区分1 AIの動き方の芯★★★

No.03 指示の層(システムプロンプト・CLAUDE.md・会話)

AIに渡される指示が、どんな層になって、どう重なるかの単元です。「CLAUDE.md に書いたのに守ってくれない」という、受講生の定番の質問に答えるための土台なので、この単元はしっかりやります。
目次
  1. 第0章 前提知識
  2. 第1章 指示の層と、重なり方
  3. 第2章 なぜ指示が守られない時があるのか
  4. 第3章 講義で使える図のたとえ
  5. 確認問題

第0章 前提知識

① システムプロンプト :Claude Code が最初に渡す指示

会話の先頭に、毎回付けて送られる指示があります。 公式の用語集では、「道具の使い方」「安全に振る舞うこと」「返事の形式」などをまとめた決まり、と説明されています。公式では「システムプロンプト」と呼びます。

あなたが書く物ではありません。 作業フォルダや OS といった環境の情報、CLAUDE.md、出力スタイルの指示は、システムプロンプトではなく会話の側に入ります(公式)。 事務所にたとえると、新入社員が最初に渡される「会社全体の就業規則」です。

② CLAUDE.md :あなたが書く、作業場の決まり

作業場や自分用に、あなたが書いておく指示のファイルです(くわしくは No.08)。 会社全体の就業規則とは別に、「うちの部署ではこうする」と渡す運用ルールにあたります。

③ 会話の指示 :いま、あなたが打った依頼

そのときの依頼です。「今日はこの資料を直して」のように、上司からその日に出る指示にあたります。

④ 似た言葉との違い

誰が書く いつ届く
システムプロンプト Claude Code(Anthropic) 毎回の先頭
CLAUDE.md あなた 起動時に読み込まれる
会話の指示 あなた 送るたび

第1章 指示の層と、重なり方

① 層は大きく4つ 必ず覚える

AIに届く指示を、届く場所で分けると次のようになります。

【先頭】 システムプロンプト(Claude Code が用意)
   ↓ このあとに、会話の中で追加されていく
【会話の中】 CLAUDE.md / 出力スタイル / スキルの一覧
   ↓
【会話の中】 フックが返した追加の文章 / 「ファイルが変わった」などの通知
   ↓
【会話の中】 あなたの依頼

大事な点は、CLAUDE.md はシステムプロンプトの一部ではないということです。 公式の説明では、CLAUDE.md は「システムプロンプトのあとに、会話の中のユーザーメッセージとして届けられる」と書かれています。

会話の中で Claude Code が自分で足す文章は、「システムリマインダー」と呼ばれます。 公式の用語集では、次の物がシステムリマインダーとして届くとされています。

つまり、あなたが書いていないのに従っているルールがある時は、システムプロンプトか、このシステムリマインダーが出どころです。 公式のドキュメントにも、Co-Authored-By(コミットに付く「共同作成者」の署名の行)が付いた、という例が挙がっています。

記憶(auto memory。Claude が自分で書きためるメモ。No.08で扱います)は、会話の始めに MEMORY.md の最初の200行(または25KB)が読み込まれる、と公式に書かれています。ただし、図のどの層で届くかは公式に明記が無いので、上の図には入れていません。

② 重なった時の優先 必ず覚える

指示が重なったとき、どれが勝つのでしょうか。 ここは、「必ずこの順で勝つ」と決められた仕組みはありません。公式の説明から言えることは、次の4つです。

「既定の動きより優先する」と添えられるのに、第2章で「お願いであって強制ではない」と言うのは、矛盾して聞こえるかもしれません。ここは、次のように分けて話せます。

だから講師としては、「上が勝つ」と断言せず、「重く扱ってはもらえるが、矛盾があると片方が選ばれることがある。だから矛盾を残さない」と教えるのが正確です。

③ 層をいじる方法 さらっと

システムプロンプトそのものを触る方法も、公式にあります。 どちらも、claude コマンドに付け足す「旗」(オプション)です。

方法 何が起こるか
--append-system-prompt 既定のシステムプロンプトのあとに、自分の文を足す
--system-prompt 既定のシステムプロンプトを丸ごと入れ替える

入れ替えると、道具の使い方や安全のための指示も消えます。 公式は、Claude Code のままの役割で追加のルールを足したいなら「足す」方を、まったく別の用途のエージェントを作るなら「入れ替える」方を勧めています。

普段の講義では、CLAUDE.md だけで足ります。 この2つは、スクリプトで動かす時などに使うと覚えておけば十分です。

また、システムプロンプトは会話の最初の1回で作られて記録され、会話を圧縮するまでは、そのまま使い回されます(公式)。 途中で中身を変えても、すぐには反映されません。

第2章 なぜ指示が守られない時があるのか

① CLAUDE.md は「お願い」であって「強制」ではない 必ず覚える

公式は、CLAUDE.md を「文脈であって、強制される設定ではない」と書いています。 Claude はそれを読んで従おうとしますが、厳密に守る保証はありません。

絶対に外せないことは、お願いではなく仕組みで止めます。 公式は、そのために、決まった時点で必ず動くフック(No.10)を挙げています。許可の設定の deny(「この操作は拒否する」という禁止ルール。No.13で扱います)も同じ役目です。

たとえば「必ずテストを実行する」を確実にしたいなら、CLAUDE.md に書くだけでなく、作業の区切りでフックを動かして「テストが走ったか」を確かめる形にします。走っていなければ、フックが知らせて先へ進ませない、ということです。公式も、コミットの前や編集のあとなど「決まった時点で動かしたいこと」はフックで書くよう勧めています。

② 守られにくくなる、よくある原因 必ず覚える

公式が挙げている原因は、次のとおりです。

読み込まれているかを確かめるには /context を使います。内訳の中の「Memory files」という一覧に、読み込まれた CLAUDE.md が出ます。一覧に無ければ、Claude には見えていないので、守る以前の問題です。 /memory は、その CLAUDE.md や記憶のファイルを一覧から選んで開き、直すための操作です(記憶のオン・オフの切り替えもここにあります)。

③ 書き方で変わる さらっと

公式の目安は「具体的に、短く」です。 「返事は日本語」のように確かめられる形で、長い手順は CLAUDE.md ではなくスキル(No.09)に移します。

○ 受講生によく聞かれる質問① 「CLAUDE.md に書いたのに、守ってくれません」
 答え方:CLAUDE.md は「お願い」として読まれるだけで、強制ではありません。まず /context で読み込まれているかを見る。次に、あいまい・矛盾・長すぎないかを見る。絶対に守らせたい物は、フックや許可の deny で仕組みにします
○ 受講生によく聞かれる質問② 「システムプロンプトは見られますか?変えられますか?」
 答え方:Claude Code の既定のシステムプロンプトの全文は、公式ドキュメントには載っていません。変える方法は、足す --append-system-prompt と、入れ替える --system-prompt です。普段は CLAUDE.md で足ります
○ 受講生によく聞かれる質問③ 「会話の最初に言ったことを、途中で忘れました」
 答え方:会話が長くなると、古い部分が要約されて、細かい指示が落ちることがあります。毎回守らせたいことは、会話ではなく CLAUDE.md に書きます(No.06)
○ 関係する単元:No.06(圧縮)/No.08(CLAUDE.md)/No.10(フック)/No.13(許可)

第3章 講義で使える図のたとえ

層 事務所のたとえ
システムプロンプト 会社全体の就業規則(Anthropic が書く)
CLAUDE.md 部署の運用ルール(あなたが書く)
記憶 担当者が自分で付けた業務メモ(届き方は公式に明記なし)
スキルの一覧 手順書の背表紙(中身は必要な時に開く)
会話の指示 今日の上司の依頼
フックや許可の deny 入退室ゲート(お願いでなく、物理的に通さない)

ただし、本物の会社と違って、「就業規則が必ず勝つ」と決まった仕組みはありません。 就業規則もルールも依頼も、全部が同じ机に並べられて、モデルが読んで判断する、と話すと正確です。

指示は層になって届く。CLAUDE.md は会話の中に届く「お願い」で、強制ではない。絶対に守らせたい物は、フックや許可で仕組みにする。

確認問題

問1 受講生が「CLAUDE.md はシステムプロンプトの一部ですよね?」と聞いてきました。正しい説明は?

問2 CLAUDE.md に「必ずテストを実行する」と書いたのに、守られない時があります。次の対応で、仕組みとして一番確実なのは?

問3 作業場の CLAUDE.md が長くなり、矛盾する指示も混ざってきました。守られにくくなる理由として正しいのは?

出典:Claude Code 公式「How Claude remembers your project」(https://code.claude.com/docs/en/memory)/「Glossary」(https://code.claude.com/docs/en/glossary)/「CLI reference」(https://code.claude.com/docs/en/cli-reference)/「Commands」(https://code.claude.com/docs/en/commands)/「Modifying system prompts」(https://code.claude.com/docs/en/agent-sdk/modifying-system-prompts)。内容は2026年10月時点の公式。