VS Code のエージェントプラグイン(プレビュー)
エージェントプラグインは、Visual Studio Code のプラグインマーケットプレイスから検索・インストールできる、エージェントのカスタマイズをパッケージ化したものです。1 つのプラグインで、スラッシュコマンド、エージェントスキル、カスタムエージェント、フック、MCP サーバーの任意の組み合わせを提供できます。
プラグインは、ローカルで定義されたカスタマイズと並行して動作します。プラグインをインストールすると、そのコマンド、スキル、エージェント、フック、MCP サーバーがチャットに表示されます。
エージェントプラグインは現在プレビュー段階です。 chat.plugins.enabled この設定は組織レベルで管理されています。変更については管理者に連絡してください。 設定を使用して、エージェントプラグインのサポートを有効または無効にできます。
プラグインの提供内容
エージェントプラグインは、以下のカスタマイズタイプを 1 つ以上バンドルできます。
- スラッシュコマンド: チャットで
/を使って呼び出せる追加コマンド - スキル: 必要に応じて読み込まれる指示、スクリプト、リソースを備えた エージェントスキル
- エージェント: 特化したペルソナとツール構成を持つ カスタムエージェント
- フック: エージェントのライフサイクルの各ポイントでシェルコマンドを実行する フック
- MCP サーバー: 外部ツール連携のための MCP サーバー
例えば、テストプラグインには、スクリプトを含む test-runner スキル、読み取り専用ツールを備えた test-reviewer エージェント、テストレポートダッシュボード用の MCP サーバーが含まれる場合があります。プラグインのディレクトリ構造は以下のようになります。
my-testing-plugin/
plugin.json # Plugin metadata and configuration
skills/
test-runner/
SKILL.md # Testing skill instructions
run-tests.sh # Supporting script
agents/
test-reviewer.agent.md # Code review agent
hooks/
hooks.json # Hook configuration
scripts/
validate-tests.sh # Hook script
.mcp.json # MCP server definitions
インストール後、プラグインによって提供されるカスタマイズは、ローカルで定義されたものと並んで表示されます。例えば、プラグインのスキルは「スキルの構成 (Configure Skills)」メニューに表示され、プラグインの MCP サーバーは MCP サーバーリストに表示されます。
プラグインには、マシン上でコードを実行するフックや MCP サーバーが含まれる場合があります。特にコミュニティマーケットプレイスのプラグインをインストールする場合は、プラグインの内容と公開元を確認してください。
プラグインのメタデータ (plugin.json)
すべてのプラグインは、ルートディレクトリに plugin.json マニフェストファイルを必要とします。このファイルはプラグインの ID を定義し、コンポーネントの場所を VS Code に伝えます。
必須フィールド
| フィールド | タイプ | 説明 |
|---|---|---|
名前 |
string | ケバブケースのプラグイン名。小文字、数字、ハイフンのみ使用可能です。最大 64 文字。スラッシュ、コロン、名前空間のプレフィックスは使用しないでください(例: my-plugin は有効ですが、myorg/my-plugin は無効です)。無効な名前の場合、プラグインの読み込みがサイレント失敗します。 |
オプションフィールド
| フィールド | タイプ | 説明 |
|---|---|---|
説明 |
string | プラグインの簡単な説明。最大 1024 文字。 |
version |
string | セマンティックバージョン(例: 1.0.0)。プラグインがマーケットプレイスにリストされる場合、バージョンは plugin.json と marketplace.json の両方のプラグインエントリに記載されることがあります。変更を公開する際は、plugin.json のバージョンを更新してください。 |
author |
object | name(必須)、email、url フィールドを含む作成者情報。 |
skills |
文字列または文字列の配列 | スキルディレクトリへのパス。デフォルトは skills/ です。 |
agents |
文字列または文字列の配列 | エージェントディレクトリへのパス。デフォルトは agents/ です。 |
hooks |
文字列またはオブジェクト | フック設定ファイルへのパス、またはインラインのフックオブジェクト。 |
mcpServers |
文字列またはオブジェクト | MCP 設定ファイル(例: .mcp.json)へのパス、またはインラインのサーバー定義。 |
完全なフィールドリファレンスについては、GitHub Copilot CLI プラグインリファレンスを参照してください。
plugin.json の例
{
"name": "my-dev-tools",
"description": "React development utilities",
"version": "1.2.0",
"author": {
"name": "Jane Doe"
},
"skills": "skills/",
"agents": "agents/",
"hooks": "hooks.json",
"mcpServers": ".mcp.json"
}
プラグインのフォーマット
VS Code は、フォーマット固有のマニフェストパスをチェックしてプラグインフォーマットを自動検出します。他のフォーマットマーカーが見つからない場合、Copilot フォーマットがデフォルトとして使用されます。
| プラグインフォーマット | プラグインファイルパス |
|---|---|
| Claude | .claude-plugin/plugin.json |
| OpenPlugin | .plugin/plugin.json |
プラグインの環境変数
一部のプラグインフォーマットは、フックコマンドや MCP サーバー設定でプラグインディレクトリ内のファイルを参照するために使用できるルートトークンを提供します。VS Code は実行時にこのトークンを展開し、フックやサーバープロセス内の環境変数としても設定します。
| プラグインフォーマット | プラグインルート |
|---|---|
| Claude | ${CLAUDE_PLUGIN_ROOT} |
| Copilot | (未定義) |
| OpenPlugin | ${PLUGIN_ROOT} |
プラグインのフック
プラグインには、エージェントのライフサイクルの各ポイントでシェルコマンドを実行する フック を含めることができます。プラグインのフックは、ワークスペースレベルおよびユーザーレベルのフックと並行して動作します。プラグインが有効な場合、そのフックは同じイベントに対して構成された他のフックに加えて実行されます。
フックファイルの場所
フックファイルの場所はプラグインのフォーマットによって異なります。
| プラグインフォーマット | フックファイルのパス |
|---|---|
| Claude | hooks/hooks.json |
| Copilot | hooks.json (プラグインルート) |
VS Code はプラグインフォーマットを自動検出し、フックファイルを自動的に探索します。
my-plugin/
hooks/
hooks.json # Hook configuration (Claude format)
scripts/
format.sh # Hook script referenced by hooks.json
フック設定フォーマット
プラグインのフックは、ワークスペースフック と同じ基本フォーマットを使用します。VS Code は Claude Code のフック設定を(マッチャー構文を含めて)解析しますが、現在はマッチャーの値を無視するため、フックは一致するすべてのイベントで実行されます。
フラットフォーマット (ワークスペースフックと同じ)
{
"hooks": {
"PostToolUse": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh"
}
]
}
}
マッチャーフォーマット (Claude 互換構文)
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh"
}
]
}
]
}
}
VS Code は Claude Code との互換性のために matcher フィールドを解析しますが、現在のところマッチャーの値は無視されます。VS Code でフックの動作をフィルタリングする必要がある場合は、フックスクリプト内でイベントの入力内容を確認してください。
フックコマンドでのプラグインパスの参照
Claude フォーマットのプラグインの場合、フックコマンドで ${CLAUDE_PLUGIN_ROOT} トークンを使用して、プラグインディレクトリ内のスクリプトやファイルを参照してください。VS Code は実行時にこのトークンをプラグインの絶対パスに展開し、フックプロセスの CLAUDE_PLUGIN_ROOT 環境変数にも設定します。スクリプト内からは $CLAUDE_PLUGIN_ROOT(Windows では %CLAUDE_PLUGIN_ROOT%)としてアクセスします。
プラグインはワークスペースの外にインストールされるため、相対パスは使用できないことに注意してください。
{
"hooks": {
"PreToolUse": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate-tool.sh"
}
]
}
}
サポートされているフックイベント
プラグインフックは、ワークスペースフックと同じライフサイクルイベント(SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PreCompact, SubagentStart, SubagentStop, Stop)をサポートしています。各イベントの詳細については「フックのライフサイクルイベント」を参照してください。
プラグインフックと他のフックの相互作用
プラグインフックは、ワークスペースレベルおよびユーザーレベルのフックと並行して実行されます。複数のフックが同じイベントをターゲットにしている場合、それらすべてが実行されます。PreToolUse フックの場合、すべてのフックの中で最も制限の強い決定が優先されます(deny が ask を上書きし、ask が allow を上書きします)。
プラグインを無効にすると、そのフックも無効になります。プラグインは、拡張機能ビューからグローバル、または特定のワークスペースに対して有効/無効を切り替えることができます。
プラグイン内の MCP サーバー
プラグインは MCP サーバー をバンドルして、エージェントに追加のツールやデータソースを提供できます。プラグインの MCP サーバーは、プラグインが有効になると自動的に開始し、無効になると停止します。
MCP 設定ファイル
MCP サーバーの定義は、プラグインルートの .mcp.json に配置します。VS Code はプラグインの読み込み時にこのファイルを自動的に検出します。
my-plugin/
.mcp.json # MCP server definitions
servers/
db-server # Server executable
config.json # Server configuration
MCP 設定フォーマット
プラグインの MCP サーバーは、トップレベルの mcpServers オブジェクトで定義されます。各サーバーエントリには、コマンド、引数、およびオプションの環境変数を指定します。
{
"mcpServers": {
"plugin-database": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
"args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
"env": {
"DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"
}
},
"plugin-api": {
"command": "npx",
"args": ["@company/mcp-server", "--plugin-mode"],
"cwd": "${CLAUDE_PLUGIN_ROOT}"
}
}
}
トップレベルのキーは mcpServers です(ワークスペースの mcp.json のような servers ではありません)。
サーバー設定でのプラグインパスの参照
Claude フォーマットのプラグインの場合、MCP サーバーのフィールドで ${CLAUDE_PLUGIN_ROOT} トークンを使用して、プラグインディレクトリ内の実行ファイルやファイルを参照します。VS Code は以下のフィールドでこのトークンを展開します。
command: 実行ファイルへのパスargs: コマンドライン引数cwd: 作業ディレクトリenv: 環境変数の値envFile: 環境変数ファイルへのパスurl: HTTP ベースの MCP サーバーの場合headers: HTTP ヘッダーの値
VS Code は CLAUDE_PLUGIN_ROOT 環境変数をサーバープロセスにも注入するため、サーバーコードから実行時にプラグインのパスにアクセスできます。
プラグイン MCP サーバーと他のサーバーの相互作用
プラグインの MCP サーバーは、ワークスペースおよびユーザーレベルの MCP サーバーと並んで表示されます。これらは同じツールで管理できます。
- チャットビューで「ツールの構成 (Configure Tools)」を選択すると、プラグインサーバーを含むすべての MCP サーバーのツールを確認できます。
- コマンドパレットから「MCP: サーバーの一覧 (MCP: List Servers)」を実行すると、他のサーバーと並んでプラグインサーバーが表示されます。
プラグインの MCP サーバーは、プラグインのインストール時に暗黙的に信頼されます。ワークスペースの MCP サーバーとは異なり、起動時に別の信頼確認プロンプトは表示されません。
プラグインを無効にすると、その MCP サーバーが停止します。停止したサーバーが提供していたツールは、チャットで使用できなくなります。
プラグインの検索とインストール
VS Code には、エージェントプラグインを検索および管理するための拡張機能サイドバー内の専用ビューが用意されています。
利用可能なプラグインの検索
-
拡張機能ビュー(⇧⌘X (Windows, Linux Ctrl+Shift+X))を開き、検索フィールドに
@agentPluginsと入力します。または、拡張機能サイドバーの「その他の操作 (More Actions)」(3点アイコン)を選択し、「ビュー (Views)」>「エージェントプラグイン (Agent Plugins)」を選択します。
-
設定したマーケットプレイスから利用可能なプラグインのリストを参照します。

