Observação
Você pode encontrar ajuda para usar plug-ins entrando copilot plugin [SUBCOMMAND] --help no terminal.
Comandos da CLI
Você pode usar os seguintes comandos no terminal para gerenciar plug-ins para CLI do Copilot.
| Comando | DESCRIÇÃO |
|---|---|
copilot plugin install SPECIFICATION | Instale um plug-in. Consulte Especificação do plugin para install o comando abaixo. |
copilot plugin uninstall NAME | Remover um plug-in |
copilot plugin list | Listar plug-ins instalados |
copilot plugin update NAME | Atualizar um plug-in |
copilot plugin marketplace add SPECIFICATION | Registrar um marketplace |
copilot plugin marketplace list | Listar marketplaces registrados |
copilot plugin marketplace browse NAME | Navegue pelos plugins do marketplace |
copilot plugin marketplace remove NAME | Cancelar o registro de um marketplace |
Especificação do plug-in para install comando
| Formato | Example | DESCRIÇÃO |
|---|---|---|
| Marketplace | plugin@marketplace | Plug-in de um marketplace registrado |
| GitHub | OWNER/REPO | Raiz de um repositório GitHub |
| GitHub subdir | OWNER/REPO:PATH/TO/PLUGIN | Subdiretório em um repositório |
| Git URL | https://github.com/o/r.git | Qualquer URL do Git |
| Caminho local |
`./my-plugin` ou `/abs/path` | Diretório local |
plugin.json
Todos os plug-ins consistem em um diretório de plug-in contendo, no mínimo, um arquivo de manifesto chamado plugin.json localizado na raiz do diretório do plug-in. Confira Criando um plug-in para CLI do GitHub Copilot.
Campo obrigatório
| Campo | Tipo | DESCRIÇÃO |
|---|---|---|
name | cadeia | Nome do plugin Kebab-case (apenas letras, números e hífens). Máximo de 64 chars. |
Campos de metadados opcionais
| Campo | Tipo | DESCRIÇÃO |
|---|---|---|
description | cadeia | Breve descrição. Máximo de 1024 caracteres. |
version | cadeia | Versão semântica (por exemplo, 1.0.0). |
author | objeto |
`name` (obrigatório), `email` (opcional), `url` (opcional). |
| homepage | cadeia | URL da página inicial do plugin. |
| repository | cadeia | URL do repositório de origem. |
| license | cadeia | Identificador de licença (por exemplo, MIT). |
| keywords | cadeia de caracteres[] | Pesquisar palavras-chave. |
| category | cadeia | Categoria de plug-in. |
| tags | cadeia de caracteres[] | Etiquetas adicionais. |
Campos de caminho do componente
Elas indicam à CLI onde encontrar os componentes do seu plug-in. Todos são opcionais. A CLI usa convenções padrão se omitidas.
| Campo | Tipo | Padrão | DESCRIÇÃO |
|---|---|---|---|
agents | cadeia de caracteres | cadeia de caracteres[] | agents/ | Caminhos para diretórios de agente (.agent.md arquivos). |
skills | cadeia de caracteres | cadeia de caracteres[] | skills/ | Caminhos para diretórios de habilidades (SKILL.md arquivos). |
commands | cadeia de caracteres | cadeia de caracteres[] | — | Caminhos para diretórios de comando. |
hooks | objeto string | | — | Caminho para um arquivo de configuração de ganchos ou um objeto de ganchos embutido. |
mcpServers | objeto string | | — | Caminho para um arquivo de configuração MCP (por exemplo, .mcp.json) ou definições de servidor integradas. |
lspServers | objeto string | | — | Caminho para um arquivo de configuração LSP ou definições de servidor em linha. |
Arquivo de exemplo plugin.json
{
"name": "my-dev-tools",
"description": "React development utilities",
"version": "1.2.0",
"author": {
"name": "Jane Doe",
"email": "jane@example.com"
},
"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": "jane@example.com"
},
"license": "MIT",
"keywords": ["react", "frontend"],
"agents": "agents/",
"skills": ["skills/", "extra-skills/"],
"hooks": "hooks.json",
"mcpServers": ".mcp.json"
}
marketplace.json
Você pode criar um marketplace de plug-ins, que as pessoas podem usar para descobrir e instalar seus plug-ins, criando um marketplace.json arquivo e salvando-o no .github/plugin/ diretório do repositório. Você também pode armazenar o marketplace.json arquivo em seu sistema de arquivos local. Por exemplo, salvar o arquivo como /PATH/TO/my-marketplace/.github/plugin/marketplace.json permite adicioná-lo à CLI usando o seguinte comando:
copilot plugin marketplace add /PATH/TO/my-marketplace
Observação
CLI do Copilot também procura o arquivo marketplace.json no diretório .claude-plugin/.
Para saber mais, confira Criando um marketplace de plugins para CLI do GitHub Copilot.
Arquivo de exemplo marketplace.json
{
"name": "my-marketplace",
"owner": {
"name": "Your Organization",
"email": "plugins@example.com"
},
"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": "plugins@example.com"
},
"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"
}
]
}
Observação
O valor do source campo para cada plug-in é o caminho para o diretório do plug-in, em relação à raiz do repositório. Não é necessário usar ./ no início do caminho. Por exemplo, "./plugins/plugin-name" e "plugins/plugin-name" resolvem para o mesmo diretório.
Campos marketplace.json
Campos de nível superior
| Campo | Tipo | Obrigatório | DESCRIÇÃO |
|---|---|---|---|
name | cadeia | Yes | Nome do mercado de kebabs. Máximo de 64 chars. |
owner | objeto | Yes |
`{ name, email? }` — informações do proprietário do marketplace. |
| plugins | matriz | Yes | Lista de entradas de plug-in (consulte a tabela abaixo). |
| metadata | objeto | Não | { description?, version?, pluginRoot? } |
Campos de entrada de plug-in (objetos dentro da plugins matriz)
| Campo | Tipo | Obrigatório | DESCRIÇÃO |
|---|---|---|---|
name | cadeia | Yes | Nome do plugin Kebab-case. Máximo de 64 chars. |
source | objeto string | | Yes | Onde buscar o plug-in (caminho relativo, GitHub ou URL). |
description | cadeia | Não | Descrição do plug-in. Máximo de 1024 caracteres. |
version | cadeia | Não | Versão do plug-in. |
author | objeto | Não | { name, email?, url? } |
homepage | cadeia | Não | URL da página inicial do plugin. |
repository | cadeia | Não | URL do repositório de origem. |
license | cadeia | Não | Identificador de licença. |
keywords | cadeia de caracteres[] | Não | Pesquisar palavras-chave. |
category | cadeia | Não | Categoria de plug-in. |
tags | cadeia de caracteres[] | Não | Etiquetas adicionais. |
commands | cadeia de caracteres | cadeia de caracteres[] | Não | Caminhos para diretórios de comando. |
agents | cadeia de caracteres | cadeia de caracteres[] | Não | Caminhos para diretórios de agente. |
skills | cadeia de caracteres | cadeia de caracteres[] | Não | Caminhos para diretórios de habilidades. |
hooks | objeto string | | Não | Caminho para a configuração de hooks ou objeto de hooks inline. |
mcpServers | objeto string | | Não | Caminho para a configuração do MCP ou definições do servidor em linha. |
lspServers | objeto string | | Não | Caminho para a configuração do LSP ou definições do servidor em linha. |
strict | boolean | Não | Quando true (o padrão), os plug-ins devem estar em conformidade com o esquema completo e as regras de validação. Quando false a validação relaxada é usada, permite mais flexibilidade, especialmente para instalações diretas ou plugins legados. |
Locais de arquivos
| Item | Caminho |
|---|---|
| Plug-ins instalados |
`~/.copilot/installed-plugins/` e `~/.copilot/installed-plugins/_direct` |
| Cache do Marketplace | ~/.copilot/state/marketplace-cache/ |
| Manifesto do Plugin |
plugin.json, .github/plugin/plugin.json ou .claude-plugin/plugin.json |
| Manifesto do Marketplace |
.github/plugin/marketplace.json ou .claude-plugin/marketplace.json |
| Agents |
agents/ (padrão, substituível no manifesto) |
| Skills |
skills/ (padrão, substituível no manifesto) |
| Configuração de ganchos |
hooks.json ou hooks/hooks.json |
| Configuração do MCP |
.mcp.json ou .github/mcp.json |
| Configuração LSP |
lsp.json ou .github/lsp.json |
Ordem e precedência de carregamento
Se você instalar vários plug-ins, é possível que alguns agentes personalizados, habilidades, servidores MCP ou ferramentas fornecidas por meio de servidores MCP tenham nomes duplicados. Nessa situação, a CLI determina qual componente usar com base em uma ordem de precedência.
-
**Agentes e habilidades** use a precedência do primeiro encontrado.Se você tiver um agente personalizado no nível do projeto ou uma habilidade cujo nome ou ID sejam iguais a os de um plug-in que você instalar, o agente ou habilidade do plug-in será ignorado sem aviso. O plug-in não pode substituir configurações pessoais ou no nível do projeto. Os agentes personalizados são desduplicados usando seu ID, que é derivado de seu nome de arquivo (por exemplo, se o arquivo for nomeado
reviewer.agent.md, a ID do agente seráreviewer). As habilidades são desduplicadas pelo campo do nome dentro do arquivoSKILL.md. -
**Os servidores MCP** usam a precedência "último a vencer".Se você instalar um plug-in que define um servidor MCP com o mesmo nome de servidor que um servidor MCP já instalado, a definição do plug-in terá precedência. Você pode usar a opção
--additional-mcp-configde linha de comando para substituir uma configuração de servidor MCP com o mesmo nome, instalado usando um plug-in. -
**Ferramentas e agentes internos** estão sempre presentes e não podem ser substituídos por componentes definidos pelo usuário.
O diagrama a seguir ilustra as regras de ordem e precedência de carregamento.
┌─────────────────────────────────────────────────────────┐
│ 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) │
└─────────────────────────────────────────────────────────────────────┘