はじめに

GitHub Copilotは、コード補完やチャットによる対話だけでなく、自律的にタスクを実行する「Copilot coding agent」や、IDE内でエージェントとして動作する「Agent Mode」を提供しています。しかし、これらのエージェントが万能であるわけではなく、特定のタスクにおいては専門的な知識や手順が必要になる場面も少なくありません。

GitHub Copilot Agent Skills(エージェントスキル)は、エージェントに専門的な能力を教え込むための仕組みです。AnthropicがClaude向けに開発し、オープンスタンダードとして公開された「Agent Skills」フォーマットをGitHub Copilotがサポートしたことで、一度作成したスキルを複数のAIエージェント製品で再利用できるようになりました。

本記事では、GitHub Copilot Agent Skillsの概要から作成方法、実践的な活用例までを網羅的に解説します。この記事を読むことで、以下のことができるようになります。

  • Agent Skillsの仕組みと他の機能との違いを理解する
  • SKILL.mdファイルを作成してカスタムスキルを定義する
  • プロジェクトスキルとパーソナルスキルを使い分ける
  • 実践的なスキルの活用例を実装する

前提条件

GitHub Copilot Agent Skillsを使用するには、以下の環境が必要です。

項目 要件
GitHub Copilotプラン Pro、Pro+、Business、Enterprise
VS Code バージョン1.106以降(Insidersでは先行サポート)
GitHub Copilot拡張機能 最新版
GitHub Copilot CLI パーソナルスキル利用時に必要(パブリックプレビュー)

Agent SkillsはCopilot coding agent、GitHub Copilot CLI、およびVS Code Insidersのエージェントモードで利用可能です。VS Code安定版へのサポートも近日中に予定されています。

Agent Skillsとは

Agent Skillsは、AIエージェントが特定のタスクをより正確かつ効率的に実行するための「指示書」「スクリプト」「リソース」をまとめたフォルダです。エージェントがタスクの内容を認識すると、関連するスキルを動的にロードし、その指示に従って作業を進めます。

Agent Skillsがもたらすメリット

Agent Skillsを導入することで、以下のような課題を解決できます。

  • 繰り返しの指示を削減: 毎回同じ手順を説明する必要がなくなる
  • 組織固有のワークフローを標準化: チームで共有できる再現可能な手順を定義
  • 専門領域への対応: 法務レビュー、データ分析パイプライン、セキュリティ監査など
  • クロスプラットフォーム対応: 同じスキルをCopilot、Claude、VS Code、Gooseなど複数の製品で再利用

Agent Skillsの対応製品

Agent Skillsはオープンスタンダードとして策定されており、以下の製品がサポートしています。

  • GitHub Copilot(coding agent、CLI、VS Code Insiders)
  • Claude(Claude.ai、Claude Code、API)
  • VS Code
  • OpenAI Codex
  • Goose
  • Letta
  • Gemini CLI

Agent Skillsの構造

Agent Skillsは、最低限 SKILL.md ファイルを含むディレクトリとして構成されます。

skill-name/
├── SKILL.md          # 必須: スキルの定義ファイル
├── scripts/          # 任意: 実行可能なスクリプト
├── references/       # 任意: 参照ドキュメント
└── assets/           # 任意: テンプレート、画像、データファイル

SKILL.mdの構成

SKILL.md ファイルは、YAMLフロントマターとMarkdownボディで構成されます。

フロントマター(必須)

1
2
3
4
5
6
7
8
---
name: github-actions-debugging
description: GitHub Actionsワークフローのデバッグ手順を提供します。失敗したワークフローのログ分析、エラー原因の特定、修正方法の提案を行います。
license: MIT
metadata:
  author: your-team
  version: "1.0"
---

各フィールドの詳細は以下の通りです。

フィールド 必須 説明
name Yes 1-64文字。小文字英数字とハイフンのみ。ディレクトリ名と一致させる
description Yes 1-1024文字。スキルの用途と使用タイミングを明記
license No ライセンス名またはライセンスファイルへの参照
compatibility No 環境要件(特定の製品、パッケージ、ネットワークアクセスなど)
metadata No 任意のキーバリューペア(author、versionなど)
allowed-tools No 事前承認するツールのリスト(実験的機能)

ボディ(指示内容)

フロントマターの後に、エージェントへの具体的な指示をMarkdownで記述します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
name: github-actions-debugging
description: GitHub Actionsワークフローのデバッグを支援します。失敗したワークフロー分析、ログ調査、修正方法の提案を行います。
---