-
「インストール (Install)」を選択して、ユーザープロファイルにプラグインをインストールします。
新しいマーケットプレイスから初めてプラグインをインストールする場合、VS Code は信頼確認のプロンプトを表示します。確認する前にマーケットプレイスのソースを確認してください。
ソースからのプラグインインストール
マーケットプレイスを完全に追加することなく、Git リポジトリ URL から直接プラグインをインストールできます。
- コマンドパレットから「Chat: ソースからプラグインをインストール (Chat: Install Plugin From Source)」を実行します。
- または、エージェントカスタマイズエディターの「プラグイン (Plugins)」ページにある「+」ボタンを選択します。
Git リポジトリの URL を入力すると(例: https://github.com/rwoll/markdown-review)、VS Code がプラグインをクローンしてインストールします。
GitHub Copilot CLI によってインストールされたプラグイン
GitHub Copilot CLI を使用してインストールしたプラグインは、VS Code でも使用できるように自動的に検出されます。~/.copilot/installed-plugins/ にあるプラグインは、マーケットプレイスやソースからインストールしたプラグインと並んで「エージェントプラグイン - インストール済み (Agent Plugins - Installed)」ビューに表示されます。
CLI はプラグインを ~/.copilot/installed-plugins/<marketplace>/<plugin>/ に保存します。マーケットプレイス経由ではなく Git URL から直接インストールされたプラグインは _direct バケット(例: ~/.copilot/installed-plugins/_direct/github--moda-linter--copilot-plugin/)の下に格納されます。
インストール済みプラグインの表示
拡張機能ビュー内の「エージェントプラグイン - インストール済み (Agent Plugins - Installed)」ビューには、インストール済みのプラグインが表示されます。このビューからプラグインの有効化、無効化、アンインストールが可能です。

また、チャットビューで「歯車アイコン」>「プラグイン (Plugins)」を選択することで、インストール済みプラグインを管理することもできます。
プラグインの有効化/無効化
プラグインはグローバル、または特定のワークスペースに対して有効/無効を切り替え可能です。
- 拡張機能ビューの「エージェントプラグイン - インストール済み (Agent Plugins - Installed)」セクションで、プラグインのコンテキストメニューを使用します。
- エージェントカスタマイズエディター を使用してプラグインの有効/無効状態を切り替えます。
有効/無効の状態はプラグイン設定とは別に保存されるため、共有ワークスペース設定には影響しません。
プラグインを無効にすると、そのスキル、エージェント、フック、MCP サーバー、スラッシュコマンドは使用できなくなります。例えば、無効化されたプラグインのスキルは「チャット: スキルの構成 (Chat: Configure Skills)」には表示されません。無効化されたプラグインは、エージェントカスタマイズエディターと拡張機能ビューでグレーアウトして表示されます。
プラグインのアンインストール
プラグインを削除するには、「エージェントプラグイン - インストール済み (Agent Plugins - Installed)」ビューで右クリックし、「アンインストール (Uninstall)」を選択します。外部ソース(npm、PyPI、または外部 Git リポジトリなど)からインストールされたプラグインはディスクから削除されます。マーケットプレイスリポジトリにインライン化されているプラグインは、ディスク上に残りますが非アクティブになります。
プラグインマーケットプレイスの設定
デフォルトでは、VS Code は copilot-plugins および awesome-copilot からプラグインを検出します。 chat.plugins.marketplaces 設定を使用して、追加のマーケットプレイスを追加できます。
マーケットプレイスとは、プラグイン定義を含む Git リポジトリのことです。いくつかのフォーマットで参照できます。
- ショートハンド: 公開 GitHub リポジトリ用の
owner/repo。例:anthropics/claude-code。 - HTTPS git リモート:
.gitで終わる完全な URL。例:https://github.com/anthropics/claude-code.git。 - SCP スタイルの git リモート: SSH スタイルの参照。例:
git@github.com:anthropics/claude-code.git。 - file URI: すでにディスク上にクローンされたマーケットプレイスリポジトリへの
file:///パス。
プライベートリポジトリもサポートされています。公開リポジトリの検索が失敗した場合、VS Code はフォールバックしてリポジトリを直接クローンします。
マーケットプレイスプラグインは、npm や PyPI パッケージなどの外部パッケージソースを参照することもできます。マーケットプレイスプラグインの完全なスキーマについては、Claude Code プラグインマーケットプレイスのドキュメント を参照してください。
// settings.json
"chat.plugins.marketplaces": [
"anthropics/claude-code"
]
ローカルプラグインの使用
手動でプラグインをクローンまたはダウンロードした場合は、 chat.pluginLocations 設定で登録できます。この設定は、ローカルプラグインのディレクトリパスを有効/無効状態にマッピングします。
// settings.json
"chat.pluginLocations": {
"/path/to/my-plugin": true,
"/path/to/another-plugin": false
}
値を true に設定するとプラグインが有効になり、false に設定すると登録されたまま無効になります。
プラグインの更新
VS Code は、コマンドパレットから「拡張機能: 拡張機能の更新を確認 (Extensions: Check for Extension Updates)」を実行した際、または extensions.autoUpdate が有効な場合に 24 時間ごとに自動でプラグインの更新を確認します。
更新により、クローンされたマーケットプレイスリポジトリからの変更がプルされ、外部ソースプラグインの新しいバージョンがチェックされます。
npm や PyPI から取得したプラグインは自動更新されません。代わりに、拡張機能ビューに「更新 (Update)」ボタンが表示されます。このボタンを選択すると、インストールコマンドを実行する前に確認を求められます。バックグラウンドチェック中に更新が見つかった場合、明示的に「更新」を選択するまでアクションは実行されません。
ワークスペースのプラグイン推奨事項
プロジェクトは、ワークスペース設定(.claude/settings.json または .github/copilot/settings.json)でプラグイン設定を構成することで、チームメンバーにプラグインを推奨できます。
初めてチャットメッセージが送信されると、VS Code は通知を表示します。推奨プラグインを表示するには、拡張機能ビューを開き、@agentPlugins @recommended でフィルタリングします。
ワークスペースプラグインの推奨事項を構成するには、設定ファイルに次のフィールドを指定します。
-
extraKnownMarketplaces: プロジェクト用にマーケットプレイスを追加登録します。これらのマーケットプレイスは、拡張機能ビューで@agentPluginsを検索した際に表示されます。 -
enabledPlugins: デフォルトで有効にするプラグインのリスト。
{
"extraKnownMarketplaces": {
"company-tools": {
"source": {
"source": "github",
"repo": "your-org/plugin-marketplace"
}
}
},
"enabledPlugins": {
"code-formatter@company-tools": true
}
}
ツール間の互換性
プラグインフォーマットは、VS Code、GitHub Copilot CLI、および Claude Code 間で共有されます。1 つのプラグインリポジトリが、これら 3 つすべてのツールで機能します。
VS Code は、以下の順序で複数の場所にある plugin.json をチェックして、プラグインフォーマットを自動検出します。
.plugin/plugin.jsonplugin.json(プラグインルート).github/plugin/plugin.json.claude-plugin/plugin.json
複数のツール用のプラグインを作成する場合は、plugin.json をルートに配置し、フォーマット固有のディレクトリにシンボリックリンクまたはコピーを使用できます。競合を避けるため、name フィールドはすべてのコピーで同一にしてください。
ツール間での主な違い
- フックファイルの場所: Claude フォーマットのプラグインは
hooks/hooks.jsonを想定していますが、Copilot フォーマットのプラグインはルートのhooks.jsonを使用します。VS Code はフォーマットを自動的に検出します。 - プラグインルートトークン: Claude フォーマットのプラグインは
${CLAUDE_PLUGIN_ROOT}を使用してプラグインディレクトリ内のファイルを参照します。このトークンは Copilot フォーマットのプラグインでは利用できません。 - スキルの命名: すべてのツールで
SKILL.md内の単純なケバブケース名が必要です。名前空間のプレフィックス(myorg/skillnameなど)を使用すると、読み込みがサイレント失敗します。
ツール固有の詳細については、GitHub Copilot CLI プラグインリファレンス および Claude Code プラグインマーケットプレイスドキュメント を参照してください。
トラブルシューティング
インストール後にプラグインが表示されない場合
- エージェントプラグインが有効であることを確認してください: chat.plugins.enabled この設定は組織レベルで管理されています。変更については管理者に連絡してください。 が
trueに設定されているか確認してください。 plugin.json内のプラグインのnameフィールドが、小文字、数字、ハイフンのみを使用していることを確認します。スラッシュ、コロン、その他の特殊文字は、プラグインの読み込みをサイレントに失敗させます。plugin.jsonが認識される場所にあるか確認します(「ツール間の互換性」を参照)。
プラグインのスキルが読み込まれない場合
SKILL.mdファイルを開き、YAML フロントマターのnameフィールドを確認します。名前は、名前空間のプレフィックスを含まない単純なケバブケースである必要があります(例:test-runnerであり、myorg/test-runnerではない)。無効な名前はスキルをサイレントにスキップさせます。- スキルディレクトリ名が
SKILL.mdフロントマターのnameフィールドと一致していることを確認してください。
プラグインのバージョンが更新されない場合
- 変更をプッシュする前に、
plugin.json(および該当する場合はmarketplace.jsonのプラグインエントリ)のversionフィールドを更新してください。 - コマンドパレットから「拡張機能: 拡張機能の更新を確認 (Extensions: Check for Extension Updates)」を実行し、更新チェックをトリガーします。
'destination path already exists' というエラーでインストールが失敗する場合
これは、以前のインストールでキャッシュデータが残っている場合に発生する可能性があります。キャッシュされたプラグインディレクトリを削除して再試行してください。
- macOS:
~/Library/Application Support/Code/agentPlugins/github.com/{org}/{repo} - Linux:
~/.config/Code/agentPlugins/github.com/{org}/{repo} - Windows:
%APPDATA%\Code\agentPlugins\github.com\{org}\{repo}