Примечание.
Помощь по использованию плагинов можно найти copilot plugin [SUBCOMMAND] --help в терминале.
Для обзора того, что такое плагины и как они работают между Copilot клиентами, см. О GitHub Copilot плагинах.
Команды CLI
Вы можете использовать следующие команды в терминале для управления плагинами для Copilot CLI.
copilot plugins (plural) — это устаревший псевдоним для обоих copilot pluginкоманд.
| Command | Описание |
|---|---|
copilot plugin install SPECIFICATION (псевдоним add) | Установите плагин. См. спецификацию плагина для install команды ниже. |
copilot plugin uninstall NAME (псевдонимы remove, rm) | Удалить плагин |
copilot plugin list | Список установленных плагинов |
copilot plugin update NAME | Обновите именованный плагин. Используйте --all обновление всех установленных плагинов сразу. |
copilot plugin enable NAME | Включите ранее отключенный подключаемый модуль. Изменение сохраняется в конфигурации и применяется к будущим сеансам. Это работает для установок Marketplace и прямых установок (из owner/repoURL-адреса или локального пути). |
copilot plugin disable NAME | Отключите подключаемый модуль, не удаляя его. Подключение --plugin-dir остается только для чтения, так как оно не имеет постоянной активации для изменения. |
copilot plugin marketplace add SPECIFICATION | Регистрация Marketplace. Собственное имя Marketplace из манифеста marketplace.json становится его ключом регистрации. Нет возможности задать пользовательское локальное имя. |
copilot plugin marketplace list | Список зарегистрированных торговых площадок |
copilot plugin marketplace browse NAME | Просмотр плагинов маркетплейса |
copilot plugin marketplace update [NAME] (псевдоним refresh) | Повторное получение каталога подключаемых модулей Marketplace. Не следует NAME обновлять каталоги каждой зарегистрированной платформы. |
copilot plugin marketplace remove NAME | Отмена регистрации marketplace. Отклонено, если подключаемые модули из Marketplace по-прежнему установлены; передайте --force эти подключаемые модули, чтобы удалить эти подключаемые модули. |
Прежде чем copilot plugin был разделен на отдельные команды по ресурсам, copilot plugins также проверил и переключил серверы MCP, навыки, инструкции и языковые серверы с помощью --kind, --scope``--mcpи --skill флагов. Эти перекрестные флаги были удалены. Используйте вместо этого выделенные copilot mcpкоманды, copilot skillcopilot instructionа copilot lsp также команды.
copilot plugin list --json теперь выдает плоский массив подключаемых модулей вместо предыдущего { plugins, errors } объекта.
Примечание.
Подключаемый модуль или Marketplace, закрепленный организацией или управляемой политикой MDM (enabledPlugins,), extraKnownMarketplacesне может быть повторно включен, отключен или переназначирован локально — управляемое значение выигрывает для этой записи. Панель /plugin мониторинга помечает эти строки значком Managed и отказывается от конфликтующего переключателя. См . раздел AUTOTITLE.
Подключаемый модуль, активация которого в настоящее время определяется наложением текущего репозитория enabledPlugins , отклоняет copilot plugin enable/disable вместо автоматического сохранения глобального значения, которое не будет влиять на этот репозиторий. Ошибка называет файл параметров, который фактически управляет подключаемым модулем. См . раздел AUTOTITLE.
Спецификация плагина для install команды
| Формат | Пример | Описание |
|---|---|---|
| Маркетплейс | plugin@marketplace | Плагин с зарегистрированного маркетплейса |
| GitHub | OWNER/REPO | Корень GitHub репозитория |
| GitHub вложенный каталог | OWNER/ | Подкаталог в репозитории |
| URL-адрес Git | https:/ | Любой URL в Git |
| Местный маршрут | ||
./my-plugin или /abs/path | Местный справочник |
copilot plugin list варианты
| Опция | Описание |
|---|---|
--json | Выведите неструктурированный массив JSON подключаемых модулей вместо текста. |
--config-dir=DIRECTORY | Путь к каталогу конфигурации. Этот параметр является устаревшим. Вместо этого используйте COPILOT_HOME. |
Каждая --json строка имеет фигуру { name, marketplace?, version?, enabled, source, installedFrom? }.
copilot plugin enable/disable параметры
| Опция | Описание |
|---|---|
--config-dir=DIRECTORY | Путь к каталогу конфигурации. Этот параметр является устаревшим. Вместо этого используйте COPILOT_HOME. |
copilot plugin install варианты
Чтобы установить навык вместо подключаемого модуля, используйте copilot skill add вместо него — это не установка подключаемого модуля и не проходит через Marketplace.
| Опция | Описание |
|---|---|
--config-dir=DIRECTORY | Путь к каталогу конфигурации. Этот параметр является устаревшим. Вместо этого используйте COPILOT_HOME. |
Серверы MCP устанавливаются из настроенного политикой реестра, для которого требуется проверка подлинности и интерактивная запись секрета. Используйте представление /mcp панели мониторинга в Интернете или copilot mcp add команду, чтобы добавить серверы MCP вместо copilot plugin installнего.
copilot plugin update варианты
| Опция | Описание |
|---|---|
--all | Обновление каждого установленного подключаемого модуля |
--config-dir=DIRECTORY | Путь к каталогу конфигурации. Этот параметр является устаревшим. Вместо этого используйте COPILOT_HOME. |
Примечание.
Подключаемые модули с исходным путем в локальном (источнике каталога) marketplace загружаются в реальном каталоге. Изменение одного из них вступает в силу /restart или в новом сеансе без copilot plugin update необходимости.
Сторонние подключаемые модули , установленные из встроенных copilot-plugins и awesome-copilot marketplace, автоматически обновляются в начале каждого сеанса в доверенном рабочем каталоге. Отключите это поведение с параметром autoUpdate (задано falseзначением) или переменной COPILOT_AUTO_UPDATE=false среды. Автоматическое обновление также пропускается по умолчанию в CI. См . раздел AUTOTITLE.
Вы добавили marketplace самостоятельно, чтобы выбрать одно и то же автоматическое обновление сеанса, задав autoUpdate: true запись в параметрах extraKnownMarketplaces пользователя. Эта возможность применяется только к интерактивным сеансам, -p а сеансы SDK и сервера не обновляются автоматически. Он учитывается из собственных параметров пользователя или управляемых параметров (MDM/server), но параметр уровня autoUpdate репозитория принимается и игнорируется— он не может включить или перенаправить автоматическое обновление для Marketplace. При столкновении с тем же именем встроенная первая сторона Marketplace выигрывает, а затем управляемую запись (которая заменяет всю ту же именованную запись пользователя, поэтому управляемая запись без "autoUpdate": true удаления согласия пользователя), а затем собственная запись пользователя. См. параметры репозитория.
В интерактивном режиме /plugin помечает установленный подключаемый модуль или Marketplace, когда более новая версия доступна выше, и предлагает действие обновления с панели мониторинга, чтобы извлечь ее.
copilot plugin marketplace (псевдоним marketplaces) вложенные комманды
Встроенные marketplace по умолчанию поставляются со средой выполнения и не могут быть удалены.
| Subcommand | Описание |
|---|---|
list [--json] | Вывод списка всех зарегистрированных marketplace, включая встроенные значения по умолчанию |
add SOURCE | Добавление Marketplace (owner/repo, owner/repo#refURL-адреса или локального пути) |
remove NAME [--force] | Удаление Marketplace; --force также удаляет подключаемые модули, полученные из него |
browse NAME [--json] | Вывод списка подключаемых модулей, предлагаемых каталогом Marketplace |
update [NAME] (псевдоним refresh) | Обновите каталог подключаемых модулей для одного marketplace или все, если NAME опущен |
В интерактивном режиме запустите /plugin marketplace update [NAME] (псевдоним/plugin marketplace refresh) или нажмите клавишу R в представлении /plugin Панели мониторинга Marketplace, чтобы обновить каждый зарегистрированный каталог Marketplace.
plugin.json
Все подключаемые модули состоят из каталога подключаемого модуля, содержащего файл манифеста с именем plugin.json. Для подключаемых модулей агента требуется манифест в корневом каталоге подключаемого модуля. Корневой каталог plugin.json , предназначенный для подключаемых модулей агента, имеет приоритет над .plugin/plugin.json``.claude-plugin/plugin.json спецификацией §5.1. Устаревшие подключаемые модули поддерживают альтернативные расположения, перечисленные в расположениях файлов. См . раздел AUTOTITLE.
Copilot CLI поддерживает как устаревший манифест подключаемого модуля, так и манифест подключаемых модулей агента.
Copilot CLIраспознает канонические $schema значения для подключаемых модулей агента (Open Plugin Spec) версии 1.0.0 () и версии 1.1.0 (https://agent-plugins.org/schemas/1.0.0/plugin.schema.json``https://agent-plugins.org/schemas/1.1.0/plugin.schema.json), выбрав подключаемый модуль в семантику подключаемых модулей агента. Манифест без одного из этих точных значений использует устаревший формат и загружается как раньше. Если подключаемый модуль объявляет версию подключаемых модулей агента, которая Copilot CLI не поддерживается, интерфейс командной строки отклоняет подключаемый модуль, а не автоматически возвращается в устаревший режим. Отклоненный подключаемый модуль не вносит никаких перехватчиков, серверов LSP, серверов MCP, навыков, команд, агентов, правил или каталогов расширений.
Поля манифеста подключаемого модуля агента 1.0
Подключаемые модули агента 1.0 определяют схему закрытого манифеста. Полные требования к формату см. в спецификации подключаемых модулей агента 1.0.
Допустимы следующие поля:
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
$schema | струна | Да | Должен быть URL-адрес распознаваемых подключаемых $schema модулей агента (версия 1.0.0 или v1.1.0). Неподдерживаемые версии подключаемых модулей агента отклоняются. |
name | струна | Да | Имя подключаемого модуля. См. ограничения имени. |
version | струна | Нет | Строка версии. Рекомендуется использовать семантическое управление версиями. |
description | струна | Нет | Краткое описание. |
author | объект | Нет | Необязательные nameполя и email``url строковые поля. |
homepage | струна | Нет | Домашняя страница или документация подключаемого модуля. |
repository | струна | Нет | Исходный репозиторий. |
license | струна | Нет | Идентификатор лицензии. Рекомендуется использовать идентификатор SPDX. |
keywords | строка[] | Нет | Ключевые слова поиска и обнаружения. |
extensions | объект | Нет | Данные для конкретного клиента, ключом к которым относятся пространство имен обратного домена. |
Неизвестные поля верхнего уровня сообщаются и игнорируются. Поля пути компонента, такие как agents, skills, mcpServers``hooksи lspServers не являются полями манифеста агента 1.0.
Ограничения имен
Имя подключаемого модуля агента 1.0 должно:
- Содержит от 1 до 64 символов.
- Содержит только строчные буквы ASCII, цифры, дефисы и периоды.
- Начало и конец буквенно-цифровым символом.
- Не содержит
--или...
Components
Подключаемые модули агента 1.0 определяют два переносимых типа компонентов:
- Навыки в непосредственных
skills/подкаталогах, содержащихSKILL.mdфайл. - Серверы MCP в
mcp.jsonкорневом каталоге подключаемого модуля.
Эти расположения исправлены и не могут быть настроены в plugin.json. Загрузка навыков выполняется только из skills/-- нет резервного копирования корневых SKILL.md модулей (устаревшие подключаемые модули возвращаются в корневой SKILL.md каталог, если каталог не skills/ существует). Корневой каталог mcp.json должен объявить распознаваемую версию подключаемых $schema модулей агента (соответствующую той же версии, что plugin.jsonи ) в своем $schema поле. Конверт верхнего уровня закрыт, и каждая запись сервера проверяется на соответствие схеме транспорта; Недопустимые записи сервера пропускаются по отдельности, пока допустимые записи по-прежнему загружаются. Интерфейс командной строки принимает stdio``streamable-http``sse и имена транспорта MCP.
Для stdio серверов интерфейс командной строки предоставляет PLUGIN_ROOT и PLUGIN_DATA в подпроцессной среде. Он расширяется ${PLUGIN_ROOT} и ${PLUGIN_DATA}``COPILOT_PLUGIN_DATA (а также CLAUDE_PLUGIN_DATA псевдонимы) в значениях env и псевдонимах cwdсервераargs.
PLUGIN_DATA указывает на постоянный, записываемый каталог для установленного подключаемого модуля. Удаленные и sse``streamable-http серверные httpзначения конфигурации передаются буквально без расширения заполнителей или переменных среды.
Подключаемые модули агента 1.0 не определяют переносимых агентов, перехватчиков, команд, правил или серверов LSP. Они остаются клиентом. Данные манифеста, относящиеся к клиенту, относятся к extensionsключу с помощью пространства имен обратного домена. Файлы, относящиеся к клиенту, принадлежат в каталоге верхнего уровня с тем же пространством имен. Клиенты игнорируют пространства имен, которые они не поддерживают.
Copilot CLI считывает компоненты, относящиеся к клиенту, из com.github.copilot каталога:
| Компонент | Местонахождение |
|---|---|
| Пользовательские агенты | com.github.copilot/ |
| Команды слэш | com.github.copilot/ |
| Правила | com.github.copilot/ |
| Хуки | com.github.copilot/ |
| LSP-серверы | com.github.copilot/ |
Эти расположения применяются только к подключаемым модулям агента 1.0. Устаревшие подключаемые модули продолжают использовать собственные расположения компонентов и поля пути манифеста.
Пример файла подключаемых модулей агента 1.0 plugin.json
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "my-dev-tools",
"description": "React development utilities",
"version": "1.2.0",
"author": {
"name": "Jane Doe",
"email": "[email protected]"
},
"license": "MIT",
"keywords": ["react", "frontend"]
}
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "my-dev-tools",
"description": "React development utilities",
"version": "1.2.0",
"author": {
"name": "Jane Doe",
"email": "[email protected]"
},
"license": "MIT",
"keywords": ["react", "frontend"]
}
Устаревшие поля манифеста
Обязательное поле
| Поле | Тип | Описание |
|---|---|---|
name | струна | Имя подключаемого модуля Kebab (только буквы, цифры и дефисы). Не более 64 символов. |
Опциональные поля метаданных
| Поле | Тип | Описание |
|---|---|---|
description | струна | Краткое описание. Максимум 1024 персонажа. |
version | струна | Семантическая версия (например, 1.0.0). |
author | объект | |
name (обязательно), email (по желанию), url (по необходимости). | ||
homepage | струна | URL главной страницы плагина. |
repository | струна | URL репозитория исходного кода. |
license | струна | Идентификатор лицензии (например, MIT). |
keywords | строка[] | Ключевые слова поиска. |
category | струна | Категория плагинов. |
tags | строка[] | Дополнительные теги. |
Поля пути компонентов
Они указывают CLI, где найти компоненты плагина. Все они необязательны. CLI использует стандартные конвенции, если они опущены.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
agents | String | string[] | agents/ | Пути к директориям агентов (.agent.md файлы). |
skills | String | string[] | skills/ | Пути к каталогам навыков (SKILL.md файлам). |
commands | String | string[] | — | Пути к директориям команд. |
hooks | Строковый | объект | — | Путь к файлу конфигурации перехватчиков или объект встроенного перехватчика. |
extensions | |||
| | строка строки[] | объект | — | Пути к каталогам расширений. Используйте { paths: [...], exclusive: true } для подавления встроенных расширений. В манифестах подключаемых модулей агента 1.0 это поле имеет другое значение. | |
mcpServers | Строковый | объект | — | Путь к файлу конфигурации MCP (например, .mcp.jsonили встроенным определениям сервера). |
lspServers | Строковый | объект | — | Путь к файлу конфигурации LSP или встроенным определениям сервера. |
Серверы MCP, отправляемые подключаемым модулем
Агент, упакованный внутри подключаемого модуля, может объявить свой собственный mcp-servers в своем интерфейсном режиме, определив сервер MCP только для этого агента, а не предоставлять его через общую mcpServers конфигурацию подключаемого модуля. В этом mcp-servers блоке ${PLUGIN_ROOT} (или его ${CLAUDE_PLUGIN_ROOT}/${COPILOT_PLUGIN_ROOT} псевдонимы) расширяется в корневом каталоге подключаемого модуля, поэтому сервер command или args может указывать на скрипт, упакованный с подключаемым модулем:
---
name: Plugin Linter
description: Runs the plugin's bundled linter via its own MCP server
mcp-servers:
plugin-linter:
command: node
args: ["${PLUGIN_ROOT}/tools/serve.js"]
tools: ["*"]
---
You are a linting specialist for this plugin's bundled rules.
Эта подстановка применяется только в интерфейсном интерфейсе агента, отправляемого подключаемым модулем, но не распространяется mcp-servers на ${PLUGIN_DATA} переменные среды сервера или к ним. У рабочих областей и агентов пользователей нет корневого модуля подключаемого модуля, поэтому интерфейсный элемент остается неизменным.
Конфигурация сервера LSP
Чтобы включить серверы LSP (Language Server Protocol) в плагин, создайте lsp-config/servers.json файл в каталоге плагинов или укажите путь или встроенный объект с помощью lspServers поля в plugin.json.
Пример lsp-config/servers.json (или встроенный через lspServers ):plugin.json
{
"lspServers": {
"my-lsp": {
"command": "my-language-server",
"fileExtensions": { ".myext": "mylang" }
}
}
}
Для кроссплатформенной поддержки используйте bash и powershell вместо command:
{
"lspServers": {
"my-lsp": {
"bash": "${PLUGIN_ROOT}/scripts/start-lsp.sh",
"powershell": "${PLUGIN_ROOT}/scripts/start-lsp.ps1",
"fileExtensions": { ".myext": "mylang" }
}
}
}
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
command | струна | * | Исполняемый файл для запуска языкового сервера. |
bash | струна | * | Bash script для запуска сервера (Linux/macOS); Выполнено с bash -c SCRIPTпомощью . |
powershell | струна | * | скрипт PowerShell для запуска сервера (Windows); выполняется через pwsh -c SCRIPT. |
cwd | струна | Нет | Рабочий справочник. Абсолютный или относительно конфигурационного файла. Поддерживает ${PLUGIN_ROOT}. |
args | строка[] | Нет | Аргументы для передачи command (игнорируются для bash и powershell). |
env | объект | Нет | Переменные среды для установки при спавне сервера. |
fileExtensions | объект | Да | Отображение расширений файлов на языковые идентификаторы (например, { ".ts": "typescript" }). |
rootUri | струна | Нет | Project корень относительно корня git (по умолчанию: .). |
initialization | any | Нет | Опции отправляются на сервер в запросе LSP initialize . |
(*) По крайней мере один из command, bash, или powershell обязательно. Когда указаны оба bash и powershell, платформенно соответствующий выбор выбирается автоматически (PowerShell на Windows, Bash в других местах).
Используйте ${PLUGIN_ROOT} для ссылки на пути в каталоге плагинов.
marketplace.json
Вы можете создать маркетплейс плагинов — который пользователи смогут использовать для поиска и установки ваших плагинов — создав marketplace.json файл и сохранив его в .github/plugin/ каталоге репозитория. Вы также можете хранить файл marketplace.json в локальной файловой системе. Например, сохранение файла как /PATH/TO/my-marketplace/.github/plugin/marketplace.json позволяет добавить его в CLI с помощью следующей команды:
copilot plugin marketplace add /PATH/TO/my-marketplace
Примечание.
Copilot CLI также ищет marketplace.json файл в .claude-plugin/ каталоге.
Дополнительные сведения см. в разделе Создание маркетплейса плагинов для GitHub Copilot CLI.
Пример файла marketplace.json
{
"name": "my-marketplace",
"owner": {
"name": "Your Organization",
"email": "[email protected]"
},
"metadata": {
"description": "Curated plugins for our team",
"version": "1.0.0"
},
"plugins": [
{
"name": "frontend-design",
"description": "Create a professional-looking GUI ...",
"version": "2.1.0",
"source": "./plugins/frontend-design"
},
{
"name": "security-checks",
"description": "Check for potential security vulnerabilities ...",
"version": "1.3.0",
"source": "./plugins/security-checks"
}
]
}
{
"name": "my-marketplace",
"owner": {
"name": "Your Organization",
"email": "[email protected]"
},
"metadata": {
"description": "Curated plugins for our team",
"version": "1.0.0"
},
"plugins": [
{
"name": "frontend-design",
"description": "Create a professional-looking GUI ...",
"version": "2.1.0",
"source": "./plugins/frontend-design"
},
{
"name": "security-checks",
"description": "Check for potential security vulnerabilities ...",
"version": "1.3.0",
"source": "./plugins/security-checks"
}
]
}
Примечание.
Значение source поля для каждого плагина — это путь к каталогу плагина относительно корня репозитория. Не обязательно использовать ./ его в начале пути. Например "./plugins/plugin-name" , и "plugins/plugin-name" разрешить в одну и ту же папку.
marketplace.json Поля
Поля верхнего уровня
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
name | струна | Да | Название рынка кебаб-кейс. Максимум 64 персонажа. Точки также принимаются (например, acme.toolsдля подключаемых модулей агента 1.0 ). |
owner | объект | Да | |
{ name, email? } — информация о владельце маркетплейса. | |||
plugins | массив | Да | Список записей плагинов (см. таблицу ниже). |
metadata | объект | Нет | { description?, version?, pluginRoot? } |
Поля ввода плагинов (объекты внутри plugins массива)
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
name | струна | Да | Имя плагина для кебаб-кейса. Максимум 64 персонажа. Точки также принимаются для подключаемых модулей агента 1.0 . |
source | Строковый | объект | Да | Где получить плагин (относительный путь GitHub, , или URL). |
description | струна | Нет | Описание плагина. Максимум 1024 персонажа. |
version | струна | Нет | Версия плагина. |
author | объект | Нет | { name, email?, url? } |
homepage | струна | Нет | URL главной страницы плагина. |
repository | струна | Нет | URL репозитория исходного кода. |
license | струна | Нет | Идентификатор лицензии. |
keywords | строка[] | Нет | Ключевые слова поиска. |
category | струна | Нет | Категория плагинов. |
tags | строка[] | Нет | Дополнительные теги. |
commands | String | string[] | Нет | Пути к директориям команд. |
agents | String | string[] | Нет | Пути к каталогам агентов. |
skills | String | string[] | Нет | Пути к каталогам навыков. |
hooks | Строковый | объект | Нет | Путь к конфигурации перехватчиков или объекту встроенных перехватчиков. |
mcpServers | Строковый | объект | Нет | MCP-серверы активируются при установке плагина. Принимает встроенную карту сервера или путь к файлу конфигурации JSON. Используется, когда источник плагина не поставляет собственную конфигурацию MCP. |
lspServers | Строковый | объект | Нет | Путь к конфигурации LSP или встроенным определениям сервера. |
strict | булевый | Нет | Когда true (по умолчанию) плагины должны соответствовать полным правилам схемы и валидации. Когда falseиспользуется расслабленная валидация, что даёт больше гибкости — особенно для прямых установок или устаревших плагинов. |
Типы источников подключаемого модуля
source Поле в записи подключаемого GitHub модуля принимает относительную строку пути или объект, описывающий репозиторий или источник URL-адреса Git:
{
"source": {
"source": "github",
"repo": "owner/repo",
"ref": "v1.0.0",
"path": "plugins/my-plugin"
}
}
github
url Оба типа источников принимают необязательное sha поле для закрепления установок в точной фиксации в дополнение к (или вместоref) :
{
"source": {
"source": "github",
"repo": "owner/repo",
"sha": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
"path": "plugins/my-plugin"
}
}
sha должно быть полной 40-символьной фиксацией SHA. Закрепление к sha воспроизводимым установкам, которые являются иммунными для принудительной отправки или перемещения тегов или ветвей.
Расположения файлов
| Элемент | Путь |
|---|---|
| Установленные плагины | |
~/ (установлен через маркетплейс) и ~/ (установлен напрямую) | |
| Кэш маркетплейса | Каталог кэша платформы: ~/ (Linux), ~/ (macOS). Переобоймо с COPILOT_CACHE_помощью . |
| Манифест плагинов | Подключаемые модули агента (версии 1.0.0 или версии 1.1.0): plugin.json в корневом каталоге подключаемого модуля. Корневой манифест, предназначенный для подключаемых модулей агента, имеет приоритет над .plugin/ спецификацией §5.1. Устаревшие подключаемые модули: .plugin/, plugin.json, .github/или .claude-plugin/ (установлен в этом порядке). |
| Манифест рынка | |
marketplace.json, .plugin/, .github/, или .claude-plugin/ (отмечено в таком порядке) | |
| Агенты | Устаревшие подключаемые модули: agents/ (по умолчанию, переопределяется в манифесте). |
| Навыки | Подключаемые модули агента: skills/ (исправлено, корневая резервная версия отсутствует SKILL.md ). Устаревшие подключаемые модули: skills/ (по умолчанию, переопределяемые в манифесте), возвращаясь к корневому каталогу SKILL.md , если каталог не skills/ существует. |
| Конфигурация крючков | Устаревшие подключаемые модули: hooks.json или hooks/hooks.json. |
| Конфигурация MCP | Подключаемые модули агента: mcp.json. Устаревшие подключаемые модули: .mcp.json, .github/mcp.jsonили поле манифеста mcpServers . |
| Конфигурация LSP | Устаревшие подключаемые модули: lsp.json или .github/lsp.json. |
| Данные плагинов | Для подключаемых модулей агента 1.0 MCP-серверов ${PLUGIN_DATA} (также доступных как ${COPILOT_PLUGIN_ и ${CLAUDE_PLUGIN_) указывает на постоянный, записываемый каталог, уникальный для каждого установленного подключаемого модуля. Используйте это для специфических для плагинов данных во время выполнения вместо путей внутри каталога кэша установленных плагинов. |
Порядок загрузки и приоритет
Если вы устанавливаете несколько плагинов, возможно, что некоторые кастомные агенты, навыки, MCP-серверы или инструменты, предоставляемые через MCP-серверы, имеют дублирующиеся имена. В такой ситуации CLI определяет, какой компонент использовать, исходя из порядка приоритета.
-
Агенты и навыки используют приоритет «первый-найденный-выигрышный».
Если у вас есть кастомный агент или навык проектного уровня с тем же именем или идентификатором, что и в плагине, который вы устанавливаете, агент или навык в плагине молча игнорируются. Плагин не может отменять конфигурации на уровне проекта или личные настройки. Пользовательские агенты дедуплифицируются с помощью их идентификатора, который выводится из имени файла (например, если файл имеет имя
reviewer.agent.md, идентификатор агента —reviewer). Навыки дедуплифицируются по полю имени внутриSKILL.mdфайла. -
Серверы MCP используют приоритет последних побед.
Если вы установите плагин, который определяет MCP-сервер с тем же именем сервера, что и уже установленный вами MCP-сервер, определение плагина имеет приоритет. Вы можете использовать
--additional-mcp-configопцию командной строки, чтобы переопределить конфигурацию MCP-сервера с таким же названием, установленную через плагин. Если два или более подключаемых модулей объявляют сервер MCP с одинаковым именем, интерфейс командной строки использует версию из подключаемого модуля, загруженного последней, и отображает предупреждение об именовании каждого предыдущего подключаемого модуля, определяемого им. -
Встроенные инструменты и агенты всегда присутствуют и не могут быть переопределены пользовательскими компонентами.
Следующая схема иллюстрирует правила порядка загрузки и приоритета.
┌──────────────────────────────────────────────────────────────────┐
│ BUILT-IN - HARDCODED, ALWAYS PRESENT │
│ • tools: bash, view, apply_patch, glob, rg, task, ... │
│ • agents: explore, task, code-review, general-purpose, research │
└────────────────────────┬─────────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────────────┐
│ CUSTOM AGENTS - FIRST LOADED IS USED (dedup by ID) │
│ 1. ~/.copilot/agents/ (user, .github convention) │
│ 2. <project>/.github/agents/ (project) │
│ 3. <parents>/.github/agents/ (inherited, monorepo) │
│ 4. <project>/.claude/agents/ (project) │
│ 5. <parents>/.claude/agents/ (inherited, monorepo) │
│ 6. PLUGIN: agents/ dirs (plugin, by install order) │
│ 7. Remote org/enterprise agents (remote, via API) │
└──────────────────────┬──────────────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────────────┐
│ AGENT SKILLS - FIRST LOADED IS USED (dedup by name) │
│ 1. <project>/.github/skills/ (project) │
│ 2. <project>/.agents/skills/ (project) │
│ 3. <project>/.claude/skills/ (project) │
│ 4. <parents>/.github/skills/ etc. (inherited) │
│ 5. ~/.copilot/skills/ (personal-copilot) │
│ 6. ~/.agents/skills/ (personal-agents) │
│ 7. PLUGIN: skills/ dirs (plugin) │
│ 8. COPILOT_SKILLS_DIRS env + config (custom) │
│ --- then commands (.claude/commands/), skills override commands ---│
└──────────────────────┬──────────────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────────────┐
│ MCP SERVERS - LAST LOADED IS USED (dedup by server name) │
│ 1. ~/.copilot/mcp-config.json (lowest priority) │
│ 2. PLUGIN: MCP configs (plugins) │
│ 3. --additional-mcp-config flag (highest priority) │
└─────────────────────────────────────────────────────────────────────┘