Claude Codeを動かす6つの中核を公式仕様から解剖。ループ・記憶・スキル・委譲・接続・統制の役割と動作、設定ファイルの住所、フックの発火順序、初心者の作り方、Codex・Gemini・Grok比較まで。

Claude Codeを「賢いチャット」だと思って触ると、その正体を取り逃がす。実体は、文脈を集めて道具を使い結果を確かめる作業を自分で反復するエージェントであり、その反復に会社の前提を渡し、手順を呼び出し、別の作業へ委譲し、外部の道具へつなぎ、危険を機械的に止める——この六つの仕組みの組み合わせで動く。注目すべきは、そのほとんどがプログラムではなくmarkdownとYAMLとJSONという「設定としてのデータ」で表現される点だ。コードを書かずに、置き場所と書き方だけでエージェントの振る舞いが決まる。本稿は、Agent Loop・Memory・Skills・Subagents・MCP・Hooksの六概念を、2026年6月の公式仕様(code.claude.com/docs)に基づいて、役割・動作原理・ファイルの住所・連携アルゴリズム、そして初心者の作り方から他社ツールとの比較まで、一つずつ分解する。出発点は、すべてが回る心臓部である。

エージェントループ ― 六概念が回る心臓部

エージェントループと6概念の連携 ― 収集・推論・行動・検証・反復の循環
エージェントループと6概念の連携 ― 収集・推論・行動・検証・反復の循環

Claude Codeの中核は、文脈収集→行動→検証という三段を、タスクが終わるまで自律的に反復するループである(Claude Code Docs、2026年)。第一段の文脈収集では、対象ファイルの読み取り、コードの検索、コマンド出力の解析を通じて状況を把握する。第二段の行動では、Read・Edit・Write・Bash・Glob・Grepといったツールを呼び出して実際に手を動かす。第三段の検証では、テストを走らせ出力を確かめ、その結果を次の文脈へ取り込む。各ツールの実行結果がループへ再入力され、モデルは前段の情報をもとに次の一手を決め、必要なら軌道を自ら修正する。学術的に言えば、これは推論(Thought)→行動(Action)→観察(Observation)を繰り返すReActの実装であり、Claude Codeのエージェント・ハーネスがそのサイクルを回している。

このループを成り立たせる裏方が文脈管理だ。会話履歴・ファイル内容・コマンド出力・CLAUDE.md・読み込み済みスキル・システムプロンプトが文脈窓に積み上がり、上限に近づくと自動コンパクションが発火して古いやり取りを要約し、古いツール出力から順に削り、CLAUDE.mdは再読込して入れ直す。停止は、ユーザーがEscで中断したとき、タスク完了とモデルが判断したとき、あるいはAPIエラーが起きたときに訪れる。残る五概念は、この循環の「どの段を担うか」で覚えると整理がつく——Memoryは収集へ前提を渡し、Skillsは推論で手順を呼び出し、Subagentsは行動で別ループへ委ね、MCPは収集と行動へ道具と資料を足し、Hooksは行動と停止を統制する。

メモリ ― CLAUDE.mdと自動記憶の二層

セッションをまたいで指示や好みを覚えさせる仕組みがMemoryで、人が書くCLAUDE.mdと、AIが書く自動記憶(auto memory)の二層から成る。CLAUDE.mdは置き場所で役割が分かれる。組織が配る管理ポリシー版、自分の全プロジェクトに効く個人版(~/.claude/CLAUDE.md)、チームでgit共有するプロジェクト版(./CLAUDE.md または ./.claude/CLAUDE.md)、そして自分だけの非共有版(./CLAUDE.local.md、自動でgitignoreされる)である。読み込みはファイルシステムの根から作業ディレクトリへ上りながら全ファイルを連結し、親の規約から子の規約の順に積む。

