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 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 update --all | Atualizar todos os plug-ins instalados |
copilot plugin disable NAME | Desabilitar temporariamente um plug-in sem desinstalá-lo |
copilot plugin enable NAME | Habilitar novamente um plug-in desabilitado |
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 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 | ou | 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 localizado na raiz do diretório do plug-in. Confira AUTOTITLE.
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, ). |
author | objeto | (obrigatório), (opcional), (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, ). |
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 ( arquivos). |
skills | cadeia de caracteres cadeia de caracteres[] | skills/ | Caminhos para diretórios de habilidades ( 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, ) 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
{
"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 arquivo e salvando-o no diretório do repositório. Você também pode armazenar o arquivo em seu sistema de arquivos local. Por exemplo, salvar o arquivo como 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 AUTOTITLE.
Arquivo de exemplo
{
"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
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 | — 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 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 (o padrão), os plug-ins devem estar em conformidade com o esquema completo e as regras de validação. Quando a validação relaxada é usada, permite mais flexibilidade, especialmente para instalações diretas ou plugins legados. |
Locais de arquivos
| Item | Caminho |
|---|---|
| Plug-ins instalados | (instalado por meio de um marketplace) e (instalado diretamente) |
| Cache do Marketplace | ~/.copilot/state/marketplace-cache/ |
| Manifesto do Plugin | , ou |
| Manifesto do Marketplace | ou |
| Agents | (padrão, substituível no manifesto) |
| Skills | (padrão, substituível no manifesto) |
| Configuração de ganchos | ou |
| Configuração do MCP | ou |
| Configuração LSP | ou |
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 , a ID do agente será ). As habilidades são desduplicadas pelo campo do nome dentro do arquivo .
-
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 de 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, 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. ~/.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) │
└─────────────────────────────────────────────────────────────────────┘