Remarque
Vous trouverez de l’aide sur l’utilisation de plug-ins en entrant copilot plugin [SUBCOMMAND] --help dans le terminal.
Commandes CLI
Vous pouvez utiliser les commandes suivantes dans le terminal pour gérer les plug-ins pour Copilot CLI.
| Command | Descriptif |
|---|---|
copilot plugin install SPECIFICATION | Installez un plug-in. Consultez la spécification du plug-in pour la commande install ci-dessous. |
copilot plugin uninstall NAME | Supprimer un plug-in |
copilot plugin list | Répertorier les plug-ins installés |
copilot plugin update NAME | Mettre à jour un plug-in |
copilot plugin marketplace add SPECIFICATION | Inscrire une place de marché |
copilot plugin marketplace list | Répertorier les places de marché inscrites |
copilot plugin marketplace browse NAME | Parcourir les plug-ins de la Place de marché |
copilot plugin marketplace remove NAME | Annuler l’inscription d’une place de marché |
Spécification du module externe pour la commande install
| Format | Example | Descriptif |
|---|---|---|
| Place de marché | plugin@marketplace | Module depuis un marché enregistré |
| GitHub | OWNER/REPO | Racine d’un dépôt GitHub |
| GitHub sous-répertoire | OWNER/REPO:PATH/TO/PLUGIN | Sous-répertoire dans un référentiel |
| Git URL | https://github.com/o/r.git | N’importe quelle URL Git |
| Chemin d’accès local |
`./my-plugin` ou `/abs/path` | Répertoire local |
plugin.json
Tous les plug-ins se composent d’un répertoire de plug-in contenant, au minimum, un fichier manifeste nommé plugin.json à la racine du répertoire du plug-in. Consultez Création d’un plug-in pour GitHub Copilot CLI.
Champ obligatoire
| Champ | Type | Descriptif |
|---|---|---|
name | ficelle | Nom du plug-in Kebab-case (lettres, chiffres, traits d’union uniquement). Max 64 chars. |
Champs de métadonnées facultatifs
| Champ | Type | Descriptif |
|---|---|---|
description | ficelle | Brève description. Max 1024 chars. |
version | ficelle | Version sémantique (par exemple, 1.0.0). |
author | objet |
`name` (obligatoire), `email` (facultatif), `url` (facultatif). |
| homepage | ficelle | URL de la page d’accueil du plug-in. |
| repository | ficelle | URL du référentiel source. |
| license | ficelle | Identificateur de licence (par exemple, MIT). |
| keywords | chaîne de caractères[] | Mots clés de recherche. |
| category | ficelle | Catégorie de plug-in. |
| tags | chaîne de caractères[] | Balises supplémentaires. |
Champs de chemin d’accès du composant
Celles-ci indiquent à l’interface CLI où trouver les composants de votre plug-in. Tous sont facultatifs. Le CLI utilise des conventions par défaut si elles sont omises.
| Champ | Type | Par défaut | Descriptif |
|---|---|---|---|
agents | chaîne | chaîne[] | agents/ | Chemin(s) d’accès aux répertoires d’agent (.agent.md fichiers). |
skills | chaîne | chaîne[] | skills/ | Chemin(s) vers les répertoires de compétences (SKILL.md fichiers). |
commands | chaîne | chaîne[] | — | Chemin d’accès aux répertoires de commandes. |
hooks | objet string | | — | Chemin d’accès à un fichier de configuration de hooks ou à un objet hooks inline. |
mcpServers | objet string | | — | Chemin d’accès à un fichier de configuration MCP (par exemple, .mcp.json) ou définitions de serveur inline. |
lspServers | objet string | | — | Chemin vers un fichier de configuration LSP, ou des définitions de serveur intégrées. |
Exemple de fichier 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
Vous pouvez créer une place de marché de plug-ins, que les utilisateurs peuvent utiliser pour découvrir et installer vos plug-ins, en créant un marketplace.json fichier et en l’enregistrant dans le .github/plugin/ répertoire du référentiel. Vous pouvez également stocker le marketplace.json fichier dans votre système de fichiers local. Par exemple, l’enregistrement du fichier tel qu’il /PATH/TO/my-marketplace/.github/plugin/marketplace.json vous permet de l’ajouter à l’interface CLI à l’aide de la commande suivante :
copilot plugin marketplace add /PATH/TO/my-marketplace
Remarque
Copilot CLI recherche également le marketplace.json fichier dans le .claude-plugin/ répertoire.
Pour plus d’informations, consultez « Création d’un marketplace de plugins pour GitHub Copilot CLI ».
Exemple de fichier 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"
}
]
}
Remarque
La valeur du source champ pour chaque plug-in est le chemin d’accès au répertoire du plug-in, par rapport à la racine du référentiel. Il n’est pas nécessaire d’utiliser ./ au début du chemin. Par exemple, "./plugins/plugin-name" et "plugins/plugin-name" résolvent au même répertoire.
Champs marketplace.json
Champs de niveau supérieur
| Champ | Type | Obligatoire | Descriptif |
|---|---|---|---|
name | ficelle | Oui | Nom de la Place de marché kebab-case. Max 64 chars. |
owner | objet | Oui |
`{ name, email? }` — Informations sur le propriétaire de la Place de marché. |
| plugins | tableau | Oui | Liste des entrées de plug-in (voir le tableau ci-dessous). |
| metadata | objet | Non | { description?, version?, pluginRoot? } |
Champs d’entrée de plug-in (objets dans le plugins tableau)
| Champ | Type | Obligatoire | Descriptif |
|---|---|---|---|
name | ficelle | Oui | Nom du plug-in Kebab-case. Max 64 chars. |
source | objet string | | Oui | Où récupérer le plug-in (chemin relatif, GitHubou URL). |
description | ficelle | Non | Description du plug-in. Max 1024 chars. |
version | ficelle | Non | Version du plug-in. |
author | objet | Non | { name, email?, url? } |
homepage | ficelle | Non | URL de la page d’accueil du plug-in. |
repository | ficelle | Non | URL du référentiel source. |
license | ficelle | Non | Identificateur de licence. |
keywords | chaîne de caractères[] | Non | Mots clés de recherche. |
category | ficelle | Non | Catégorie de plug-in. |
tags | chaîne de caractères[] | Non | Balises supplémentaires. |
commands | chaîne | chaîne[] | Non | Chemin d’accès aux répertoires de commandes. |
agents | chaîne | chaîne[] | Non | Chemins d’accès aux répertoires de l’agent. |
skills | chaîne | chaîne[] | Non | Chemins d’accès aux répertoires de compétences. |
hooks | objet string | | Non | Chemin d’accès à la configuration des hooks ou à l’objet inline hooks. |
mcpServers | objet string | | Non | Chemin d’accès à la configuration MCP ou aux définitions de serveur inline. |
lspServers | objet string | | Non | Chemin d’accès aux définitions de serveur intégrées ou à la configuration LSP. |
strict | booléen | Non | Quand true (valeur par défaut), les plug-ins doivent se conformer aux règles de schéma et de validation complètes. Lorsque false, la validation assouplie est utilisée, ce qui permet une plus grande flexibilité, en particulier pour les installations directes ou les plug-ins hérités. |
Emplacements des fichiers
| Élément | Chemin |
|---|---|
| Plug-ins installés |
`~/.copilot/installed-plugins/` et `~/.copilot/installed-plugins/_direct` |
| Cache de la Place de marché | ~/.copilot/state/marketplace-cache/ |
| Manifeste du plug-in |
plugin.json, .github/plugin/plugin.json ou .claude-plugin/plugin.json |
| Manifest de Marketplace |
.github/plugin/marketplace.json ou .claude-plugin/marketplace.json |
| Agents |
agents/ (par défaut, substituable dans le manifeste) |
| Compétences |
skills/ (par défaut, substituable dans le manifeste) |
| Configuration des hooks |
hooks.json ou hooks/hooks.json |
| Configuration MCP |
.mcp.json ou .github/mcp.json |
| Configuration LSP |
lsp.json ou .github/lsp.json |
Ordre de chargement et priorité
Si vous installez plusieurs plug-ins, il est possible que certains agents, compétences, serveurs MCP ou outils fournis via des serveurs MCP aient des noms en double. Dans ce cas, l’interface CLI détermine le composant à utiliser en fonction d’un ordre de priorité.
-
**Les agents et les compétences** utilisent la priorité du premier-trouvé-gagnant.Si vous disposez d’un agent personnalisé ou d’une compétence au niveau du projet portant le même nom ou id que celui d’un plug-in que vous installez, l’agent ou la compétence du plug-in est ignoré en mode silencieux. Le plug-in ne peut pas remplacer les configurations au niveau du projet ou personnelles. Les agents personnalisés sont dédupliqués à l’aide de leur ID, qui est dérivé de son nom de fichier (par exemple, si le fichier est nommé
reviewer.agent.md, l’ID de l’agent estreviewer). Les compétences sont dédupliquées par le champ de leur nom à l’intérieur du fichierSKILL.md. -
**Les serveurs MCP** utilisent la priorité "last-wins".Si vous installez un plug-in qui définit un serveur MCP portant le même nom de serveur qu’un serveur MCP que vous avez déjà installé, la définition du plug-in est prioritaire. Vous pouvez utiliser l’option
--additional-mcp-configde ligne de commande pour remplacer une configuration de serveur MCP avec le même nom, installée à l’aide d’un plug-in. -
**Les outils et agents intégrés** sont toujours présents et ne peuvent pas être substitués par les composants définis par l’utilisateur.
Le diagramme suivant illustre les règles d’ordre de chargement et de priorité.
┌─────────────────────────────────────────────────────────┐
│ 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) │
└─────────────────────────────────────────────────────────────────────┘