文中で @docs/api.md のように書くと別ファイルを取り込め、相対・絶対の両パスに対応し、再帰は最大4ホップまで、外部の取り込みは初回に承認を求める。既にAGENTS.md(複数ツール共通の指示ファイル)を使うリポジトリなら、CLAUDE.mdから @AGENTS.md で読み込めばよい。もう一層の自動記憶は、セッション中に学んだビルド手順や設計判断をAIがMEMORY.mdへ書き留め、その先頭200行(または25KB)だけを常駐させ、詳細はトピック別ファイルへ逃がして必要時に読む——~/.claude/projects/<プロジェクト>/memory/に保存され、同一リポジトリのworktree間で共有される。/memoryコマンドで、読み込まれた全CLAUDE.mdと自動記憶を一覧・編集でき、有効・無効も切り替えられる。

スキル ― 段階的開示で手順を呼び出す

繰り返す作業を手順書としてパッケージ化するのがSkillsで、一つのフォルダと一枚のSKILL.mdが実体だ。先頭のYAMLはnamedescription(1536字上限、「いつ使うか」まで書く)の二つだけが必須で、任意項目にallowed-tools(実行中に確認なしで許す道具)、model(opus/sonnet/haiku/fable等)、paths(ファイルが合致した時だけ自動発動)、disable-model-invocation(trueで人間の/名前専用に)、context: fork(隔離した別文脈で実行)などが並ぶ。Claudeが依頼文とこのdescriptionの意味的な一致でスキルを自動発動するため、機能だけでなく発動条件まで書いたスキルほど正確に呼ばれる。

設計の核は段階的開示(progressive disclosure)である。起動時に文脈へ載るのは各スキルの「名前+説明」だけで、本文(手順・語彙・出力様式・チェックリスト)はそのスキルが発動した瞬間に読み込まれ、付属のテンプレートやスクリプトはさらに本文が参照した時だけ開く。これにより、スキルを増やしても起動時の常駐コストは目録ぶんに抑えられる。実装上の細部として、再圧縮の後はスキル1本につき最新5,000トークンが、複数スキルで合計25,000トークンの共有予算の中で入れ直される。!+バッククォートで囲んだシェルコマンドは、スキル本文がClaudeへ渡る前に実行されて結果が差し込まれる動的注入も使える。配置は個人用の~/.claude/skills/、プロジェクト用の.claude/skills/、プラグイン経由の三系統だ。

サブエージェント ― 独立した文脈で委譲する

大量の探索や専門作業を主会話から切り離すのがSubagentsで、.claude/agents/に置くmarkdownで定義する。先頭YAMLはnameと、Claudeが委譲を判断するdescriptionが必須で、任意にtools(許可する道具/inheritで全継承)、modelpermissionModemaxTurnsskills(本文ごと先読みするスキル)、mcpServersmemory(user/project/localの永続記憶)、isolation: worktree(gitのworktreeで隔離実行)を持てる。要点は、各サブエージェントが新しい文脈窓・独自のシステムプロンプト・委譲タスクだけを抱えて起動し、その中間のやり取りは親へ返さず最終結果だけを戻すことだ。これにより、探索の雑多な出力が主会話の文脈窓を圧迫しない。

組み込みのサブエージェントは三つある。Haikuで動き読取専用のExplore(高速なコードベース探索、CLAUDE.mdやgit状態の読み込みすら省く)、計画立案時に調べるPlan、そして全ツールを持つgeneral-purpose(複雑な多段作業)である。同名定義は優先順位で一つに決まり、組織の管理設定が最も強く、次いでコマンドライン、プロジェクト、個人、プラグインの順だ。サブエージェントの開始と終了にはSubagentStart・SubagentStopのフックが噛み、memoryを設定すれば案件をまたいで学習を積める。前段のSkillsが「手順の外部化」なら、Subagentsは「文脈の外部化」であり、役割が違うので併用が正しい。

MCP ― 外部の道具と資料をつなぐ規格

