Claude Codeの仕組み講座(講師のためのエンジニア水準)
区分1 AIの動き方の芯★★★会話の先頭に、毎回付けて送られる指示があります。 公式の用語集では、「道具の使い方」「安全に振る舞うこと」「返事の形式」などをまとめた決まり、と説明されています。公式では「システムプロンプト」と呼びます。
あなたが書く物ではありません。 作業フォルダや OS といった環境の情報、CLAUDE.md、出力スタイルの指示は、システムプロンプトではなく会話の側に入ります(公式)。 事務所にたとえると、新入社員が最初に渡される「会社全体の就業規則」です。
作業場や自分用に、あなたが書いておく指示のファイルです(くわしくは No.08)。 会社全体の就業規則とは別に、「うちの部署ではこうする」と渡す運用ルールにあたります。
そのときの依頼です。「今日はこの資料を直して」のように、上司からその日に出る指示にあたります。
| 誰が書く | いつ届く | |
|---|---|---|
| システムプロンプト | Claude Code(Anthropic) | 毎回の先頭 |
| CLAUDE.md | あなた | 起動時に読み込まれる |
| 会話の指示 | あなた | 送るたび |
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回で作られて記録され、会話を圧縮するまでは、そのまま使い回されます(公式)。 途中で中身を変えても、すぐには反映されません。
公式は、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(許可)
| 層 | 事務所のたとえ |
|---|---|
| システムプロンプト | 会社全体の就業規則(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月時点の公式。