Примечание.
Помощь по использованию плагинов можно найти copilot plugin [SUBCOMMAND] --help в терминале.
Для обзора того, что такое плагины и как они работают между Copilot клиентами, см. О GitHub Copilot плагинах.
Команды CLI
Вы можете использовать следующие команды в терминале для управления плагинами для Второй пилот CLI.
copilot plugin и copilot plugins являются взаимозаменяемыми — используйте все, что лучше считывается для подкоманда.
| Command | Описание |
|---|---|
copilot plugin install SPECIFICATION | Установите плагин. См. спецификацию плагина для install команды ниже. |
copilot plugin uninstall NAME | Удалить плагин |
copilot plugin list | Список установленных плагинов |
copilot plugin update NAME | Обновите именованный плагин. Используйте --all обновление всех установленных плагинов сразу. |
copilot plugin enable NAME | Включите ранее отключённый плагин |
copilot plugin disable NAME | Отключите плагин, не удаляя его |
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 plugins enable NAME --plugin``copilot plugins disable NAME --pluginи copilot plugins remove NAME --plugin предоставляют те же операции включения, отключения и удаления.
--plugin является типом по умолчанию и может быть опущен для этих трех команд. См. раздел AUTOTITLE для неинтерактивных --mcp и --skill типов, которые расширяют эти команды до серверов и навыков MCP.
Спецификация плагина для install команды
| Формат | Пример | Описание |
|---|---|---|
| Маркетплейс | plugin@marketplace | Плагин с зарегистрированного маркетплейса |
| GitHub | OWNER/REPO | Корень GitHub репозитория |
| GitHub вложенный каталог | OWNER/ | Подкаталог в репозитории |
| URL-адрес Git | https:/ | Любой URL в Git |
| Местный маршрут | ||
./my-plugin или /abs/path | Местный справочник |
copilot plugins install варианты
Помимо установки подключаемого модуля из спецификации, copilot plugins install можно установить отдельный навык из файла, URL-адреса или каталога --skill. Установка навыка не является установкой подключаемого модуля и не проходит через Marketplace— дополнительные сведения о навыках см. в статье Справочник команды GitHub Copilot CLI .
| Опция | Описание |
|---|---|
--plugin | Установите подключаемый модуль (по умолчанию). |
--skill | Установите навык из локального пути или URL-адреса. |
--scope SCOPE | Для установки файла или URL-адреса --skill : user (по умолчанию) или project. |
project область установки в каталог текущего репозитория .github/skills вместо учетной записи пользователя и применяется только к установке навыков файлов или URL-адресов. | |
--config-dir=DIRECTORY | Путь к каталогу конфигурации. Этот параметр является устаревшим. Вместо этого используйте COPILOT_HOME. |
Установка каталога регистрирует его как пользовательский источник навыка, а не копирует его; Установка файла или URL-адреса копирует содержимое навыка в личный или проектный каталог навыков.
Серверы MCP устанавливаются из настроенного политикой реестра, для которого требуется проверка подлинности и интерактивная запись секрета. Используйте панель мониторинга (режим онлайн) или /plugins команду косой /mcp черты, чтобы добавить серверы MCP вместо copilot plugins install.
copilot plugins update варианты
| Опция | Описание |
|---|---|
--all | Обновление каждого установленного подключаемого модуля |
Сторонние подключаемые модули , установленные из встроенных copilot-plugins и awesome-copilot marketplace, автоматически обновляются в начале каждого сеанса в доверенном рабочем каталоге. Отключите это поведение с параметром autoUpdate (задано falseзначением) или переменной COPILOT_AUTO_UPDATE=false среды. Автоматическое обновление также пропускается по умолчанию в CI. См . раздел AUTOTITLE.
Вы добавили marketplace самостоятельно, чтобы выбрать одно и то же автоматическое обновление сеанса, задав autoUpdate: true запись в параметрах extraKnownMarketplaces пользователя. Это согласие учитывается только из собственных параметров пользователя— параметр репозитория или управляемого (MDM) не может включить или перенаправить автоматическое обновление для Marketplace. См. параметры репозитория.
copilot plugins marketplace вложенные комманды
Встроенные 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.json
Все плагины состоят из каталога плагинов, содержащая, как минимум, файл манифеста, plugin.json расположенный в корне папки плагинов. См . раздел AUTOTITLE.
Обязательное поле
| Поле | Тип | Описание |
|---|---|---|
name | струна | Имя плагина для kebab-case (только буквы, цифры, дефисы). Максимум 64 персонажа. Подключаемые модули, которые выбирают поддержку open Plugin Spec , также могут использовать точки (например, acme.tools). |
Опциональные поля метаданных
| Поле | Тип | Описание |
|---|---|---|
$schema | струна | Задайте для канонических подключаемых модулей агента (Open Plugin Spec) версии 1.0.0.0 URL-адрес схемы, чтобы выбрать семантику спецификации. См. раздел "Поддержка открытых подключаемых модулей". |
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 } для подавления встроенных расширений. В режиме open Plugin Spec это поле имеет другое значение. | |
mcpServers | Строковый | объект | — | Путь к файлу конфигурации MCP (например, .mcp.jsonили встроенным определениям сервера). |
lspServers | Строковый | объект | — | Путь к файлу конфигурации LSP или встроенным определениям сервера. |
Пример файла plugin.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"],
"agents": "agents/",
"skills": ["skills/", "extra-skills/"],
"hooks": "hooks.json",
"mcpServers": ".mcp.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"],
"agents": "agents/",
"skills": ["skills/", "extra-skills/"],
"hooks": "hooks.json",
"mcpServers": ".mcp.json"
}
Поддержка спецификации подключаемого модуля
Объявление канонического $schema варианта при выборе подключаемого модуля в формате plugin.json версии 1.0.0, а также при загрузке стандартного подключаемого модуля:
Конфигурация сервера 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
Примечание.
Второй пилот CLI также ищет marketplace.json файл в .claude-plugin/ каталоге.
Дополнительные сведения см. в разделе Создание маркетплейса плагинов для интерфейс командной строки GitHub Copilot.
Пример файла 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для подключаемых модулей Open Plugin Spec ). |
owner | объект | Да | |
{ name, email? } — информация о владельце маркетплейса. | |||
plugins | массив | Да | Список записей плагинов (см. таблицу ниже). |
metadata | объект | Нет | { description?, version?, pluginRoot? } |
Поля ввода плагинов (объекты внутри plugins массива)
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
name | струна | Да | Имя плагина для кебаб-кейса. Максимум 64 персонажа. Точки также принимаются для подключаемых модулей Open Plugin Spec . |
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_помощью . |
| Манифест плагинов | |
.plugin/, plugin.json, .github/, или .claude-plugin/ (отмечено в таком порядке) | |
| Манифест рынка | |
marketplace.json, .plugin/, .github/, или .claude-plugin/ (отмечено в таком порядке) | |
| Агенты | |
agents/ (по умолчанию, можно отменить в манифесте) | |
| Навыки | |
skills/ (по умолчанию, можно отменить в манифесте) | |
| Конфигурация крючков | |
hooks.json или hooks/hooks.json | |
| Конфигурация MCP | |
.mcp.json, .github/mcp.json | |
| Конфигурация LSP | |
lsp.json или .github/lsp.json | |
| Данные плагинов | |
${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) │
└─────────────────────────────────────────────────────────────────────┘