Примечание.
Помощь по использованию плагинов можно найти copilot plugin [SUBCOMMAND] --help в терминале.
Команды CLI
Вы можете использовать следующие команды в терминале для управления плагинами для Интерфейс командной строки Copilot.
| Command | Description |
|---|---|
copilot plugin install SPECIFICATION | Установите плагин. См. спецификацию плагина для install команды ниже. |
copilot plugin uninstall NAME | Удалить плагин |
copilot plugin list | Список установленных плагинов |
copilot plugin update NAME | Обновить плагин |
copilot plugin marketplace add SPECIFICATION | Зарегистрируйте маркетплейс |
copilot plugin marketplace list | Список зарегистрированных торговых площадок |
copilot plugin marketplace browse NAME | Просмотр плагинов маркетплейса |
copilot plugin marketplace remove NAME | Отменить регистрацию с маркетплейса |
Спецификация плагина для install команды
| Формат | Пример | Description |
|---|---|---|
| Маркетплейс | plugin@marketplace | Плагин с зарегистрированного маркетплейса |
| GitHub | OWNER/REPO | Корень репозитория GitHub |
| GitHub subdir | OWNER/REPO:PATH/TO/PLUGIN | Подкаталог в репозитории |
| Git URL | https://github.com/o/r.git | Любой URL в Git |
| Местный маршрут |
`./my-plugin` или `/abs/path` | Местный справочник |
plugin.json
Все плагины состоят из каталога плагинов, содержащая, как минимум, файл манифеста, plugin.json расположенный в корне папки плагинов. См . раздел AUTOTITLE.
Обязательное поле
| Поле | Тип | Description |
|---|---|---|
name | струна | Имя плагина для kebab-case (только буквы, цифры, дефисы). Максимум 64 персонажа. |
Опциональные поля метаданных
| Поле | Тип | Description |
|---|---|---|
description | струна | Краткое описание. Максимум 1024 персонажа. |
version | струна | Семантическая версия (например, 1.0.0). |
author | объект |
`name` (обязательно), `email` (по желанию), `url` (по необходимости). |
| homepage | струна | URL главной страницы плагина. |
| repository | струна | URL репозитория исходного кода. |
| license | струна | Идентификатор лицензии (например, MIT). |
| keywords | строка[] | Ключевые слова поиска. |
| category | струна | Категория плагинов. |
| tags | строка[] | Дополнительные теги. |
Поля пути компонентов
Они указывают CLI, где найти компоненты плагина. Все они необязательны. CLI использует стандартные конвенции, если они опущены.
| Поле | Тип | По умолчанию | Description |
|---|---|---|---|
agents | String | string[] | agents/ | Пути к директориям агентов (.agent.md файлы). |
skills | String | string[] | skills/ | Пути к каталогам навыков (SKILL.md файлам). |
commands | String | string[] | — | Пути к директориям команд. |
hooks | Строковый | объект | — | Путь к конфигурационному файлу hooks или объекту inline hooks. |
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"
}
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 также ищет 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` Поля
Поля верхнего уровня
| Поле | Тип | Обязательно | Description |
|---|---|---|---|
name | струна | Да | Название рынка кебаб-кейс. Максимум 64 персонажа. |
owner | объект | Да |
`{ name, email? }` — информация о владельце маркетплейса. |
| plugins | массив | Да | Список записей плагинов (см. таблицу ниже). |
| metadata | объект | нет | { description?, version?, pluginRoot? } |
Поля ввода плагинов (объекты внутри plugins массива)
| Поле | Тип | Обязательно | Description |
|---|---|---|---|
name | струна | Да | Имя плагина для кебаб-кейса. Максимум 64 персонажа. |
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 или встроенным определениям сервера. |
lspServers | Строковый | объект | нет | Путь к конфигурациям LSP или встроенным определениям сервера. |
strict | булевый | нет | Если это ошибка, плагин не нуждается в своём plugin.jsonсобственном . Значение по умолчанию: true. |
Расположения файлов
| Item | Путь |
|---|---|
| Установленные плагины |
`~/.copilot/installed-plugins/` и `~/.copilot/installed-plugins/_direct`. |
| Кэш маркетплейса | ~/.copilot/state/marketplace-cache/ |
| Манифест плагинов |
plugin.json, .github/plugin/plugin.json или .claude-plugin/plugin.json |
| Манифест рынка |
.github/plugin/marketplace.json или .claude-plugin/marketplace.json |
| Агенты |
agents/ (по умолчанию, можно отменить в манифесте) |
| Skills |
skills/ (по умолчанию, можно отменить в манифесте) |
| Конфигурация крючков |
hooks.json или hooks/hooks.json |
| Конфигурация MCP |
.mcp.json или .github/mcp.json |
| Конфигурация LSP |
lsp.json или .github/lsp.json |
Порядок загрузки и приоритет
Если вы устанавливаете несколько плагинов, возможно, что некоторые кастомные агенты, навыки, MCP-серверы или инструменты, предоставляемые через MCP-серверы, имеют дублирующиеся имена. В такой ситуации CLI определяет, какой компонент использовать, исходя из порядка приоритета.
-
**Агенты и навыки** используют приоритет «первый-найденный-выигрышный».Если у вас есть кастомный агент или навык проектного уровня с тем же именем или идентификатором, что и в плагине, который вы устанавливаете, агент или навык в плагине молча игнорируются. Плагин не может отменять конфигурации на уровне проекта или личные настройки. Пользовательские агенты дедуплифицируются с помощью их идентификатора, который выводится из имени файла (например, если файл имеет имя
reviewer.agent.md, идентификатор агента —reviewer). Навыки дедуплифицируются по полю имени внутриSKILL.mdфайла. -
**Серверы MCP** используют приоритет последних побед.Если вы установите плагин, который определяет MCP-сервер с тем же именем сервера, что и уже установленный вами MCP-сервер, определение плагина имеет приоритет. Вы можете использовать
--additional-mcp-configопцию командной строки, чтобы переопределить конфигурацию MCP-сервера с таким же названием, установленную через плагин. -
**Встроенные инструменты и агенты** всегда присутствуют и не могут быть переопределены пользовательскими компонентами.
Следующая схема иллюстрирует правила порядка загрузки и приоритета.
┌─────────────────────────────────────────────────────────┐
│ BUILT-IN - HARDCODED, ALWAYS PRESENT │
│ • tools: bash, view, apply_patch, glob, rg, task, ... │
│ • agents: explore, task, code-review, general-purpose │
└────────────────────────┬────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────────────┐
│ 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. ~/.claude/agents/ (user, .claude convention) │
│ 5. <project>/.claude/agents/ (project) │
│ 6. <parents>/.claude/agents/ (inherited, monorepo) │
│ 7. PLUGIN: agents/ dirs (plugin, by install order) │
│ 8. 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. ~/.claude/skills/ (personal-claude) │
│ 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. .vscode/mcp.json (workspace) │
│ 3. PLUGIN: MCP configs (plugins) │
│ 4. --additional-mcp-config flag (highest priority) │
└─────────────────────────────────────────────────────────────────────┘