はじめに
最近、GitHub Copilotで「Custom Agents(カスタムエージェント)」が導入されたり、「Agent Skills」というClaude Codeで使われていたものがオープンスタンダード化されたりしています。
これらは似ているようで異なる目的と機能を持っています。しかし、名前が似ているせいで、どちらをどんな場面で使えばいいのか混乱してしまうことも多いのではないでしょうか。
この記事では、それぞれの特徴と違いについて、具体例を交えながらわかりやすく解説します。
Agent Skillsとは
Agent Skillsは、GitHub Copilotが特定の専門的なタスクを実行するために読み込むことができる、指示、スクリプト、およびリソースをまとめたフォルダのことです。
簡単に言えば、 「特定の作業手順や知識をまとめた道具箱」 のようなものです。
Agent Skillsの特徴
- スクリプトや具体例を含む複雑なワークフローや専門的な機能をAIに持たせることができます
- 必要な時だけ関連するコンテンツを読み込むため、AIのコンテキスト(記憶容量)を節約できます
- 再利用可能な形で作業手順をパッケージ化できます
例えば、「Playwrightを使ったテストの作成手順」や「特定のフレームワークでのコーディング規約」などをスキルとして定義しておくことで、必要な時にCopilotがその知識を活用してくれます。
Custom Agents(カスタムエージェント)とは
Custom Agents(カスタムエージェント) は、GitHub Copilotに特定の役割(ペルソナ)や専門知識を与え、特定の開発タスクに特化させたAIアシスタントのことです。
簡単に言えば、 「特定の役割を持った専門家として振る舞うAIアシスタント」 です。
Custom Agentsの特徴
- 通常のCopilotチャットは汎用的な回答をしますが、カスタムエージェントを使うことで、「セキュリティ担当者」「シニアアーキテクト」「テスター」といった特定の役割として振る舞わせることができます
- エージェントには、特定のツール(ターミナル操作、ファイル検索、外部APIなど)を使わせるかどうかを個別に設定できます。これにより、特定の作業に必要な権限だけを持たせることが可能です
- 複数のエージェントを作成し、タスクに応じて使い分けることができます
例えば、「コードレビューを行うレビューアエージェント」や「アーキテクチャ設計を支援するプランナーエージェント」などを作成できます。
それぞれの違いを一言で表すと
Agentは「自律的に動く特定の役割(人格)」 であり、Agent Skillsは「エージェントが利用できる再利用可能な道具箱(知識・手順)」 です。
つまり、Agent Skillsは「何をどうやるか」の手順を定義し、Custom Agentsは「誰として振る舞うか」の役割を定義します。
詳細な比較
それぞれの違いを詳しく見ていきましょう。
1. 用途
- Agent Skills: 特定の作業手順やリソースをまとめた能力・道具箱を定義する
- Custom Agents: 特定のタスク(設計、レビュー等)に特化した人格・役割を定義する
2. ファイル構成
-
Agent Skills
- プロジェクト用:
.github/skills/スキル名/SKILL.md - 個人用(全プロジェクト共通):
~/.copilot/skills/スキル名/SKILL.md
- プロジェクト用:
-
Custom Agents
- プロジェクト用:
.github/agents/エージェント名.agent.md
- プロジェクト用:
3. 呼び出し方
-
Agent Skills
- 設定
Chat: Use Agent Skillsをtrueにします - 特別な選択は不要で、いつものようにチャットで質問します
- 質問の内容がスキルの「説明(description)」と一致すると、Copilotが自動的にそのスキルの指示をコンテキストに読み込みます
- これにより、ユーザーが手動でスキルを切り替える手間が省けます
- 設定
-
Custom Agents
- 設定
Chat › Agent: Enabledをtrueにします - チャットビューを開き、エージェントピッカー(Agent Picker)をクリックします
- 作成したエージェント(例:Planner)を選択します
- そのエージェントに特有の指示(YAMLフロントマターで定義したもの)が自動的にプロンプトに付与されます
- 設定
実際の記述例
それぞれの実際の書き方を見てみましょう。
Agent Skillsの例
以下は、Playwrightを使用したWebアプリケーションテストのスキル定義例です。
---
name: webapp-testing
description: Playwrightを使用したWebアプリケーションのテスト作成と実行のガイド。ブラウザベースのテスト作成を依頼された時に使用します。
---
# PlaywrightによるWebアプリケーションテスト
[cite_start]このスキルは、Playwrightを使用したテストの作成とデバッグを支援します [cite: 28]。
## テストの作成手順
1. [cite_start]スキル内にある `test-template.js` を参照して標準的な構造を確認してください [cite: 29]。
2. [cite_start]`tests/` ディレクトリに新しいテストファイルを作成します [cite: 29]。
3. [cite_start]可能な限りロールベースのセレクターを使用してください [cite: 29]。
## 実行コマンド
- [cite_start]ローカル実行: `npx playwright test` [cite: 29]
- [cite_start]デバッグモード: `npx playwright test --debug` [cite: 29]
## ベストプラクティス
- [cite_start]動的コンテンツには `data-testid` 属性を使用する [cite: 30]。
- [cite_start]テストは独立させ、原子性を保つ [cite: 30]。
Custom Agentsの例
以下は、実装計画を策定する「Planner」エージェントの定義例です。
---
name: Planner
description: 新機能やリファクタリングのための実装計画を策定するエージェント。
tools: [ 'fetch', 'githubRepo', 'search' ]
model: Claude Sonnet 4
handoffs:
- label: 実装を開始する
agent: agent
prompt: 上記で策定した計画を実装してください。
send: false
---
# プランニングの指示
あなたはプランニングモードです [cite: 206]。
あなたのタスクは、新機能やリファクタリングの実装計画を作成することです [cite: 207]。
## 計画に含める内容
1. [cite_start]**概要**: タスクの簡潔な説明 [cite: 208]。
2. [cite_start]**要件**: 必要な機能のリスト [cite: 209]。
3. [cite_start]**実装手順**: 詳細なステップ [cite: 210]。
4. [cite_start]**テスト**: 検証に必要なテスト内容 [cite: 211]。
[cite_start]※このエージェントではコードの編集は行わず、計画の作成のみに専念してください [cite: 208]。
まとめ
Agent SkillsとCustom Agentsの違いを表にまとめると以下のようになります。
| 項目 | Agent Skills | Custom Agents |
|---|---|---|
| 役割 | 再利用可能な作業手順・知識のパッケージ | 特定の役割を持つAIアシスタント |
| イメージ | 道具箱・マニュアル | 専門家・人格 |
| ファイル構成 | .github/skills/スキル名/SKILL.md |
.github/agents/エージェント名.agent.md |
| 呼び出し方 | 自動的にマッチング(descriptionに基づく) | エージェントピッカーから選択 |
| 設定項目 | chat.useAgentSkills: true |
chat.agent.enabled: true |
| 用途例 | テスト作成手順、コーディング規約 | コードレビューア、プランナー |
| ツール制御 | 不可 | 可能(使用できるツールを個別に制限) |
どちらを使うべきか
両者の使い分けは以下の基準で考えると良いでしょう
Agent Skillsを使う場面
- 特定の技術やフレームワークの作業手順を標準化したい
- チーム全体で共通のベストプラクティスを共有したい
- プロジェクト固有のコーディング規約を守らせたい
Custom Agentsを使う場面
- 異なる専門性を持つ複数の「相談相手」を使い分けたい
- セキュリティレビューやアーキテクチャ設計など、特定の視点からのアドバイスが欲しい
- タスクごとに異なるツールの権限を持たせたい
おわりに
Agent SkillsとCustom Agentsは、どちらもGitHub Copilotをより強力にカスタマイズできる機能です。
それぞれの特性を理解して、適切に使い分けることで、開発効率を大きく向上させることができます。ぜひ実際に試してみて、自分のワークフローに合った使い方を見つけてみてください。