Claude Codeで作業を分担させたい人向け
メイン会話に大量の検索結果やログを流し込みたくない場面で使う。リサーチ役と執筆役を分けて記事を量産したい、コードレビュー専門の担当を作って書き換えされない形でレビューだけさせたい、初見プロジェクトを高速に探検させたい、といったときに <code>.claude/agents/<name>.md</code> に定義ファイルを置き、メイン会話から呼び出して走らせる
Agentは、Claude Codeのメイン会話とは別の、独立した作業部屋で動く専門担当者の仕組みです。リサーチや書き直しのように会話を膨らませがちな脇仕事をAgentに丸投げすると、結果の要約だけがメイン会話に戻ってきて、本筋の文脈が荒らされません。
定義は1ファイル1Agent。.claude/agents/<name>.md という決まった場所に、YAMLの設定ヘッダーと指示文を書いた小さなテキストファイルを置くだけで増やせます。私は記事執筆と監査を別Agentに分けていて、メイン会話を「指揮官」として使う運用に落ち着きました。
噛み砕くと、Agentは「専門業者を呼ぶ内線電話」
イメージとしては、社内の総務(メイン会話)が、案件ごとに外部の専門業者に内線で発注するような仕組みです。法務には法務担当、デザインにはデザイン担当、と業者を呼び分ける。各業者はそれぞれ別の作業部屋を持っていて、自分の手元の資料だけ見て仕事をします。
総務に上がってくるのは「終わりました、結論はこれです」という報告書1枚だけ。業者が机に広げた書類の山は総務の机に持ち込まれません。だからメイン会話の机が片付いたまま保てる、というのがAgentの一番の旨味です。
大事な前提:Agentは「呼ばれて動く」側、起動するのは Agent ツール
Agentと、Agentを呼び出すための仕組みは別物です。.claude/agents/news-researcher.md のようなファイルが「Agentの定義」で、これを実際に走らせるときは Claude Code 本体が Agent ツールを使って呼び出します。2026年初頭まで Task ツールという名前でしたが、2.1.63 で Agent ツールに改名されました(古い Task(...) 表記もエイリアスとして残っています)。
つまり、ファイルを置いただけでは何も起きません。メイン会話側がAgentツールで呼んで、初めて作業が始まる側だ、ということを押さえておくと、後の落とし穴を避けやすくなります。
「AIニュース記事を作る」を例に、実際の手順を見る
毎週リリースされるAIツールのニュースをまとめたい、というよくある題材で、Agentを2つに分けた構成を作ってみます。リサーチ役と執筆役を分け、メイン会話は両者の指揮だけする形です。
ステップ1: プロジェクト直下に Agent置き場を作る
プロジェクトのルートに移動して、Agentの定義置き場を作ります。.claude/agents/ はClaude Codeが自動で読みに行く決まった場所です。
$ mkdir -p .claude/agents
ステップ2: リサーチ役のAgent定義を書く
1つ目は「公式リリース・ブログ・SNSポストを集めて要約だけ返す」担当。読み取り系の道具だけ渡して、書き換えはできない設定にします。
$ cat > .claude/agents/news-researcher.md <<'EOF'
---
name: news-researcher
description: AIツールの最新リリース情報を一次ソースから集めて要約する
tools: Read, Grep, Glob, WebFetch, WebSearch
model: sonnet
---
あなたは AIニュース調査の専門担当です。
公式ブログ・リリースノート・開発者のXポストから一次情報を集め、
出典URL付きで「何が変わったか」だけを箇条書き10行以内に圧縮して返してください。
推測や感想は含めないこと。
EOF
ヘッダー部分の tools に書いた道具だけが、このAgentの手元に渡ります。書き換え系の道具を渡していないので、間違ってもファイルを破壊されない、という安全弁になります。
ステップ3: 執筆役のAgent定義を書く
2つ目は、リサーチの要約を受け取って記事ドラフトを書くAgent。文体ルールを指示文に直接書いておけば、毎回同じトーンで書いてもらえます。
$ cat > .claude/agents/news-writer.md <<'EOF'
---
name: news-writer
description: リサーチ結果を素材に、AIツールのニュース記事ドラフトを書く
tools: Read, Write, Edit
model: sonnet
---
あなたは AIニュース記事のライターです。
news-researcher が返してきた箇条書き要約を素材に、
冒頭3文で結論、h2は質問形、最後にFAQをつけた1500字前後の記事ドラフトを書きます。
出典URLは末尾の参考リンクにまとめること。
EOF
ステップ4: メイン会話から両方を呼ぶ
セッションを再起動して、メイン会話から普通の依頼文を投げます。Claude Code 本体がAgentの説明文を読んで、自分で「このタスクは news-researcher 向きだな」と判断して投げてくれます。
「今週リリースされたAIツールでまとめ記事を1本書きたい。
news-researcher で5件分集めて、その要約を news-writer に渡してドラフトにして。」
このとき、画面上では news-researcher が黙々とWebFetchを繰り返しているのが見えますが、その大量の取得結果はメイン会話には流れ込みません。最終的に「こういう箇条書きが集まりました、ドラフトはこれです」という結果だけがメイン会話に戻ってきます。
ステップ5: 並列で動かす
2件以上のAgentを同時に呼ぶと、Claude Codeは並列で起動してくれます。「リサーチをツール5件分まとめて並列で走らせて」と頼めば、5本のリサーチが同時に進行します。1本ずつ順番にやるより明らかに速い。
ステップ6: ここで初心者がやりがちな勘違い
「Agentを呼んだから、メイン会話で開いていたファイルや変数も引き継がれる」と思いがちですが、これは違います。Agent は独立した別の作業部屋で起動するので、メイン会話で cd で移動した先の場所も、ターミナルが覚えている設定値も引き継がれません。必要な情報は、メイン会話側が依頼文に明示的に書いて渡す必要があります。
つまり Agent は何をしてくれるのか
- やってくれる: 脇仕事の作業ログをメイン会話から隔離する/同じ手順を繰り返すタスクを定型化する/使える道具を絞って暴走を防ぐ
- やってくれない: メイン会話の状態を引き継ぐこと/別Agentと自動で会話して連携すること/自分でさらにサブAgentを呼び出すこと(入れ子は禁止)
- 意味が薄い場面: タスクが30秒で終わる軽いもの/結果が短くてメイン会話に置いても邪魔にならないもの/一度しか発生しない単発作業
使いどころ3シナリオ(具体題材で再現)
シナリオ1: 料理ブログを始めて、毎週レシピ記事を量産したいとき
レシピ写真の整理、栄養価データの取得、文章ドラフトの3工程を別々のAgentにします。recipe-photo-organizer が画像ファイル名を整える、nutrition-fetcher が公開データから栄養価を取りに行く、recipe-writer がドラフトを書く。私は同じパターンを記事執筆フローで使っていて、画像系の作業ログがメイン会話を埋めなくなったのが一番ありがたいです。
シナリオ2: 家計簿アプリを作っていて、コードレビューを毎回頼みたいとき
code-reviewer Agent を作り、書き換えツールを渡さずに Read/Grep だけにしておきます。コードを書き終えたタイミングで「code-reviewer に見てもらって」と頼むと、レビュアー視点のコメントだけが返ってきます。書き換え権限を持たせていないので、レビュー中に勝手にコードを書き換えられる事故が起きません。
シナリオ3: OSSをcloneしてきた直後、構造を把握したいとき
初見のプロジェクトを探検する explorer Agent を呼びます。Claude Code には Explore という標準のAgentが組み込みで入っていて、読み取り系の道具だけで動く高速モードになっています。「このプロジェクトの責任分担を3行で要約して」と頼めば、メイン会話が grep の出力で埋まらずに、結論だけ受け取れます。1万行のファイルツリーをメイン会話に流し込まずに済むのが効きます。
初心者が踏みやすい落とし穴
- Agentファイルを置いただけでは反映されない。Claude Codeはセッション開始時にAgent定義を読み込むため、書いた直後はセッション再起動するか
/agentsを叩いて読み直させる必要があります - Agent と Agent ツールを混同する。前者は呼ばれる側の定義(
.claude/agents/foo.md)、後者は呼び出すための道具(旧Task)。「Agentを使う」と言うとき、定義を作る話なのか呼び出す話なのかを意識して切り分けましょう - メイン会話の状態が引き継がれると思い込む。Agentは独立した別の作業部屋で起動するため、開いていたファイル、設定値、移動先のフォルダは引き継がれません。必要な情報は依頼文に明示する
- サブAgentがさらにサブAgentを呼べる、と思い込む。入れ子起動は禁止されています。多段の連携が要るなら、メイン会話側が直列・並列を組み立てる構成にする
- 道具を渡しすぎる。
toolsを書かないと全部の道具が継承されます。書き換えされたくないAgent(リサーチ専用など)には、読み取り系だけ渡すように明示的に絞る方が事故が減ります - description を雑に書く。Claude Code は description を読んで「このタスクをどのAgentに振るか」を判断します。「コードレビューに使う」みたいな曖昧な説明だと自動振り分けが効かず、毎回手で名指しすることになります
- 1セッションに大量のAgent定義を置く。10個20個と増やすとメイン会話側の判断が遅くなります。本当に再利用するものだけ残し、単発タスクはメイン会話で直接やる方が早い場合も多いです
書き方
.claude/agents/<name>.md に下記の形で定義ファイルを置く(YAMLヘッダー+指示文)
---
name: 識別子(小文字とハイフン)
description: いつこのAgentに任せるかの説明
tools: 渡したい道具をカンマ区切り(省略すると全部継承)
model: sonnet / opus / haiku / inherit のいずれか
---
ここに指示文(システムプロンプト)を書く
やってみるとこうなる
入力
メイン会話から普通の依頼文で呼び出す:
「news-researcher で今週のAIツール5件のリリース情報を集めて、その要約を news-writer に渡してドラフトにして」
出力例
メイン会話の画面には、Agentが裏で走っていることを示す表示が出る。最終的にメイン会話に戻ってくるのは結果の要約だけ:
● news-researcher が完了
└ 5件分の一次情報を集めて出典URL付きで要約しました
● news-writer が完了
└ 1500字のドラフトを drafts/ai-news-w17.md に書き出しました
WebFetch の生の取得結果や grep の長い出力は、メイン会話には流れ込まない
このページに出てきた言葉
- メイン会話
- あなたが直接Claude Codeとやり取りしている本流の会話。文脈はここに溜まり続ける
- サブエージェント
- メイン会話とは別の独立した作業部屋で動く専門担当。Agent と同じ意味で使われる
- .claude/agents/
- プロジェクト直下のAgent定義置き場。Claude Codeがセッション起動時に自動で読み込む
- YAMLヘッダー
- Agent定義ファイルの先頭で <code>---</code> で囲んで書く設定欄。名前・使える道具・モデルなどをキーと値で書く
- Agent ツール
- メイン会話側がAgentを起動するための呼び出し手段。2026年初頭まで Task ツールという名前だった(2.1.63 で改名、旧名もエイリアスとして動く)
- Explore / Plan / general-purpose
- Claude Code に最初から組み込まれている標準Agent。コードベース探検・計画立案・複合タスク用に自動で振り分けられる
- description
- Agent定義の必須項目。Claude Code はこの説明文を読んで「このタスクはどのAgentに任せるか」を自動判断する