Claude Codeを外部のAPI・データベース・SaaSへつなぐ共通規格がMCP(Model Context Protocol)で、よく「AIのUSB-C」と呼ばれる。通信は枯れた規格JSON-RPC 2.0で行い、同一マシン内なら標準入出力(stdio)、遠隔ならHTTP(Streamable HTTP)やSSEを使う。サーバーが提供するのは三種類——実行する「ツール」、参照する「リソース」、手順の雛形「プロンプト」だ。ツールはClaudeが呼び出すと結果がループへ再入力され、名前はmcp__<サーバー>__<ツール>という名前空間を持つ。リソースは@<サーバー>:protocol://pathで引用でき、プロンプトは/mcp__<サーバー>__<プロンプト>としてコマンド化される。

定義はプロジェクト直下の.mcp.jsonに書くのが基本で、type(http/stdio)・commandurlheadersなどを並べる。スコープは個人ローカル・プロジェクト共有・個人グローバル・プラグインの順で優先され、同名サーバーは最優先の一つだけが接続される。遠隔サーバーが標準のエンドポイントを公開していれば/mcpからOAuthの認可が自動で走り、固定の認証情報やヘッダー生成コマンドも指定できる。文脈効率のために、既定ではMCPツールのスキーマを遅延読み込みし、必要になった時に検索して取り込む仕組み(ツール検索)が働き、ENABLE_TOOL_SEARCHで挙動を変えられる。サーバーが変更通知を送ればツール一覧は自動更新され、HTTP系は最大5回の指数的バックオフで再接続する。

{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": { "Authorization": "Bearer ${GITHUB_TOKEN}" }
    },
    "local-db": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@bytebase/dbhub"],
      "env": { "DSN": "postgres://..." }
    }
  }
}

フック ― ライフサイクルを機械的に統制する

フックの発火順序と制御 ― セッションの一生に沿った9イベントと入出力
フックの発火順序と制御 ― セッションの一生に沿った9イベントと入出力

モデルの判断に頼らず、ライフサイクルの定点で外部スクリプトを必ず走らせるのがHooksだ。中核となるイベントは、セッション開始のSessionStart、送信直後のUserPromptSubmit、ツール実行直前のPreToolUse、実行直後のPostToolUse、通知時のNotification、応答終了直前のStop、サブエージェント終了時のSubagentStop、自動要約の直前のPreCompact、終了時のSessionEndで、これに失敗系や権限系を加えた多数のイベントが公式に定義されている。各フックは標準入力でJSON(hook_event_nametool_nametool_inputsession_id等)を受け取り、終了コードで応答する。exit 0なら通過、exit 2ならブロックでstderrの理由がClaudeへ返り、これは許可ルールより優先される。さらにJSONを返してpermissionDecision(allow/deny/ask)で精密に制御もできる。

設定はsettings.jsonmatcher(ツール名への正規表現)で配線し、command(シェル)のほかにhttpprompt(Haikuでの一手評価)・agent(サブエージェントによる多段検証)・mcp_toolという実行種別を選べる。見落としやすい境界が一つある——フックが介在するのはAIのツール呼び出しだけで、人間が端末で直接叩くコマンドには介在しない。だから「危険操作を機械的に止める檻」を本気で作るなら、AI用のPreToolUseと、人間用のgit pre-commitのような別の層を、両方張る必要がある。フックは、確率的に振る舞うモデルの周りに、決定論的な安全柵と自動化を敷くための層である。

どこに置き、いつ読まれるか ― 識別と連携の設計

6概念の住所と識別 ― ファイル配置・読み込みタイミング・優先順位
6概念の住所と識別 ― ファイル配置・読み込みタイミング・優先順位

六概念の連携を「識別→連携→動作」の順で貫くと、設計思想が見えてくる。Claude Codeは起動時に決まった置き場所を走査して各概念を識別する。CLAUDE.mdは全文を文脈へ常駐させ、SkillsとSubagentsは「名前+説明」だけを目録として常駐させ、MCPはサーバーへ接続してツール一覧を取得し、Hooksは各イベントへ配線する。ここで重要なのは、起動時に読むのは軽い目録で、本体は実行中に必要になった時だけ読むという二段構えだ——Skillの本文は説明文が依頼に合致した時、Subagentの本文は委譲が決まった時、MCPツールは呼び出し時、Hookは対応イベントの発火時に初めて働く。