# GitHub Actionsデバッグガイド

このスキルは、GitHub Actionsワークフローが失敗した際のデバッグ手順を提供します。

## 手順

1. GitHub MCP Serverの `list_workflow_runs` ツールでPRの最近のワークフロー実行状況を確認
2. `summarize_job_log_failures` ツールで失敗ジョブのAI要約を取得
3. 詳細が必要な場合は `get_job_logs` で完全なログを取得
4. ローカル環境で失敗を再現してテスト
5. 原因を特定し、修正を実施

## よくある失敗パターン

- **依存関係のインストール失敗**: package.jsonやrequirements.txtのバージョン不整合
- **テスト失敗**: 環境変数の未設定、シークレットの欠落
- **ビルドエラー**: Node.jsやPythonのバージョン不一致

オプションディレクトリ

scripts/

エージェントが実行できるスクリプトを格納します。Python、Bash、JavaScriptなどが一般的です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3
# scripts/analyze_workflow.py
"""GitHub Actionsワークフローの失敗ログを解析するスクリプト"""

import sys
import json

def analyze_log(log_content: str) -> dict:
    """ログ内容を解析してエラー情報を抽出"""
    errors = []
    for line in log_content.split('\n'):
        if 'error' in line.lower() or 'failed' in line.lower():
            errors.append(line.strip())
    return {'errors': errors, 'count': len(errors)}

if __name__ == '__main__':
    log = sys.stdin.read()
    result = analyze_log(log)
    print(json.dumps(result, indent=2))

references/

追加のドキュメントを格納します。エージェントは必要に応じてこれらを参照します。

references/
├── REFERENCE.md       # 詳細な技術リファレンス
├── TROUBLESHOOTING.md # トラブルシューティングガイド
└── EXAMPLES.md        # 具体的な使用例

assets/

テンプレート、画像、データファイルなどの静的リソースを格納します。

assets/
├── templates/
│   └── workflow-template.yml
├── schemas/
│   └── config-schema.json
└── images/
    └── architecture-diagram.png

スキルの保存場所

Agent Skillsは、スコープに応じて異なる場所に保存します。

プロジェクトスキル

特定のリポジトリでのみ使用するスキルは、リポジトリ内の以下のいずれかに配置します。

/path/to/repository/.github/skills/skill-name/SKILL.md
/path/to/repository/.claude/skills/skill-name/SKILL.md

プロジェクトスキルは、そのリポジトリで作業する全員が利用できます。チーム共有のコーディング規約やプロジェクト固有のワークフローに適しています。

パーソナルスキル

複数のプロジェクトで共通して使用するスキルは、ホームディレクトリに配置します。

~/.copilot/skills/skill-name/SKILL.md
~/.claude/skills/skill-name/SKILL.md

パーソナルスキルは、Copilot coding agentとGitHub Copilot CLIで利用可能です。個人の作業効率化に役立つタスクを定義するのに適しています。

組織レベルおよびエンタープライズレベルのスキルサポートは近日公開予定です。

Agent Skillsの作成手順

手順1: スキルディレクトリの作成

プロジェクトスキルの場合、リポジトリ内に .github/skills/ ディレクトリを作成し、その中にスキル用のサブディレクトリを作成します。

1
mkdir -p .github/skills/code-review-checklist

手順2: SKILL.mdファイルの作成

スキルディレクトリ内に SKILL.md ファイルを作成します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
---
name: code-review-checklist
description: コードレビュー時のチェックリストを提供します。セキュリティ、パフォーマンス、可読性の観点からコードを評価し、改善点を提案します。
---

# コードレビューチェックリスト

このスキルは、コードレビュー時に確認すべき項目を体系的に提供します。

## セキュリティチェック

- [ ] SQLインジェクション対策(パラメータ化クエリの使用)
- [ ] XSS対策(出力のエスケープ処理)
- [ ] 認証・認可の適切な実装
- [ ] シークレットのハードコーディング禁止
- [ ] 入力バリデーションの実施

## パフォーマンスチェック

- [ ] N+1クエリの有無
- [ ] 適切なインデックスの使用
- [ ] 不要なAPIコールの排除
- [ ] メモリリークの可能性

## 可読性チェック

- [ ] 命名規則の一貫性
- [ ] 適切なコメントの有無
- [ ] 関数の単一責任原則
- [ ] コードの重複排除

