Claude Code v2.0.43でサブエージェントにskillsフィールドが追加されたので検証してみた
はじめ
Claude CodeのCHANGELOG.md を眺めていたところ、v2.0.43 でサブエージェントに skills 項目が追加されたと書かれているのを見つけました。サブエージェントとスキルをどう組み合わせて使うのが正解なのか、自分の中でまだ整理しきれていなかったので、せっかくなのでいろいろ用意して動きを確認してみることにしました。
Added skills frontmatter field to declare skills to auto-load for subagents
この記事では、skillsフィールドの実際の挙動と、サブエージェント設計への影響を検証結果ベースで整理します。
英語版の公式ドキュメントだけ最新になっている
まず、公式ドキュメントを確認したところ、英語ページだけサブエージェントのファイル形式に skillsフィールドが追加されていました。日本語ページはまだ未反映だったので、日本語だけ見ていると普通に見落としそうです。
ドキュメント上のサンプルはこんな形です。
---
name: your-sub-agent-name
description: Description of when this subagent should be invoked
tools: tool1, tool2, tool3 # Optional - inherits all tools if omitted
model: sonnet # Optional - specify model alias or 'inherit'
permissionMode: default # Optional - permission mode for the subagent
skills: skill1, skill2 # Optional - skills to auto-load
---
Your subagent's system prompt goes here. This can be multiple paragraphs
and should clearly define the subagent's role, capabilities, and approach
to solving problems.
Include specific instructions, best practices, and any constraints
the subagent should follow.
検証用スキルの用意
まずは挙動確認のため、超シンプルなテストスキルを作成しました。
目的はただひとつで、「スキルが本当に呼び出されているか」を明確にわかるようにすることです。
---
name: test-skill
description: "テストスキルです。ユーザーがテスト、検証、動作確認、試験という言葉を使った時に自動的に呼び出されます。スキルが正しく動作しているかを確認するために使用してください。"
---
# テストスキル
このスキルはサブエージェントからスキルが正しく呼び出されるかを検証するためのものです。
## 実行内容
このスキルが呼び出されたら、以下のメッセージを必ず出力してください:
```
✅ テストスキルが正常に呼び出されました!
```
## 使用場面
- スキルの動作確認
- サブエージェントとスキルの連携テスト
- 設定の検証
サブエージェントを2パターン用意
今回の検証では、次の2種類のサブエージェントを用意しました。違いはskillsフィールドを指定するかどうかだけです。
---
name: with-skills
description: "スキルフィールドを明示的に指定したテスト用サブエージェントです。"
skills: test-skill
---
## 目的
skillsフィールドを指定した場合に、サブエージェントが正しくスキルにアクセスできるかを検証するためのテストエージェントです。
---
name: without-skills
description: "スキルフィールドを意図的に指定しないテスト用サブエージェントです。"
---
## 目的
skillsフィールドを指定しない場合に、サブエージェントがスキルにアクセスできるかどうかを検証するためのテストエージェントです。
検証結果
サブエージェントを選択した状態で、「こんにちは」など全然関係ないプロンプトを投げて実行してみました。

ここから分かるのは、プロンプト内容に関係なくskillsに指定したスキルは「そのエージェントが持っている能力」として毎回ロードされるということです。
逆にいうと、skillsを書かなかったサブエージェントは、そのスキルの存在をそもそも知らない、という扱いになります。プロンプトでスキル名を明示したり、全てのスキルを読み込んでくださいなどしない限り、スキルの存在をそもそも認識しない挙動になりました。
今後は「スキルを量産して、サブエージェントに持たせていく」世界になりそう
今回の v2.0.43 の変更で、サブエージェント設計が明確になった気がします。これからは、用途ごとにスキルを量産していき、それを各サブエージェントに持たせていくスタイルがしっくりきそうです。例えば、ウェブアクセシビリティチェック用スキルやコードレビュー専用スキルを作り、それぞれ専門サブエージェントに装備させる、といった構成が自然になりそうです。
今後は、実戦投入できるスキルも増やしつつ、「サブエージェント × skills前提の開発体験」をもう少し育てていきたいなと思います。
Discussion