連携のアルゴリズムは、結局すべてがdescriptionの意味照合に帰着する。Skillsもsubagentsも、Claudeが依頼の意図と各定義の説明文を突き合わせて発動を決める。だから設計の勘どころは「いつ使うか」を説明文に書き切ることにある。優先順位は設定全体で共通で、組織の管理設定が最上位に立ち、コマンドライン引数、.claude/settings.local.json(自分専用・git非共有)、.claude/settings.json(チーム共有)、~/.claude/settings.json(個人既定)の順に弱まる。技術構成の面では、Claude Code本体はNode.jsで動くコマンドラインツールとして配布され(npm install -g @anthropic-ai/claude-code)、推論はClaudeのモデルが担い、MCPサーバーは任意の言語で書ける(公式SDKはTypeScriptとPython)。注目すべきは、六概念のうちMemory・Skills・SubagentsはコードではなくmarkdownとYAMLで、MCPとHooksの配線はJSONで表される点だ。振る舞いをコードでなくデータで宣言する——この「設定としての知能」が、非エンジニアでも編集でき、gitで配布でき、ツールを越えて持ち運べる理由になっている。

ゼロから作る ― 初心者の最初の一歩

何も知らない状態からの入口は驚くほど短い。Node.jsを入れてnpm install -g @anthropic-ai/claude-codeで導入し、プロジェクトのフォルダでclaudeと打って起動し、最初に/initを実行すると、コードベースを読んだ初期のCLAUDE.mdが自動生成される。ここまでで、会社の前提を渡す土台(Memory)ができる。次に小さなスキルを一つ作ると、手順の外部化が体感できる。

<!-- .claude/skills/pr-summary/SKILL.md -->
---
name: pr-summary
description: 変更内容からPRの説明文を作る。コミットや差分を要約して
  タイトルと本文を出すよう頼まれたときに使う。
allowed-tools: Bash(git log:*), Bash(git diff:*)
---
# PR説明文の作り方
1. `git diff` の要点を3行で要約する
2. 影響範囲・テスト状況・ロールバック手順を箇条書きにする
3. タイトルは変更の種類(feat/fix)を冒頭に置く

同じ要領で、.claude/agents/に読取専用の監査担当を一枚置けば委譲(Subagents)を、settings.jsonにPostToolUseの整形フックを書けば統制(Hooks)を、claude mcp addでサーバーを足せば接続(MCP)を、それぞれ最小構成で試せる。順序の勘どころは、いきなり全部入れないことだ。まずCLAUDE.mdとスキル1本で「賢い一般人」を「自分の助手」に変える感触をつかみ、効きめを確かめてから委譲・接続・統制を一枚ずつ足す——増やすほど起動時の常駐が膨らむという段階的開示の物理が、その節度に技術的な裏づけを与えている。

非エンジニアの使い方 ― 道具でなく言葉で設定する

コードを書けなくても、六概念の大半はそのまま使える。本質が「設定としてのデータ」だからだ。CLAUDE.mdは会社の前提・禁止事項・成果物の品質基準を日本語の文章で書く場所で、入社初日のオンボーディング資料に近い。スキルも、見出しと手順を箇条書きで書いたmarkdownにすぎず、「議事録から決定事項とToDoを抜く」「問い合わせ返信の下書きを作る」といった定型業務を、一度書けば毎回同じ品質で再生できる。MCPは、GoogleドライブやSlackやデータベースへつなぐ既製のサーバーをclaude mcp addで挿すだけで、資料の取得や記録の参照が会話の中で完結する。

非エンジニアが踏むべき実務の順番は、派手なデモを狙わず回収から逆算することだ。議事録整理が30分から5分になる、提案書の初稿が若手でも出せる、上司の確認時間が減る——この小さな成功体験が出て初めて次へ進める。注意すべきはフックで、ここは外部スクリプトを走らせる層なので、配線はエンジニアに任せ、利用者は「どの操作は止めてほしいか」を言葉で伝えて檻の仕様を決める側に回るのが現実的だ。AIに渡す仕事を分解し、成果物を人が確認できる形にし、失敗時に戻れるようにする——この設計の言葉さえ持てば、コードを書かずにエージェントを業務へ組み込める。