## レビュー結果の報告形式

レビュー結果は以下の形式でまとめてください:

\`\`\`markdown
## レビュー結果

### 重大な問題
- [問題の説明と修正方法]

### 改善提案
- [パフォーマンスや可読性の向上案]

### 良い点
- [評価できるポイント]
\`\`\`

手順3: スキルのテスト

作成したスキルが正しく動作するか、GitHub Copilotで確認します。Copilot Chatで関連するタスクについて質問すると、エージェントが自動的にスキルをロードします。

このPRのコードをレビューしてください。

エージェントは、プロンプトの内容とスキルの description を照合し、関連性が高い場合にスキルをロードします。

Agent Skillsの動作原理

Agent Skillsは「プログレッシブディスクロージャー」という設計思想に基づいています。

sequenceDiagram
    participant User as ユーザー
    participant Agent as Copilot Agent
    participant Skills as Skills Registry
    participant Context as コンテキスト

    User->>Agent: タスクの依頼
    Agent->>Skills: スキルのメタデータを確認(name, description)
    Skills-->>Agent: 関連スキル候補を返却
    Agent->>Agent: プロンプトとdescriptionを照合
    Agent->>Skills: 選択したスキルのSKILL.mdをロード
    Skills-->>Agent: 指示内容(~5000トークン)
    Agent->>Context: 必要に応じてscripts/references/をロード
    Agent->>User: タスク実行結果
  1. メタデータのロード(約100トークン): 起動時に全スキルの namedescription をロード
  2. スキルの選択: プロンプト内容と description を照合し、関連スキルを決定
  3. 指示のロード(推奨5000トークン以内): 選択されたスキルの SKILL.md 本文をロード
  4. リソースのロード(必要時のみ): scripts/references/assets/ は必要に応じてロード

この設計により、コンテキストウィンドウを効率的に活用しながら、必要な情報だけをエージェントに提供できます。

他の機能との違い

GitHub Copilotには、Agent Skills以外にも類似の機能がいくつか存在します。それぞれの用途と使い分けを理解しておくことが重要です。

Agent Skills vs Custom Instructions

項目 Agent Skills Custom Instructions
配置場所 .github/skills/ .github/copilot-instructions.md
適用タイミング タスクに応じて動的にロード 常にコンテキストに含まれる
用途 特定タスクの詳細な手順 全般的なコーディング規約
規模 詳細な指示(数百行可) 簡潔な指示(短くまとめる)

使い分けの指針: Custom Instructionsは「常に適用されるべき基本ルール」、Agent Skillsは「特定タスク時にのみ必要な詳細手順」に使用します。

Agent Skills vs Custom Agent

項目 Agent Skills Custom Agent
ファイル形式 SKILL.md .agent.md
目的 特定タスクの能力拡張 専門的なペルソナの定義
ツール制御 スキル内で参照可能 エージェント全体で固定
適用方法 自動的にロード ドロップダウンで明示的に選択

使い分けの指針: Custom Agentは「役割全体を切り替える」場合に使用し、Agent Skillsは「特定の能力を追加する」場合に使用します。

Agent Skills vs MCPサーバー

項目 Agent Skills MCPサーバー
提供するもの 指示・手順・ガイドライン 外部ツール・データソースへのアクセス
実装方法 Markdownファイル サーバープログラム
用途 タスクの遂行方法を教える 新しい機能を追加する

使い分けの指針: MCPサーバーは「新しいツールへのアクセスを提供」し、Agent Skillsは「既存のツールの効果的な使い方を教える」ために使用します。両者を組み合わせることで、より強力なワークフローを構築できます。

実践的な活用例

例1: GitHub Actionsデバッグスキル

GitHub Actionsワークフローの失敗を効率的にデバッグするためのスキルです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
---
name: github-actions-failure-debugging
description: GitHub Actionsワークフローの失敗をデバッグするためのガイドです。失敗したワークフローの分析を依頼された際に使用してください。
---

# GitHub Actionsデバッグガイド

GitHub Actionsワークフローが失敗した場合、以下のプロセスに従ってデバッグを行います。GitHub MCP Serverのツールを活用します。

## デバッグ手順

1. `list_workflow_runs` ツールでPRの最近のワークフロー実行と状態を確認
2. `summarize_job_log_failures` ツールで失敗ジョブのAI要約を取得(コンテキストウィンドウを節約)
3. 詳細が必要な場合は `get_job_logs` または `get_workflow_run_logs` で完全なログを取得
4. ローカル環境で失敗を再現
5. 原因を特定し、修正をコミット

## よくあるエラーパターン

### 依存関係エラー
- npm/yarnのロックファイル不整合
- Pythonパッケージのバージョン競合
- 対処: `npm ci` または `pip install --upgrade` を使用

### テスト失敗
- 環境変数の未設定
- シークレットの欠落
- タイムゾーン差異による日時テスト失敗
- 対処: ワークフローYAMLで環境変数を明示的に設定

### ビルドエラー
- ランタイムバージョンの不一致(Node.js、Python等)
- 対処: `.nvmrc``pyproject.toml` でバージョンを固定

例2: APIドキュメント生成スキル

REST APIのドキュメントを一貫したフォーマットで生成するスキルです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
---
name: api-documentation-generator
description: REST APIのドキュメントをOpenAPI仕様に準拠した形式で生成します。APIエンドポイントのドキュメント作成を依頼された際に使用してください。
---

# APIドキュメント生成ガイド

このスキルは、REST APIのドキュメントを標準的な形式で生成します。

## ドキュメント構造

各エンドポイントについて、以下の情報を含めてください:

### エンドポイント情報
- HTTPメソッド(GET, POST, PUT, DELETE, PATCH)
- パス(パスパラメータを `{id}` 形式で表記)
- 説明(エンドポイントの目的を簡潔に)

### リクエスト
- ヘッダー(必須/任意を明記)
- クエリパラメータ
- リクエストボディ(JSON Schema形式)

### レスポンス
- ステータスコードごとのレスポンス
- レスポンスボディのサンプル

## テンプレート

\`\`\`markdown
## [エンドポイント名]

[エンドポイントの説明]

### リクエスト

\`\`\`http
[METHOD] /api/v1/[path]
Content-Type: application/json
Authorization: Bearer {token}
\`\`\`

### パラメータ

| パラメータ | 型 | 必須 | 説明 |
|-----------|-----|------|------|
| id | string | Yes | リソースID |

### レスポンス

#### 200 OK

\`\`\`json
{
  "id": "abc123",
  "name": "Sample",
  "createdAt": "2026-01-09T12:00:00Z"
}
\`\`\`

#### 404 Not Found

\`\`\`json
{
  "error": "Resource not found",
  "code": "NOT_FOUND"
}
\`\`\`
\`\`\`

例3: データベースマイグレーションスキル

安全なデータベースマイグレーションを実行するためのスキルです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
---
name: database-migration-safety
description: データベースマイグレーションの安全性を確保するためのガイドです。マイグレーションファイルの作成やレビューを依頼された際に使用してください。
---

# データベースマイグレーション安全ガイド

このスキルは、本番環境でも安全に適用できるマイグレーションの作成を支援します。

## 必須チェック項目

### ダウンタイム回避
- [ ] カラム追加は `NULL` 許容または `DEFAULT` 値付きで
- [ ] カラム削除は段階的に(1. コードから参照削除 → 2. カラム削除)
- [ ] インデックス作成は `CONCURRENTLY` オプションを使用(PostgreSQL)

### データ整合性
- [ ] 外部キー制約は既存データを確認してから追加
- [ ] `NOT NULL` 制約は既存データの処理後に追加
- [ ] トリガーの実行順序を確認

### ロールバック計画
- [ ] 各マイグレーションに対応するロールバックを用意
- [ ] ロールバック時のデータ損失範囲を明記

## 危険なパターン

### 即座にロックを取得する操作
\`\`\`sql
-- 危険: テーブル全体をロック
ALTER TABLE users ADD COLUMN email VARCHAR(255) NOT NULL;

-- 安全: NULL許容で追加後、データ移行、NOT NULL追加
ALTER TABLE users ADD COLUMN email VARCHAR(255);
UPDATE users SET email = 'default@example.com' WHERE email IS NULL;
ALTER TABLE users ALTER COLUMN email SET NOT NULL;
\`\`\`

### 大量データの更新
\`\`\`sql
-- 危険: 全行ロック
UPDATE users SET status = 'active';

-- 安全: バッチ処理
UPDATE users SET status = 'active' WHERE id BETWEEN 1 AND 10000;
UPDATE users SET status = 'active' WHERE id BETWEEN 10001 AND 20000;
-- ...
\`\`\`

コミュニティスキルの活用

自分でスキルを作成するだけでなく、コミュニティが公開しているスキルを活用することもできます。

anthropics/skills

AnthropicがClaude向けに公開しているスキル集です。PDF処理、プレゼンテーション作成、データ分析など、汎用的なスキルが含まれています。

リポジトリ: https://github.com/anthropics/skills

github/awesome-copilot

GitHubコミュニティが作成したCopilotカスタマイズ集です。スキルだけでなく、Custom Agent、プロンプト、インストラクションも含まれています。

リポジトリ: https://github.com/github/awesome-copilot

MCP Serverを使用して、これらのスキルを直接インストールすることも可能です。

スキル作成のベストプラクティス

descriptionは具体的に書く

エージェントがスキルを選択する際の判断材料になるため、description は具体的に記述します。

1
2
3
4
5
# 悪い例
description: PDFを扱います。

# 良い例
description: PDFファイルからテキストとテーブルを抽出し、フォームの入力、複数PDFの結合を行います。PDFドキュメントの処理やフォーム入力を依頼された際に使用してください。

SKILL.mdは500行以内に抑える

メインの指示は簡潔にまとめ、詳細な情報は references/ ディレクトリに分割します。

skill-name/
├── SKILL.md              # 簡潔な概要と手順(500行以内)
└── references/
    ├── REFERENCE.md      # 詳細な技術リファレンス
    ├── EXAMPLES.md       # 具体的な使用例
    └── TROUBLESHOOTING.md # トラブルシューティング

スクリプトはエラーハンドリングを含める

scripts/ 内のスクリプトは、明確なエラーメッセージとエッジケースの処理を含めます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python3
"""安全なスクリプトの例"""

import sys

def main():
    if len(sys.argv) < 2:
        print("Error: ファイルパスを指定してください", file=sys.stderr)
        print("Usage: script.py <file_path>", file=sys.stderr)
        sys.exit(1)
    
    file_path = sys.argv[1]
    try:
        with open(file_path, 'r') as f:
            content = f.read()
        # 処理を実行
        print(f"Processed {len(content)} characters")
    except FileNotFoundError:
        print(f"Error: ファイルが見つかりません: {file_path}", file=sys.stderr)
        sys.exit(1)
    except PermissionError:
        print(f"Error: ファイルの読み取り権限がありません: {file_path}", file=sys.stderr)
        sys.exit(1)

if __name__ == '__main__':
    main()

バリデーションツールを活用する

Agent Skills仕様には、スキルの検証ツールが用意されています。

1
2
3
4
5
# skills-refライブラリをインストール
pip install skills-ref

# スキルを検証
skills-ref validate ./my-skill

制限事項と注意点

Copilot coding agentの制限

  • 同一リポジトリ内でのみ変更が可能
  • 1回のタスクで1つのPRのみ作成
  • copilot/ で始まるブランチにのみプッシュ可能
  • コンテンツ除外設定(content exclusions)は適用されない

スキル読み込みの制限

  • メタデータ(name, description)は起動時に全スキル分がロードされる
  • 大きすぎるスキルはコンテキストウィンドウを圧迫する
  • スキルの選択はエージェントの判断に依存するため、必ず使用されるとは限らない

セキュリティに関する注意

  • スキル内のスクリプトはサンドボックス環境で実行される
  • 機密情報をスキルファイルに含めないこと
  • 外部からのスキル導入時は内容を必ず確認すること

まとめ

GitHub Copilot Agent Skillsは、エージェントに専門的な能力を教え込むための強力な仕組みです。

本記事で解説した主要なポイントは以下の通りです。

  • Agent Skillsの構造: SKILL.md ファイルを中心に、スクリプトやリファレンスを含むディレクトリ構成
  • スキルの保存場所: プロジェクトスキル(.github/skills/)とパーソナルスキル(~/.copilot/skills/
  • 他機能との違い: Custom Instructions、Custom Agent、MCPサーバーとの使い分け
  • ベストプラクティス: 具体的なdescription、簡潔なSKILL.md、エラーハンドリングを含むスクリプト

Agent Skillsはオープンスタンダードとして策定されているため、一度作成したスキルはClaude、VS Code、Gooseなど複数のAI製品で再利用できます。チームの開発ワークフローを標準化し、生産性を向上させるために、ぜひAgent Skillsの活用を検討してください。

参考リンク