長期プロジェクトをClaude Codeで進めていると、こんな場面ってありませんか?

Claude Code: 「Phase 2の作成が終了しました。動作確認をしていただいたうえで、次に Phase 3 へ進むかご判断ください。」

このとき、

– 本当に要件を満たせているか?

– 抜け漏れはないか?

– 次のPhaseに進んでいいのか?

を毎回手動で確認するのは、地味に疲れます。特に本業の合間に開発を進めている人にとって、判断疲れは大敵です。

これ、Subagent(サブエージェント)で自動化できます。

この記事では、Claude Codeで「Phase完了報告 → 自動チェックリスト生成 → 検証 → レポート出力」を実現する方法を、仕組みの理解から実際のファイル作成までまとめます。

—

## そもそもSubagentとSkill、どう違う?

Claude Codeで似たような拡張機能として「Subagent」と「Skill」がありますが、用途が違います。

### Subagentが向いているケース

– 特定の発話パターンに反応して起動させたい

– 専門タスクとして独立したコンテキストで動かしたい

– 複数ステップを自律的に実行させたい

### Skillが向いているケース

– 自然な発話でClaude側が判断して起動させたい

– プロジェクト横断で使い回したい

– フォーマットや参照ドキュメントが固定化できる

今回やりたいのは「Phase完了報告」という特定の発話パターンに反応させることなので、Subagentが正解です。

—

## 仕組み:なぜ自動起動するのか

ここが一番気になるポイントだと思います。

Claude Codeは、ユーザーとのやり取りの中で常に「この発話に対して、使えるサブエージェントはないか?」をチェックしています。

その判断材料が、Subagentファイルの先頭に書く `description` フィールドです。

name: phase-validator

description: Phaseの完了報告を受けて、自動でチェックリスト作成・検証・

レポート出力を行う専門エージェント。「Phase Xの作成が終了しました」

「次のPhaseへ進むかご判断ください」などの発話を検知した際に必ず起動する。

Claude Codeは内部的にこう判断します:

1. 「`Phase 2が終了しました` という発話が出た」

2. 登録されているサブエージェント一覧を確認

3. `phase-validator` のdescriptionにまさにその発話パターンが書かれている

4. このタスクは `phase-validator` に委譲すべき

つまり、descriptionは「私を呼ぶべきタイミングはこれです」という申告書として機能しているわけです。

### descriptionに書くべき3要素

効果的なdescriptionには次の3つを盛り込みます:

1. 何をするエージェントか(役割)

2. どんな発話・状況で起動すべきか(トリガー条件)

3. 具体的なキーワード例(パターンマッチの手がかり)

「必ず起動する」のような断定的な表現を使うと、Claude Codeの判断に強い後押しがかかります。

—

## 100%確実ではない、だから保険をかける

仕組み上、Claude Codeの「判断」に依存するので、100%自動起動を保証するものではありません。

そこで保険として、プロジェクトルートの `CLAUDE.md` にプロジェクト全体のルールとして明記しておきます:

“`markdown

## エージェント運用ルール

– Phase完了報告時(「Phase Xが終了しました」「次のPhaseへ進むかご判断ください」など)は、

  必ず phase-validator subagent を起動してチェックリストを生成すること

– レポートが ⚠️ または ❌ の場合、ユーザーの判断を仰ぐまで次Phaseの作業に着手しないこと

“`

これで description + CLAUDE.md の二重の発動条件になり、確実性が上がります。

—

## 実際の動作フロー

設計したエージェントの動きはこうなります:

“`

Claude Code: “Phase 2の作成が終了しました”

     ↓ (Claude本体が検知 → phase-validatorに自動委譲)

phase-validator subagent:

  1. ハンドオーバードキュメントからPhase 2の要件を読み込む

  2. git logや差分から実装内容を把握

  3. 要件 vs 実装でチェックリストを生成

  4. 各項目を実際に検証(ファイル存在、テスト実行、DB確認など)

  5. 結果をMarkdownで .claude/phase-reports/ に保存

  6. 合格 / 要修正 / 進行不可 の判定を返す

“`

ユーザーは何もしなくていい。報告を受けて自動でチェックが走る、というのが理想形です。

—

## ファイル構成と配置場所

Subagentは、プロジェクトルートに以下のように配置します:

“`

プロジェクトルート/

├── .claude/

│   ├── agents/

│   │   ├── code-reviewer.md

│   │   └── phase-validator.md   ← 今回作るファイル

│   └── phase-reports/            ← レポート出力先

└── CLAUDE.md

“`

`.claude/agents/` フォルダが無ければ作成。Claude Codeは起動時にこのフォルダを走査して、登録されているサブエージェントを把握します。

—

## Subagentファイルの中身

`phase-validator.md` の構成はこんな感じです:

### フロントマター(YAML)

“`yaml

—

name: phase-validator

description: (前述のトリガー条件を含む申告書)

tools: Read, Glob, Grep, Bash, Write

—

“`

`tools` で使用可能なツールを限定できます。今回は以下が必要:

– `Read` / `Glob` / `Grep`:ドキュメントと実装の確認

– `Bash`:git logやテスト実行

– `Write`:レポート出力

### 本文の構成

本文には手順書を書きます:

1. Step 1: Phase要件の把握 – ハンドオーバードキュメントを読む

2. Step 2: 実装内容の把握 – git diffと主要ファイルの確認

3. Step 3: チェックリスト生成 – 観点別に項目作成

4. Step 4: 自動検証の実行 – 機械的にチェック可能なものは実行

5. Step 5: レポート出力 – Markdownで保存

そして最後に重要な原則を書きます:

– 勝手に次のPhaseへ進む判断をしない

– 推測せず、不明点はユーザーに確認する

– 該当しない項目はスキップして、判断疲れを起こさせない

– 修正対応の優先順位を明示する(必須/推奨/任意)

—

## 環境固有のハマりどころ対策

Windows環境で日本語ユーザー名を使っている場合の対策も、エージェント側に組み込んでおくと安心です:

– ASCIIパスを使う:出力先パスに日本語を含めない

– エンコーディング配慮:`chcp 65001` 前提でターミナル出力を扱う

こうした環境固有の制約をエージェントに教え込んでおくと、毎回同じ問題でつまずかなくて済みます。

—

## まとめ

Claude CodeのSubagentで「Phase完了チェック」を自動化するポイントは3つ:

1. descriptionにトリガー発話を具体的に書く – Claude Codeが「このタスクは私の出番だ」と気づける手がかりを与える

2. CLAUDE.mdに保険のルールを書く – description単独より、プロジェクト全体のルールと併用すると堅い

3. 手順を構造化して原則を明示する – 自律的に動いてもらうには、判断基準まで含めて言語化する

長期プロジェクトを進めるとき、Claudeに「実装させる」だけでなく「自分の仕事をチェックさせる」レイヤーを足すと、品質と速度の両方が上がります。

特にPhase制で進める業務システム開発のように、段階ごとの品質ゲートが重要なプロジェクトでは、このパターンは強力です。

—

## おまけ:Skillと併用する発展形

今回はSubagent単体の話でしたが、将来的には:

– Subagent:Phase完了報告に反応して起動

– Skill:レポートのフォーマットやチェック観点のテンプレートを提供

という役割分担も可能です。Subagent内から「このフォーマットで出力して」とSkillを参照させることで、複数プロジェクトで一貫したレポートが作れます。

ただ、まずはSubagent単体で動かしてみて、運用しながら必要に応じて拡張していくのがおすすめです。