Claude Codeのサブエージェントを用意する
AIを用いたコーディングもだいぶ自然になってきたのを感じています。最近はもっぱらClaude Codeでやることが多く、諸々設定ファイルを触ってはいるものの、サブエージェントの活用を見いだせていなかったのですが満を持して構築してみたので書いておきます。
ClaudeCodeのサブエージェント
サブエージェントはメインのエージェントが居て、これが適宜頼る第2、第3のエージェント。自分が作業していて、周り座っている〇〇が得意な同僚に頼るみたいなイメージ。
ドキュメントにはコードレビュワーやデバッガーなどの例が載っている。 サブエージェント - Anthropic Claude Codeでタスク固有のワークフローと改善されたコンテキスト管理のための専門的なAIサブエージェントを作成・使用する。 Anthropic
サブエージェントのコンテキストは維持できて、メインのコンテキストは汚染しないそう。これ良いよなと思っていて、メインのエージェント単体でやっているとレビューしてとか見直してとか投げることになるので
用意したサブエージェントについて
Claude Codeに作業を任せる際、大まかに以下の流れを取ります。
- プランニング (実装計画を立てる)
- 実装
- レビュー
今回はこの1, 3を助けるサブエージェントを用意してみた。
具体的なものは dotfiles に入れて公開しているので具体はそちらを参照。
※記事以降で編集がかかっている可能性は十分あり得るのでどうなったのかも合わせてみていただけると。
プランニングレビュー
用意したサブエージェントはこちら
最初のプランニングのところで方向性が間違っていたり、そもそもできないみたいなことがあると良くないので、ここのクオリティを挙げようというモチベーションです。
以下のレビューが行われる
- やり方としてあっているのか
- 実装したことで何かリスクはあるか
- より良い方法はないか
- 既存実装との整合性確認
実際のところはやっていきながらチューニングが要るかなとは思っているけど、とりあえずはこれでいいかなと思っている。
また、このサブエージェントについて、呼び出すように指示をするとおそらく漏れるので、userレベルのCLAUDE.mdに次の文章を入れている
「実装計画レビュー必須: 複雑な実装タスクの場合、実装開始前に必ず development-plan-reviewer サブエージェントを使用して計画をレビューする」
これで見てくれるはずなので、ある程度クオリティ担保ができるかなと思う。
レビュワー
また、実装後のレビューをお願いするサブエージェントも用意してみた。
コード品質をあらためてチェックしてもらうためのエージェント。
1.0 レビュー対象ファイルの特定
デフォルトブランチとの差分ファイルを特定
変更ファイル・新規ファイル一覧を作成
気を付けないと全ファイル見てしまう気がしたので、デフォルトブランチとの差分で対象を絞ってもらうことにした。
1.1 プロジェクト品質管理設定の探索
Step 1: 必須ファイルの並列読み取り.claude/CLAUDE.md と README.md を同時に読み取り
プロジェクト固有の品質管理ルールとコマンドを特定
Step 2: 条件付き追加探索Step 1で言語やツールが特定できない場合のみ実行
設定ファイル群の確認(package.json, Gemfile, pyproject.toml 等)
また、いくつかの言語を触ることがあるので、.claude/CLAUDE.mdやREADME.mdをチェックすることでプロジェクトについて理解をしてもらうことにしている。
そのうえで理解できなかった場合は設定ファイルを探索することで使うべきコマンドを探してもらうというフローにしている。
言語を限定できるならその方が良いとは思うけど、色々使う可能性があるならこれがいいかなと思っている。
この後、フォーマッタやLint、型チェックなどいつもやっているチェックをかけてある程度そこで分かる状態にした。ここで機械的にチェックをかけておくことで、後のレビューがしやすくなる想定。
詳細レビューでは、色んな観点でチェックをかけるようにしている。ただ、ちょっと過剰感も否めないのでここもやりながら調整していく予定。
また、このサブエージェントは常に動かなくていいので、「レビューを依頼したときのみ」呼び出すようにしてみた。
終わりに
最近Strandsなんかも少し触っていて、複雑なことをやるときにマルチエージェントを取り入れてみたり、処理をしやすいようにツール化してみたりしてるんですが、これによって動きがよくなったりクオリティがアップするのを感じています。
ちょくちょく人間の動きに近いような気がするなと思い始めていて、ちゃんとマネジメントしなくては…