👋

GitHub Copilot Agent Skills 入門

に公開

GitHub Copilot を使っていると、「このプロジェクト固有のルールを覚えてほしい」「特定のスクリプトの使い方を教えたい」といった場面に出くわすことがあります。これまでは、カスタム指示や AGENTS.md にそうした情報を記述することで対応してきましたが、ここに新たな最適化方法が登場してきています。それが「Agent Skills」です。

2025 年 12 月 18 日、Agent Skills が GitHub Copilot に追加されました[1]。Agent Skills は、必要な時だけ動的にロードされる「専門知識のパッケージ」として機能し、コンテキストを効率的に管理しながら Copilot の能力を拡張できます。

この記事では、Agent Skills の基本的な仕組みと、実際に動作する簡単なスキルの作り方を紹介します。さらに、VS Code の Chat Debug を使ってシステムプロンプトの中身を確認し、どのように遅延ロードが実装されているのかも見ていき、メリットとデメリットを考察していきます。

Agent Skills とは?

Agent Skills は、AI エージェントに「専門知識」と「手続き的な知識」を与えるためのオープン標準です[2]。各 Skill は、SKILL.md ファイルを中心に、オプションでスクリプトやテンプレートなどの関連ファイルをまとめたフォルダとして構成されます。

AI エージェントは進化を続けていますが、実際の業務で信頼性のある成果を出すには、チームや組織固有のコンテキストが不可欠です。従来は、このような知識をカスタム指示として常にプロンプトに含める方法が一般的でしたが、これはコンテキストウィンドウを圧迫し、パフォーマンスに悪影響を与えていました。

Agent Skills は、この課題に対する解決策です。Skills はエージェントが必要な時だけ動的に読み込む「発見可能な能力」としてパッケージ化されます。これにより、以下のような利点があります。

  • ドメイン専門知識の再利用: 法的レビュープロセスやデータ分析パイプラインなど、専門的な知識を再利用可能な指示として保存できます
  • 新しい能力の追加: プレゼンテーション作成、MCP サーバー構築、データセット分析など、エージェントに新しい能力を与えられます
  • 反復可能なワークフロー: 複数ステップのタスクを一貫性があり監査可能なワークフローに変換できます
  • 相互運用性: 同じ Skill を異なるエージェント製品で再利用できます

もともとは Claude Code で導入された概念ですが、標準化され、GitHub Copilot にもポートされた、という経緯があります。詳細については、下記のドキュメントを参照してみてください。

https://agentskills.io/home

VS Code で Agent Skills を有効にする

VS Code での Agent Skills は、VS Code Insiders で先行して提供されています。VS Code でも利用は可能ですが、現時点 (2025/12/19) では、読み込みできるディレクトリが異なります。

  • VS Code: .claude/skills/
  • VS Code Insiders: .github/skills/, .claude/skills/, ~/.copilot/skills/, ~/.claude/skills/

基本的には、これからは .github/skills/ 配下にスキルを配置するのが標準的な方法となると考えてよいでしょう。

また、Agent Skills を有効化するには chat.useAgentSkills 設定を true にする必要があります。

settings.json
{
  "chat.useAgentSkills": true
}

詳しくは下記のドキュメントを参照してください。

https://code.visualstudio.com/docs/copilot/customization/agent-skills

作ってみる

まずは、仕組みを理解するために「入力した文字をそのまま返すだけ」というシンプルなスキルを作ってみましょう。

.github/skills/echo/SKILL.md を作成し、以下の内容を記述します。

---
name: echo-skill
description: 入力されたテキストをそのままユーザーに返します。
---

# Echo Skill

このスキルは、入力されたテキストを受け取り、それをそのまま返します。

SKILL.md の Specification は Agent Skills Standard に準拠しています。YAML フロントマターでスキルの名前や説明を定義し、Markdown 部分でエージェントへの指示を記述します。

現在の仕様は、以下の通りです。

項目 必須 制約
name はい 最大 64 文字。小文字の英字、数字、ハイフンのみ。先頭と末尾はハイフン不可。
description はい 最大 1024 文字。空欄不可。スキルの内容と使用タイミングを説明。
license いいえ ライセンス名、または同梱ライセンスファイルへの参照。
compatibility いいえ 最大 500 文字。想定製品、必要なシステムパッケージ、ネットワークアクセスなどの環境要件を示す。
metadata いいえ 追加メタデータ用の任意のキーと値のマッピング。
allowed-tools いいえ 事前承認済みツールのスペース区切りリスト(実験的)。

使ってみる

GitHub Copilot で Agent Skills を使うには、read/readFile ツールへのアクセスが必要です。エージェントモードで read/readFile ツールのみを有効化して、echo hello のように入力すると、以下のように動作します。


「hello」が echo-skill によってエコーされている様子

表示上、SKILL.md が読み込まれていることがわかると思います。では、Chat Debuglog でも確認してみましょう。

