Hinweis
Hilfe zur Verwendung von Plugins finden Sie, indem Sie copilot plugin [SUBCOMMAND] --help im Terminal eingeben.
CLI-Befehle
Sie können die folgenden Befehle im Terminal verwenden, um Plug-Ins für Copilot CLI zu verwalten.
| Command | Description |
|---|---|
copilot plugin install SPECIFICATION | Installieren Sie ein Plug-In. Siehe Plug-In-Spezifikation für befehl unten. |
copilot plugin uninstall NAME | Entfernen eines Plug-Ins |
copilot plugin list | Auflisten installierter Plugins |
copilot plugin update NAME | Aktualisieren eines Plug-Ins |
copilot plugin update --all | Aktualisieren aller installierten Plug-Ins |
copilot plugin disable NAME | Vorübergehendes Deaktivieren eines Plug-Ins ohne Deinstallation |
copilot plugin enable NAME | Erneutes Aktivieren eines deaktivierten Plug-Ins |
copilot plugin marketplace add SPECIFICATION | Registrieren eines Marketplace |
copilot plugin marketplace list | Auflisten registrierter Marktplätze |
copilot plugin marketplace browse NAME | Durchsuchen von Marketplace-Plug-Ins |
copilot plugin marketplace remove NAME | Aufheben der Registrierung eines Marketplace |
Plug-In-Spezifikation für Befehl
| Format | Example | Description |
|---|---|---|
| Marketplace | plugin@marketplace | Plug-In von einem registrierten Marketplace |
| GitHub | OWNER/REPO | Stamm eines GitHub Repositorys |
| GitHub Unterverzeichnis | OWNER/REPO:PATH/TO/PLUGIN | Unterverzeichnis in einem Repository |
| Git-URL | https://github.com/o/r.git | Beliebige Git-URL |
| Lokaler Pfad | oder | Lokales Verzeichnis |
plugin.json
Alle Plug-Ins bestehen aus einem Plug-In-Verzeichnis, das mindestens eine Manifestdatei mit dem Namen enthält, die sich im Stammverzeichnis des Plug-In-Verzeichnisses befindet. Weitere Informationen findest du unter AUTOTITLE.
Pflichtfeld
| Feld | Typ | Description |
|---|---|---|
name | Schnur | Name des Kebab-Case-Plugins (nur Buchstaben, Zahlen und Bindestriche erlaubt). Max. 64 Zeichen. |
Optionale Metadatenfelder
| Feld | Typ | Description |
|---|---|---|
description | Schnur | Kurze Beschreibung. Max. 1024 Zeichen. |
version | Schnur | Semantische Version (z. B. ). |
author | Objekt | (erforderlich), (optional), (optional). |
homepage | Schnur | Url der Plug-In-Homepage. |
repository | Schnur | Quell-Repository-URL. |
license | Schnur | Lizenz-ID (z. B. ). |
keywords | string[] | Suchstichwörter. |
category | Schnur | Plug-In-Kategorie. |
tags | string[] | Zusätzliche Tags. |
Komponentenpfadfelder
Diese teilen der CLI mit, wo sie die Komponenten Ihres Plug-Ins finden. Alle sind optional. Die CLI verwendet Standardkonventionen, wenn sie weggelassen werden.
| Feld | Typ | Standard | Description |
|---|---|---|---|
agents | string string[] | agents/ | Pfade zu Agentenverzeichnissen (-Dateien). |
skills | string string[] | skills/ | Pfad(n) zu Qualifikationsverzeichnissen ( Dateien). |
commands | string string[] | — | Pfade zu Befehlsverzeichnissen. |
hooks | string-Objekt | — | Pfad zu einer Hooks-Konfigurationsdatei oder einem Inline-Hooks-Objekt. |
mcpServers | string-Objekt | — | Pfad zu einer MCP-Konfigurationsdatei (z. B. ) oder Inlineserverdefinitionen. |
lspServers | string-Objekt | — | Pfad zu einer LSP-Konfigurationsdatei oder Inlineserverdefinitionen. |
Beispieldatei für
marketplace.json
Sie können einen Plug-In-Marketplace erstellen , mit dem Benutzer Ihre Plug-Ins entdecken und installieren können, indem Sie eine Datei erstellen und im Verzeichnis des Repositorys speichern. Sie können die Datei auch in Ihrem lokalen Dateisystem speichern. Speichern Sie die Datei beispielsweise als , um sie mit dem folgenden Befehl zur CLI hinzuzufügen:
copilot plugin marketplace add /PATH/TO/my-marketplace
Hinweis
Copilot CLI sucht auch nach der marketplace.json Datei im .claude-plugin/ Verzeichnis.
Weitere Informationen finden Sie unter AUTOTITLE.
Beispieldatei für
{
"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"
}
]
}
Hinweis
Der Wert des source Felds für jedes Plug-In ist der Pfad zum Verzeichnis des Plug-Ins relativ zum Stamm des Repositorys. Es ist nicht erforderlich, am Anfang des Pfads zu verwenden ./ . Beispiel: "./plugins/plugin-name" und "plugins/plugin-name" führen zum selben Verzeichnis.
Felder
Felder auf oberster Ebene
| Feld | Typ | Erforderlich | Description |
|---|---|---|---|
name | Schnur | Ja | Name des Kebab-case Marketplace. Max. 64 Zeichen. |
owner | Objekt | Ja | — Marketplace-Besitzerinformationen. |
plugins | Array | Ja | Liste der Plug-In-Einträge (siehe tabelle unten). |
metadata | Objekt | Nein | { description?, version?, pluginRoot? } |
Plug-In-Eintragsfelder (Objekte innerhalb des Arrays)
| Feld | Typ | Erforderlich | Description |
|---|---|---|---|
name | Schnur | Ja | Name des Kebab-Case-Plugins. Max. 64 Zeichen. |
source | string-Objekt | Ja | Wo das Plug-In abgerufen werden soll (relativer Pfad, GitHub, oder URL). |
description | Schnur | Nein | Plug-In-Beschreibung. Max. 1024 Zeichen. |
version | Schnur | Nein | Plugin-Version. |
author | Objekt | Nein | { name, email?, url? } |
homepage | Schnur | Nein | Url der Plug-In-Homepage. |
repository | Schnur | Nein | Quell-Repository-URL. |
license | Schnur | Nein | Lizenzbezeichner. |
keywords | string[] | Nein | Suchstichwörter. |
category | Schnur | Nein | Plug-In-Kategorie. |
tags | string[] | Nein | Zusätzliche Tags. |
commands | string string[] | Nein | Pfade zu Befehlsverzeichnissen. |
agents | string string[] | Nein | Pfade zu Agentverzeichnissen. |
skills | string string[] | Nein | Pfade zu Qualifikationsverzeichnissen. |
hooks | string-Objekt | Nein | Pfad zur Hooks-Konfiguration oder zu einem Inline-Hooks-Objekt. |
mcpServers | string-Objekt | Nein | Pfad zu MCP-Konfigurations- oder Inlineserverdefinitionen. |
lspServers | string-Objekt | Nein | Pfad zu LSP-Konfigurations- oder Inlineserverdefinitionen. |
strict | boolean | Nein | Wenn (standard) müssen Plug-Ins den vollständigen Schema- und Validierungsregeln entsprechen. Wenn eine entspannte Validierung verwendet wird, ermöglicht dies mehr Flexibilität – insbesondere für direkte Installationen oder Legacy-Plug-Ins. |
Dateispeicherorte
| Artikel | Pfad |
|---|---|
| Installierte Plug-Ins | (über einen Marketplace installiert) und (direkt installiert) |
| Marketplacecache | ~/.copilot/state/marketplace-cache/ |
| Plugin-Manifest | , oder |
| Marketplace-Manifest | oder |
| Agenten | (Standard, im Manifest außer Kraft gesetzt) |
| Fähigkeiten | (Standard, im Manifest außer Kraft gesetzt) |
| Hooks-Konfiguration | oder |
| MCP-Konfiguration | oder |
| LSP-Konfiguration | oder |
Ladereihenfolge und Priorität
Wenn Sie mehrere Plug-Ins installieren, ist es möglich, dass einige benutzerdefinierte Agents, Fähigkeiten, MCP-Server oder Tools, die über MCP-Server bereitgestellt werden, doppelte Namen haben. In diesem Fall bestimmt die CLI, welche Komponente basierend auf einer Rangfolge verwendet werden soll.
-
Agenten und Skills nutzen das Prinzip 'Wer zuerst kommt, mahlt zuerst'.
Wenn Sie über einen benutzerdefinierten Agent auf Projektebene oder eine Fähigkeit mit demselben Namen oder derselben ID wie eines in einem Plug-In verfügen, das Sie installieren, wird der Agent oder die Fähigkeit im Plug-In im Hintergrund ignoriert. Das Plug-In kann keine Konfigurationen auf Projektebene oder persönliche Konfigurationen außer Kraft setzen. Benutzerdefinierte Agents werden mit ihrer ID dedupliziert, die von ihrem Dateinamen abgeleitet wird (z. B. wenn die Datei benannt ist, die Agent-ID ist ). Fähigkeiten werden durch ihr Namensfeld innerhalb der -Datei dedupliziert.
-
MCP-Server verwenden das Last-Wins-Prinzip.
Wenn Sie ein Plug-In installieren, das einen MCP-Server mit demselben Servernamen wie einen bereits installierten MCP-Server definiert, hat die Definition des Plug-Ins Vorrang. Sie können die Befehlszeilenoption verwenden, um eine MCP-Serverkonfiguration mit demselben Namen außer Kraft zu setzen, die mit einem Plug-In installiert wird.
-
Integrierte Tools und Agents sind immer vorhanden und können nicht von benutzerdefinierten Komponenten außer Kraft gesetzt werden.
Das folgende Diagramm veranschaulicht die Ladereihenfolge und Rangfolgeregeln.
┌──────────────────────────────────────────────────────────────────┐
│ 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) │
└─────────────────────────────────────────────────────────────────────┘