Nota:
Puede encontrar ayuda sobre el uso de complementos escribiendo copilot plugin [SUBCOMMAND] --help en el terminal.
Comandos de la CLI
Puede usar los siguientes comandos en el terminal para administrar complementos para CLI de Copilot.
| Comando | Descripción |
|---|---|
copilot plugin install SPECIFICATION | Instale un complemento. Consulte la especificación del complemento para el comando install que se encuentra a continuación. |
copilot plugin uninstall NAME | Quitar un complemento |
copilot plugin list | Enumerar complementos instalados |
copilot plugin update NAME | Actualización de un complemento |
copilot plugin marketplace add SPECIFICATION | Registro de un marketplace |
copilot plugin marketplace list | Enumeración de marketplaces registrados |
copilot plugin marketplace browse NAME | Análisis de complementos de Marketplace |
copilot plugin marketplace remove NAME | Anulación del registro de un marketplace |
Especificación para el comando del complemento install
| Formato | Ejemplo | Descripción |
|---|---|---|
| Marketplace | plugin@marketplace | Plugin de un marketplace registrado |
| GitHub | OWNER/REPO | Raíz de un GitHub repositorio |
GitHub subdirectorio | `OWNER/REPO:PATH/TO/PLUGIN` | Subdirectorio en un repositorio |
| Git URL | https://github.com/o/r.git | Cualquier dirección URL de Git |
| Ruta de acceso local |
./my-plugin o /abs/path | Directorio local |
plugin.json
Todos los complementos constan de un directorio de complementos que contiene, como mínimo, un archivo de manifiesto denominado plugin.json ubicado en la raíz del directorio del complemento. Consulte Creación de un complemento para la CLI de GitHub Copilot.
Campo obligatorio
| Campo | Tipo | Descripción |
|---|---|---|
name | cuerda / cadena | Nombre del complemento en formato kebab-case (letras, números, guiones solo). Máximo de 64 caracteres. |
Campos de metadatos opcionales
| Campo | Tipo | Descripción |
|---|---|---|
description | cuerda / cadena | Breve descripción. Máximo de 1024 caracteres. |
version | cuerda / cadena | Versión semántica (por ejemplo, 1.0.0). |
author | objeto |
`name` (obligatorio), `email` (opcional), `url` (opcional). |
| homepage | cuerda / cadena | Url de la página principal del complemento. |
| repository | cuerda / cadena | Dirección URL del repositorio de origen. |
| license | cuerda / cadena | Identificador de licencia (por ejemplo, MIT). |
| keywords | string[] | Buscar palabras clave. |
| category | cuerda / cadena | Categoría del complemento. |
| tags | string[] | Etiquetas adicionales. |
Campos de ruta de acceso de componente
Estos indican a la CLI dónde encontrar los componentes del complemento. Todos son opcionales. La CLI utiliza convenciones predeterminadas si se omiten ciertos parámetros.
| Campo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
agents | cadena | cadena[] | agents/ | Rutas hacia directorios de agentes (archivos .agent.md). |
skills | cadena | cadena[] | skills/ | Rutas de acceso a los directorios de habilidades (SKILL.md archivos). |
commands | cadena | cadena[] | — | Rutas de acceso a directorios de comandos. |
hooks | string | objeto | — | Ruta a un archivo de configuración de enlaces o un objeto de enlaces insertados. |
mcpServers | string | objeto | — | Ruta de acceso a un archivo de configuración de MCP (por ejemplo, .mcp.json) o definiciones de servidor insertadas. |
lspServers | string | objeto | — | Ruta de acceso a un archivo de configuración LSP o definiciones de servidor en línea. |
Archivo plugin.json de ejemplo
{
"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
Puede crear un marketplace de complementos ,que los usuarios pueden usar para detectar e instalar los complementos, creando un marketplace.json archivo y guardándolo en el .github/plugin/ directorio del repositorio. También puede almacenar el marketplace.json archivo en el sistema de archivos local. Por ejemplo, guardar el archivo como /PATH/TO/my-marketplace/.github/plugin/marketplace.json le permite agregarlo a la CLI mediante el siguiente comando:
copilot plugin marketplace add /PATH/TO/my-marketplace
Nota:
CLI de Copilot también busca el archivo marketplace.json en el directorio .claude-plugin/.
Para obtener más información, vea Creación de un marketplace de complementos para CLI de GitHub Copilot.
Archivo marketplace.json de ejemplo
{
"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"
}
]
}
Nota:
El valor del source campo para cada complemento es la ruta de acceso al directorio del complemento, en relación con la raíz del repositorio. No es necesario usar ./ al principio de la ruta de acceso. Por ejemplo, "./plugins/plugin-name" y "plugins/plugin-name" se resuelven en el mismo directorio.
Campos marketplace.json
Campos de nivel superior
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | cuerda / cadena | Sí | Nombre de Marketplace en formato kebab-case. Máximo de 64 caracteres. |
owner | objeto | Sí |
`{ name, email? }` : información del propietario de Marketplace. |
| plugins | array | Sí | Lista de entradas del complemento (consulte la tabla siguiente). |
| metadata | objeto | No | { description?, version?, pluginRoot? } |
Campos de entrada del complemento (objetos dentro de la plugins matriz)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | cuerda / cadena | Sí | Nombre del complemento kebab-case. Máximo de 64 caracteres. |
source | string | objeto | Sí | Dónde capturar el complemento (ruta de acceso relativa, GitHubo dirección URL). |
description | cuerda / cadena | No | Descripción del complemento. Máximo de 1024 caracteres. |
version | cuerda / cadena | No | Versión del complemento. |
author | objeto | No | { name, email?, url? } |
homepage | cuerda / cadena | No | Url de la página principal del complemento. |
repository | cuerda / cadena | No | Dirección URL del repositorio de origen. |
license | cuerda / cadena | No | Identificador de licencia. |
keywords | string[] | No | Buscar palabras clave. |
category | cuerda / cadena | No | Categoría del complemento. |
tags | string[] | No | Etiquetas adicionales. |
commands | cadena | cadena[] | No | Rutas de acceso a directorios de comandos. |
agents | cadena | cadena[] | No | Rutas de acceso a directorios de agentes. |
skills | cadena | cadena[] | No | Rutas de acceso a directorios de aptitudes. |
hooks | string | objeto | No | Ruta a la configuración de enlaces o un objeto de enlaces insertados. |
mcpServers | string | objeto | No | Ruta a la configuración de MCP o definiciones de servidor insertadas. |
lspServers | string | objeto | No | Ruta de acceso a la configuración de LSP o definiciones de servidor en línea. |
strict | boolean | No | Cuando true (el valor predeterminado), los complementos deben ajustarse al esquema completo y a las reglas de validación. Cuando es false, se utiliza una validación relajada, se permite más flexibilidad, especialmente para instalaciones directas o complementos heredados. |
Ubicaciones de archivos
| Elemento | Camino |
|---|---|
| Complementos instalados |
`~/.copilot/installed-plugins/MARKETPLACE/PLUGIN-NAME` (instalado a través de marketplace) y `~/.copilot/installed-plugins/_direct/SOURCE-ID/` (instalado directamente) |
| Caché de Marketplace | Directorio de caché de plataforma: ~/.cache/copilot/marketplaces/ (Linux), ~/Library/Caches/copilot/marketplaces/ (macOS). Reemplazable con COPILOT_CACHE_HOME. |
| Manifiesto del complemento |
.plugin/plugin.json, plugin.json, .github/plugin/plugin.json o .claude-plugin/plugin.json (comprobado en este orden) |
| Manifiesto de Marketplace |
marketplace.json, .plugin/marketplace.json, .github/plugin/marketplace.json o .claude-plugin/marketplace.json (comprobado en este orden) |
| Agentes |
agents/ (valor predeterminado, reemplazable en el manifiesto) |
| Habilidades |
skills/ (valor predeterminado, reemplazable en el manifiesto) |
| Configuración de ganchos |
hooks.json o hooks/hooks.json |
| Configuración de MCP |
.mcp.json, .vscode/mcp.json, , .devcontainer/devcontainer.json, .github/mcp.json |
| Configuración de LSP |
lsp.json o .github/lsp.json |
Orden de carga y prioridad
Si instala varios complementos, es posible que algunos agentes personalizados, aptitudes, servidores MCP o herramientas proporcionados a través de servidores MCP tengan nombres duplicados. En esta situación, la CLI determina qué componente usar en función de un orden de precedencia.
-
**Los agentes y las aptitudes** utilizan la prioridad de "primero en encontrar, primero en ganar."Si tiene un agente personalizado de nivel de proyecto o una aptitud con el mismo nombre o identificador que uno en un complemento que instale, el agente o la aptitud del complemento se omiten silenciosamente. El complemento no puede invalidar configuraciones personales o de nivel de proyecto. Los agentes personalizados se desduplican mediante su identificador, que se deriva de su nombre de archivo (por ejemplo, si el archivo se denomina
reviewer.agent.md, el identificador del agente esreviewer). Las aptitudes se desduplican por su campo de nombre dentro del archivoSKILL.md. -
**Los servidores MCP** usan precedencia de última instancia.Si instala un complemento que define un servidor MCP con el mismo nombre de servidor que un servidor MCP que ya ha instalado, la definición del complemento tiene prioridad. Puede usar la
--additional-mcp-configopción de línea de comandos para invalidar una configuración del servidor MCP con el mismo nombre, instalada mediante un complemento. -
**Las herramientas y agentes integrados** siempre están presentes y no se pueden invalidar mediante componentes definidos por el usuario.
En el diagrama siguiente se muestran las reglas de orden de carga y precedencia.
┌──────────────────────────────────────────────────────────────────┐
│ 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. ~/.agents/skills/ (personal-agents) │
│ 7. ~/.claude/skills/ (personal-claude) │
│ 8. PLUGIN: skills/ dirs (plugin) │
│ 9. 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) │
└─────────────────────────────────────────────────────────────────────┘
Lectura adicional
-
[AUTOTITLE](/copilot/how-tos/copilot-cli) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-programmatic-reference)