まずトレースを見ると、 panel/editAgent -> read_file といった流れで echo-skill の読み込みが動的に行われていることがわかります。これは、システムプロンプト側に「echo っていう SKILL があること」や「どんな時に使うべきか」が注入されているためです。


Chat Debuglog に表示された echo-skill SKILL.md の読み込み

そこで、そもそもどういったシステムプロンプトが入力されているか確認してみます。panel/editAgentsystem メッセージを見ると、以下のようにな指示が含まれていました。

<instructions>
...

<skills>
Here is a list of skills that contain domain specific knowledge on a variety of topics.
Each skill comes with a description of the topic and a file path that contains the detailed instructions.
When a user asks you to perform a task that falls within the domain of a skill, use the 'read_file' tool to acquire the full instructions from the file URI.
<skill>
<name>echo-skill</name>
<description>Echo back the input text.</description>
<file>\project_root\.github\skills\echo\SKILL.md</file>
</skill>
</skills>

</instructions>

まさにこれが遅延ローディングの仕組みです。ユーザーからの入力に応じて、必要な場面にだけスキルを読み込むような指示が組み込まれています。

これなら別に Agent Skills なくてもいいのでは?

と思ったあなた、かなり使い込んでいて鋭い視点を持っていると思います。確かに、従来のカスタム指示やカスタムエージェントでも、同様のことが実現できます。

実際に、自分は AGENTS.md をなるべく軽量化して、すべて docs/ にオフロードすべき、という考え方を以前から提唱してきました。なぜなら、常に追加されるコンテキストとしてはやりすぎなので、部分を切り出して必要な時にだけ読み込む仕組みが欲しかったからです。これは、まさに Agent Skills が解決しようとしている課題の一つです。たとえば、自分は以下のような AGENTS.md 定義を使って、動的なローディングを実装していました。

## Tools

- `docs/CONTRIBUTING.md`: Guidelines for contributing to this project.
- `docs/DEPLOYMENT.md`: Deployment instructions for this project.
- ...

しかし、Agent Skills が従来方法に勝っている点が明確にあります。一つ目は、勝手にローディングしてくれる点です。

従来は、AGENTS.md やカスタム指示にスキルの存在を明示的に記述する必要がありました。Agent Skills では、スキルディレクトリに配置するだけで、必要な時に自動的にロードされます。これは、スキルの追加や管理が非常に楽になることを意味します。特に大規模なプロジェクトや複数人での開発においては、スキルの管理が煩雑になりがちです。Agent Skills を使うことで、その負担を大幅に軽減できます。

また、フォーマットが標準化されていることもとても大きな利点です。標準化されていることによって、ポートもしやすくなりますし、なによりエコシステムが発達します。誰かが作った仕組みを再利用する、ということがより一層容易になります。

たとえば、Anthropic 公式のスキルレポジトリや、GitHub Copilot のサンプルレポジトリで Skill のテンプレートが既に公開されています。今後どんどん増えてくるでしょう。

https://github.com/anthropics/skills

https://github.com/github/awesome-copilot/tree/main/skills/

逆にデメリットになりそうな点をあえて挙げるとすれば、どのように SKILL がロードされるかがブラックボックス化されてしまう点です。たとえば、GitHub Copilot では、以下のような XML ベースの指示構造で実装されています。

<skills>
Here is a list of skills that contain domain specific knowledge on a variety of topics.
Each skill comes with a description of the topic and a file path that contains the detailed instructions.
When a user asks you to perform a task that falls within the domain of a skill, use the 'read_file' tool to acquire the full instructions from the file URI.
<skill>
<name>...</name>
<description>...</description>
<file>...</file>
</skill>
</skills>

基本的に問題ない(良い指示文になっている)と個人的には思いますが、ここをカスタマイズしたい要求があれば、Agent Skills ではなく、従来通り自分で指示を書くべきでしょう。

まとめ

Agent Skills は、GitHub Copilot に「必要な時だけロードされる専門知識」を与えるための標準化された仕組みです。従来のカスタム指示やカスタムエージェントでも似たようなことは実現できましたが、Agent Skills には以下の明確な利点があります。

  1. 自動ロード: スキルディレクトリに配置するだけで、適切なタイミングで自動的にロードされる
  2. 標準化: オープン標準に基づいているため、異なるツール間での移植性が高く、エコシステムが発達しやすい

VS Code としては発表されたばかりの新機能ですが、すでに多くの Claude Code ユーザーが Skills を使っており、今後のさらなるエコシステムの発展が期待できます。プロジェクト固有の診断スクリプトや、複雑なデプロイ手順などを Skills 化することで、開発ワークフローを効率化していきましょう!

まずは、Anthropic の公式 Skills レポジトリや GitHub の awesome-copilot レポジトリにある既存の Skills を参考にしてみてください :)

脚注
  1. GitHub Copilot now supports Agent Skills - GitHub Changelog ↩︎

  2. Agent Skills Standard ↩︎

Microsoft (有志)

Discussion