この記事は何
Claude Codeには Pluginという形でカスタムコマンド, サブエージェント, Skills, MCP, Hooksなどをひとつのパッケージとして配布できる機能があります。
僕はこのPlugin機能を用いて、自身の環境をPluginとしてGitHubに公開しています。
これから複数回に分け、この自身のClaude Code Pluginの環境を紹介していきます。
今回は実装したサブエージェントについて紹介をします。
サブエージェントとは
サブエージェントはClaude Codeがメインのタスク実行中に特定の作業を委譲できる、専門的なエージェントです。
各サブエージェントは主にMarkdownファイルとして定義され、その役割、作業手順、制約事項などが記載されています。
Claude Codeはユーザーのリクエストに応じて適切なサブエージェントを起動し、その指示に従って作業を実行します。これにより、複雑なワークフローや専門的な作業をメインエージェントとは独立して処理できます。
サブエージェントはスキルと異なり別のコンテキストで実行されるため、メインのコンテキストを消費せずに長時間の作業を行うことが可能です。
詳しくは以下をご覧ください。
agents/github-issue-implementer について
このサブエージェントは、GitHub Issueの内容を分析し、TDDサイクルに従って実装を行い、最終的にレビュー可能なPRを作成するためのものです。
「Issue番号を渡すだけで、実装からPR作成まで自動化したい」と思い、作成したサブエージェントになります。
このサブエージェントを使うと以下のようなことが可能です。
- GitHub Issueの内容を詳細に分析し、要件・受け入れ基準・技術的制約を理解する
- Issue内に画像がある場合は、gh-assetを使ってダウンロードし、画像の内容も考慮した実装を行う
- TDD(テスト駆動開発)に基づいた実装を行う
- テストを先に作成し、失敗することを確認
- テストが通るように実装
- 必要に応じてリファクタリング
- 実装完了後、lintとTypeScriptの型チェックを実行する
- 最終的にPRを作成する(PRテンプレートに従う)
- 作業完了後、Dockerコンテナを停止する
プロンプト・コード
プロンプトは以下の通りです。
以下の記事で紹介したSkillを用いて処理が実行されることを想定しています。
用途
このサブエージェントは、exec-issueというカスタムコマンドを作成するために用意しています。
exec-issueコマンドについては別の記事で紹介しますが、簡単に言うと「Issue番号を渡すだけで、そのIssueの実装からPR作成までを自動化する」コマンドです。
カスタムコマンドに指示を書いても動作はするのですが、サブエージェントとして分離することで、メインのコンテキストを消費せずに長時間の作業を行うことが可能になるため、サブエージェントとして実装しています。
これによりカスタムコマンドのコンテキストに記載している他のステップを忘れてしまうなどの問題を防ぐことができ、より安定した動作が期待できます。
最後に
サブエージェントを用いると、メインのコンテキストを消費せずに専門的なタスクを委譲することができます。
ぜひサブエージェントを使ったことのない方は試しに使ってみてください。
他のサブエージェントについても別の記事で紹介していきます。