最近、Claude Codeを触る機会が増えてきて、Skillsとサブエージェントの使い方について、学んだので、自分なりの解釈を残しておく。
コンテキストの用語の意味がよくわからん人は下記の記事も見てもらえればと思います。

先に結果だけ知りたい人はまとめに飛んでください。
当記事の対象読者
- Skillsやサブエージェントの言葉を聞いたことあるけど、なんなのか理解していない人
- Skillsやサブエージェントの使い方を理解していない人
- コンテキストの肥大化を防ぐ仕組みを少し深掘りしたい人
Skillsとは何か
Skillsは作業の手順や実施方法をまとめた、再利用可能な情報の塊。
作成したコードレビューをAIお願いする際、毎回似たような指示をするのはコンテキストの肥大化に繋がるし、指示する側も毎回同じようなことを打つのはめんどくさい。
なので、指示を一つの情報の塊として、作成して、毎回その指示を読むようにしてもらえれば、指示する労力もコンテキストの肥大化も最小限に抑えられる。
難点は、一発目はどうしてもSkillsを自分で用意しないといけないので、めんどい。
補足:Claude CodeにSkills Creatorが公式の拡張機能であるので、入れると多少楽になる。
1Skill=1Responsibilityの考え方
Skillsを作る際に気をつけないといけないのが、1つのSkillに1つの責任だけを持たせるのが重要。
1つのSkillに設計書作成とコード作成とレビューする情報を持たせると、汎用性が落ち、利用できる場所が限定的になってしまう。
また、アウトプットがおかしい際に、Skillのどの場所でおかしいとかの原因特定がしづらくなる。
設計書作成のSkill、コード作成のSkill、レビューするSkillを個別に用意することで、汎用性も保守性も上げることができる。
サブエージェントとは何か
サブエージェントはメインセッションとは別セッションで動くエージェント。
一番のメリットはメインセッションのコンテキストと分離させることができる。
また、サブエージェントごとに承認権限を個別に設定することができる。
ファイルの読み込みは許可するけど、書き込みは許可しないなどなど。
サブエージェントの利用方法としてはコード作成とコードレビューをするサブエージェントを用意することで、サブエージェント内のセッションだけでコードの作成からレビューまでやってくれる。
メインセッション側には結果だけを返すことができるので、コンテキストの肥大化を最小限にすることができる。
サブエージェントを使う上で、知っておくべき概念としてオーケストレータというのがある。
オーケストレータとは何か
オーケストレータは、複数のサブエージェントに指示を出して、作業を調整する役を持つ、サブエージェント。
メインセッションからオーケストレータに指示を出して、オーケストレータが各サブエージェントに作業を振ってくれる。
イメージ的には作業統括みたいな感じ。
オーケストレータは各サブエージェントの結果を取りまとめて最終的に、メインセッションに返すので、メインエージェント側は意思決定に集中できるし、コンテキストの肥大化を抑えられる。
実際のSkillsとサブエージェントを組み合わせた運用方法
今の環境で仕様書の作成からコードレビューまで運用している方法としては下記のような感じ。
[メインエージェント]
└─ [オーケストレータ]
└─ [仕様書作成サブエージェント]
├─ 仕様書作成Skills を呼び出す
└─ 試験仕様書レビューSkills を呼び出す
└─ [基本設計書作成サブエージェント]
├─ 基本設計書作成Skills を呼び出す
└─ 基本設計書レビューSkills を呼び出す
└─ [コード作成サブエージェント]
├─ コード作成Skills を呼び出す
├─ コードレビューSkills を呼び出す
├─ テストコード作成Skills を呼び出す
└─ コードレビューSkills を呼び出すこれが正解ではないと思うが、一旦これで運用して、またちょこちょこ直していこうとは思う。
人によってはサブエージェントはSkillsと同様に1Agent=1Responsibilityみたいな考え方してる人もいる。
まとめ
Skillsとは再利用可能な知識の塊。
Skillsの設計原則は1Skill=1Responsibility。
Skillsの注意点としてメインエージェントで多用するとコンテキストが肥大化する。
サブエージェントとはメインとは別セッションで動くエージェントで、コンテキストを分離させられる。
オーケストレータは各サブエージェントに指示を出し、作業統括してくれるエージェント。
実際の運用方法はオーケストレータとサブエージェントを用意し、オーケストレータに指示をし、各サブエージェントに指示してもらう。
参考サイト



コメント