Nota:
Puede encontrar ayuda sobre el uso de complementos escribiendo copilot plugin [SUBCOMMAND] --help en el terminal.
Para obtener información general sobre qué son los complementos y cómo funcionan en los Copilot clientes, consulte Información sobre GitHub Copilot complementos.
Comandos de la CLI
Puede usar los siguientes comandos en el terminal para administrar complementos para CLI de Copilot.
copilot plugin y copilot plugins son intercambiables; usa el que mejor encaje en el subcomando.
| 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 | Actualice un complemento con nombre. Use --all para actualizar todos los complementos instalados a la vez. |
copilot plugin enable NAME | Habilitación de un complemento deshabilitado anteriormente |
copilot plugin disable NAME | Deshabilitar un complemento sin desinstalarlo |
copilot plugin marketplace add SPECIFICATION | Registrar un marketplace. El propio nombre del mercado, tomado de su marketplace.json manifiesto, se convierte en su clave de registro; no hay ninguna opción para definir un nombre local personalizado. |
copilot plugin marketplace list | Enumeración de marketplaces registrados |
copilot plugin marketplace browse NAME | Análisis de complementos de Marketplace |
copilot plugin marketplace update [NAME] (alias refresh) | Vuelva a obtener el catálogo de complementos del marketplace. Omita NAME para actualizar los catálogos de todos los mercados registrados. |
copilot plugin marketplace remove NAME | Anule el registro de un marketplace. Se rechaza si los complementos del marketplace todavía están instalados; pase también --force para desinstalar esos complementos. |
De forma no interactiva, copilot plugins enable NAME --plugin, copilot plugins disable NAME --pluginy copilot plugins remove NAME --plugin proporcionan las mismas operaciones de habilitación, deshabilitación y desinstalación.
--plugin es el tipo predeterminado y se puede omitir para estos tres comandos. Consulte Referencia de comandos de la CLI de GitHub Copilot para ver los tipos no interactivos --mcp y --skill, que amplían estos comandos a los servidores MCP y las habilidades.
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/ | Subdirectorio en un repositorio |
| Git URL | https:/ | Cualquier dirección URL de Git |
| Ruta de acceso local | ||
./my-plugin o /abs/path | Directorio local |
copilot plugins install Opciones
Además de instalar un complemento desde una especificación, copilot plugins install puede instalar una aptitud individual desde un archivo, una dirección URL o un directorio con --skill. La instalación de una skill no es lo mismo que la instalación de un complemento y no se realiza a través de ningún marketplace; consulta Referencia de comandos de la CLI de GitHub Copilot para obtener más información sobre las propias skills.
| Option | Descripción |
|---|---|
--plugin | Instale un complemento (valor predeterminado). |
--skill | Instale una aptitud desde una ruta de acceso local o una dirección URL. |
--scope SCOPE | Para un archivo o URL --skill instale: user (valor predeterminado) o project. |
project restringe la instalación al directorio .github/skills del repositorio actual en lugar de a tu cuenta de usuario, y solo se aplica a las instalaciones de skills desde archivos o URL. | |
--config-dir=DIRECTORY | Ruta de acceso al directorio de configuración. Esta opción está en desuso. Utilice COPILOT_HOME en su lugar. |
La instalación de un directorio lo registra como un origen de aptitudes personalizado en lugar de copiarlo; al instalar un archivo o una dirección URL se copia el contenido de la aptitud en el directorio de aptitudes personales o de proyecto.
Los servidores MCP se instalan desde un registro configurado por directivas, lo que requiere autenticación e entrada secreta interactiva. Usa el /plugins panel de control (modo en línea) o el /mcp comando con barra para añadir servidores MCP en lugar de copilot plugins install.
copilot plugins update Opciones
| Option | Descripción |
|---|---|
--all | Actualizar todos los complementos instalados |
copilot plugins marketplace subcomandos
Los marketplaces predeterminados integrados se incluyen con el entorno de ejecución y no se pueden quitar.
| Subcommand | Descripción |
|---|---|
list [--json] | Enumeración de todos los marketplaces registrados, incluidos los valores predeterminados integrados |
add SOURCE | Agregar un marketplace (owner/repo, , owner/repo#refuna dirección URL o una ruta de acceso local) |
remove NAME [--force] | Quitar un marketplace; --force también desinstala los complementos procedentes de él. |
browse NAME [--json] | Enumeración de los complementos ofrecidos por el catálogo de Marketplace |
update [NAME] (alias refresh) | Actualizar el catálogo de plugins de un marketplace o el de todos si se omite NAME |
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 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 de acceso a un archivo de configuración de enlaces o un objeto de enlaces insertados. |
extensions | string | string[] (objeto) | | — | Rutas de acceso a directorios de extensión. Use { paths: [...], exclusive: true } para suprimir las extensiones integradas. |
mcpServers | string | objeto | — | Ruta de acceso a un archivo de configuración MCP (por ejemplo, .mcp.json) o definiciones de servidor insertadas. |
lspServers | string | objeto | — | Ruta de acceso a un archivo de configuración de LSP, o definiciones de servidor integradas. |
Archivo plugin.json de ejemplo
{
"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"
}
Configuración del servidor LSP
Para incluir servidores LSP (protocolo de servidor de idiomas) en un complemento, cree un archivo lsp-config/servers.json en el directorio del complemento, o especifique una ruta de acceso o un objeto en línea mediante el campo lspServers de plugin.json.
Ejemplo lsp-config/servers.json (o en línea mediante lspServers en plugin.json):
{
"lspServers": {
"my-lsp": {
"command": "my-language-server",
"fileExtensions": { ".myext": "mylang" }
}
}
}
Para la compatibilidad multiplataforma, use bash y powershell en lugar de command:
{
"lspServers": {
"my-lsp": {
"bash": "${PLUGIN_ROOT}/scripts/start-lsp.sh",
"powershell": "${PLUGIN_ROOT}/scripts/start-lsp.ps1",
"fileExtensions": { ".myext": "mylang" }
}
}
}
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
command | cuerda / cadena | * | Ejecutable para iniciar el servidor de lenguaje. |
bash | cuerda / cadena | * | Script de Bash para iniciar el servidor (Linux/macOS); ejecutado a través de bash -c SCRIPT. |
powershell | cuerda / cadena | * | Script de PowerShell para iniciar el servidor (Windows); se ejecuta a través de pwsh -c SCRIPT. |
cwd | cuerda / cadena | No | Directorio de trabajo. Absoluto o relativo al archivo de configuración. Admite ${PLUGIN_ROOT}. |
args | string[] | No | Argumentos para pasar a command (se ignora para bash y powershell). |
env | objeto | No | Variables de entorno que se establecerán al generar el servidor. |
fileExtensions | objeto | Sí | Mapa de extensiones de archivo a identificadores de idioma (por ejemplo, { ".ts": "typescript" }). |
rootUri | cuerda / cadena | No | Raíz del proyecto relativa a la raíz de Git (valor predeterminado: .). |
initialization | cualquiera | No | Opciones enviadas al servidor en la solicitud LSP initialize . |
(*) Se requiere al menos uno de command, basho powershell . Cuando se especifican bash y powershell, se selecciona automáticamente la adecuada para la plataforma (PowerShell en Windows, Bash en otro lugar).
Use ${PLUGIN_ROOT} para hacer referencia a rutas de acceso dentro del directorio del complemento.
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": "[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"
}
]
}
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 de acceso a la configuración de enlaces o al objeto de enlaces insertados. |
mcpServers | string | objeto | No | Servidores MCP que se activarán cuando se instale el complemento. Acepta un mapa de servidores en línea o una ruta a un archivo de configuración JSON. Se usa cuando el origen del complemento no envía su propia configuración de MCP. |
lspServers | string | objeto | No | Ruta a la configuración de LSP o definiciones de servidor integradas. |
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. |
Tipos de origen del complemento
El campo source de una entrada de un complemento acepta una cadena con una ruta relativa o un objeto que describe un repositorio GitHub o un origen con una URL de Git:
{
"source": {
"source": "github",
"repo": "owner/repo",
"ref": "v1.0.0",
"path": "plugins/my-plugin"
}
}
Los tipos de origen github y url admiten un campo opcional sha para fijar las instalaciones a un commit exacto, además de (o en lugar de) ref:
{
"source": {
"source": "github",
"repo": "owner/repo",
"sha": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
"path": "plugins/my-plugin"
}
}
sha debe ser una confirmación completa de 40 caracteres SHA. Fijar a sha para realizar instalaciones reproducibles inmunes a los envíos forzados o a los cambios de etiqueta o rama.
Ubicaciones de archivos
| Elemento | Camino |
|---|---|
| Complementos instalados | |
~/ (instalado a través de marketplace) y ~/ (instalado directamente) | |
| Caché de Marketplace | Directorio de caché de plataforma: ~/ (Linux), ~/ (macOS). Se puede reemplazar con COPILOT_CACHE_. |
| Manifiesto del complemento | |
.plugin/, plugin.json, .github/ o .claude-plugin/ (comprobado en este orden) | |
| Manifiesto de Marketplace | |
marketplace.json, .plugin/, .github/ o .claude-plugin/ (comprobado en este orden) | |
| Agentes | |
agents/ (valor predeterminado, reemplazable en el manifiesto) | |
| Habilidades | |
skills/ (valor predeterminado, reemplazable en el manifiesto) | |
| Configuración de hooks | |
hooks.json o hooks/hooks.json | |
| Configuración de MCP | |
.mcp.json, .github/mcp.json | |
| Configuración de LSP | |
lsp.json o .github/lsp.json | |
| Datos del complemento | |
${COPILOT_PLUGIN_ (también disponible como ${CLAUDE_PLUGIN_). Apunta a un directorio persistente y grabable único para cada complemento instalado. Use esto para los datos de tiempo de ejecución específicos del complemento en lugar de las rutas dentro del directorio de caché installed-plugins. |
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. Si dos o más complementos declaran un servidor MCP con el mismo nombre, la CLI usa la versión del complemento que cargó por última vez y muestra una advertencia que asigna un nombre a cada complemento anterior que lo definió. -
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. <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) │
└─────────────────────────────────────────────────────────────────────┘