エンジニアの開発法 ― 安全柵を先に敷く

開発者にとっての勘どころは、自律性を上げることと防御を固めることを別の層で同時にやることにある。許可リスト(settings.jsonallow)には後戻りできる可逆コマンドだけをコマンド単位で列挙して確認地獄を消し、危険操作はdenyとPreToolUseフックで二重に止める。フックのpromptagent種別を使えば、生成物をHaikuや別のサブエージェントに毒見させてから通す検証も差し込める。スキルはallowed-toolsで実行中の権限を絞り、context: forkで重い処理を隔離し、pathsで対象ファイルに限って自動発動させる。サブエージェントはisolation: worktreeでgitのworktreeに閉じ込め、maxTurnsで暴走を抑える。

開発の単位は「コードを書く」から「振る舞いを宣言する」へ移る。CLAUDE.mdに会社の文脈を、SKILL.mdに再現したい手順を、agentに委譲の設計を、settings.jsonに檻を書き、それらをgitで配布して、新しいモデルが出るたびにチーム全員のエージェントが同じ腕前で動くようにする。この営みを支える土台が、フックの自動回帰テスト(合成したイベントJSONを流して檻の穴を機械的に可視化する)と、git pre-commitによる退行コミットの拒否だ。モデルの知能が上がるほど人間の仕事は減るのではなく、何をどこまで任せ、どこで人が確認するかという設計責任が露出する——強いモデルほど、会社側の設計が問われる。

Codex・Gemini CLI・Grokとの比較

Claude Codeで体系化された「六概念」(エージェントループ・メモリ・スキル・サブエージェント・MCP・フック)は、いまや他社のAIコーディングエージェントにも広がりつつある。三者の対応を概念ごとに並べると、収れんの度合いがはっきり見える。

概念Claude CodeCodex(OpenAI)Gemini CLI(Google)Grok(xAI)
指示・記憶CLAUDE.mdと自動記憶AGENTS.mdGEMINI.mdAGENTS.md(共通標準に依拠)
スキルSKILL.md(段階的開示)あり(system/curated/experimental)拡張機能に内包第一者の体系は未確認
サブエージェントあり(独立文脈)あり拡張で代替未確認
MCP接続あり(JSON-RPC)ありあり(mcpServers)対応が広がる
フック多数のイベント10種(TOML設定・ベータ)限定的未確認
エージェントループありありありあり

最も近いのがOpenAIのCodexで、永続指示のAGENTS.md、三層に分かれたスキル、MCP、ベータの10種フック(TOMLで設定)、サブエージェントまでを揃え、六概念のほぼ全てに対応物を持つ(OpenAI Developers、2026年)。ここで注意したいのは、ChatGPT(対話アプリ)とCodex(エージェント本体)が別物で、比較の相手はあくまでCodexである点だ。GoogleのGemini CLIは、文脈ファイルGEMINI.mdとMCP統合、そしてプロンプト・MCP・コマンドを束ねる拡張機能を持ち、スキルやサブエージェントやフックに相当する層は拡張機構の中に溶け込んでいる(Google、2026年)。xAIのGrokは三者で最も後発で、高速なコード生成モデル(grok-code系)を出しつつ、エージェントの作法はAGENTS.mdやMCPという業界共通の開放標準に乗る形が中心だ。

この収れんが意味するのは、SKILL.mdやAGENTS.md、MCPのJSON-RPCが事実上の共通言語になり、一度書いた手順や接続がツールを越えて動くようになったことだ。記者の観察では、競争の焦点は単一の高性能モデルから、誰がこの六概念を自社の文脈で深く設計し、安全柵ごと運用へ固定できるかへ移りつつある。エージェントの賢さが共通化するほど、差がつくのは、それを檻の中で自走させる設計力の側になる。