Hinweis
Hilfe zur Verwendung von Plugins finden Sie, indem Sie copilot plugin [SUBCOMMAND] --help im Terminal eingeben.
Eine Übersicht darüber, was Plug-Ins sind und wie sie über Copilot Clients hinweg funktionieren, finden Sie unter Informationen zu GitHub Copilot Plug-Ins.
CLI-Befehle
Sie können die folgenden Befehle im Terminal verwenden, um Plug-Ins für Copilot CLI zu verwalten.
copilot plugin und copilot plugins sind austauschbar – verwenden Sie die Variante, die sich für den Unterbefehl besser liest.
| Befehl | Beschreibung |
|---|---|
copilot plugin install SPECIFICATION | Installieren Sie ein Plug-In. Siehe Plug-In-Spezifikation für install befehl unten. |
copilot plugin uninstall NAME | Entfernen eines Plug-Ins |
copilot plugin list | Auflisten installierter Plugins |
copilot plugin update NAME | Aktualisieren sie ein benanntes Plug-In. Verwenden Sie --all, um alle installierten Plug-Ins auf einmal zu aktualisieren. |
copilot plugin enable NAME | Aktivieren eines zuvor deaktivierten Plug-Ins |
copilot plugin disable NAME | Deaktivieren eines Plug-Ins ohne Deinstallation |
copilot plugin marketplace add SPECIFICATION | Registrieren Sie einen Marktplatz. Der eigene Name des Marketplace aus seinem marketplace.json Manifest wird zum Registrierungsschlüssel – es gibt keine Möglichkeit, einen benutzerdefinierten lokalen Namen festzulegen. |
copilot plugin marketplace list | Auflisten registrierter Marktplätze |
copilot plugin marketplace browse NAME | Durchsuchen von Marketplace-Plug-Ins |
copilot plugin marketplace update [NAME] (Alias refresh) | Rufen Sie den Plug-In-Katalog eines Marketplace erneut ab. Lassen Sie NAME weg, um die Kataloge aller registrierten Marktplätze zu aktualisieren. |
copilot plugin marketplace remove NAME | Heben Sie die Registrierung eines Marketplace auf. Wird abgelehnt, wenn Plug-ins aus dem Marktplatz noch installiert sind; geben Sie --force an, um diese Plug-ins ebenfalls zu deinstallieren. |
Im nicht interaktiven Modus bieten copilot plugins enable NAME --plugin, copilot plugins disable NAME --plugin und copilot plugins remove NAME --plugin dieselben Vorgänge zum Aktivieren, Deaktivieren und Deinstallieren.
--plugin ist der Standardtyp und kann für diese drei Befehle weggelassen werden. Siehe GitHub Copilot CLI-Befehlsreferenz zu den nicht interaktiven Typen --mcp und --skill, die diese Befehle auf MCP-Server und Skills ausweiten.
Plug-In-Spezifikation für install Befehl
| Format | Beispiel | Beschreibung |
|---|---|---|
| Marktplatz | plugin@marketplace | Plug-In von einem registrierten Marketplace |
| GitHub | OWNER/REPO | Stamm eines GitHub Repositorys |
| GitHub Subdir | OWNER/ | Unterverzeichnis in einem Repository |
| Git-URL | https:/ | Beliebige Git-URL |
| Lokaler Pfad | ||
./my-plugin oder /abs/path | Lokales Verzeichnis |
copilot plugins install-Optionen
Neben der Installation eines Plugins aus einer Spezifikation kann copilot plugins install mit --skill eine einzelne Fertigkeit aus einer Datei, URL oder einem Verzeichnis installieren. Eine Qualifikationsinstallation ist keine Plug-In-Installation und geht nicht durch einen Marketplace – Details zu Fähigkeiten selbst finden Sie unter GitHub Copilot CLI-Befehlsreferenz .
| Auswahl | Beschreibung |
|---|---|
--plugin | Installieren Sie ein Plug-In (Standard). |
--skill | Installieren Sie eine Fähigkeit aus einem lokalen Pfad oder einer lokalen URL. |
--scope SCOPE | Für eine Datei oder URL --skill installieren: user (Standard) oder project. |
project beschränkt die Installation auf das Verzeichnis .github/skills des aktuellen Repositorys anstelle Ihres Benutzerkontos und gilt nur für Skill-Installationen aus Dateien oder URLs. | |
--config-dir=DIRECTORY | Pfad zum Konfigurationsverzeichnis. Diese Option ist veraltet. Verwenden Sie stattdessen COPILOT_HOME. |
Durch die Installation eines Verzeichnisses wird es als benutzerdefinierte Qualifikationsquelle registriert, anstatt es zu kopieren; Durch die Installation einer Datei oder URL werden die Inhalte des Qualifikationsinhalts in Ihr persönliches Oder Projektfähigkeitsverzeichnis kopiert.
MCP-Server werden aus einer per Richtlinie konfigurierten Registry installiert, die Authentifizierung und die interaktive Eingabe von Geheimnissen erfordert. Verwenden Sie das /plugins Dashboard (Online-Modus) oder den /mcp Slash-Befehl, um MCP-Server statt copilot plugins install hinzuzufügen.
copilot plugins update-Optionen
| Auswahl | Beschreibung |
|---|---|
--all | Aktualisieren jedes installierten Plug-Ins |
copilot plugins marketplace Unterbefehle
Integrierte Standard-Marketplaces werden mit der Laufzeit ausgeliefert und können nicht entfernt werden.
| Subcommand | Beschreibung |
|---|---|
list [--json] | Liste alle registrierten Marktplätze auf, einschließlich integrierter Standardvorgaben |
add SOURCE | Hinzufügen eines Marketplace (owner/repo, owner/repo#refeiner URL oder eines lokalen Pfads) |
remove NAME [--force] | Entfernen eines Marktplatzes; --force deinstalliert auch Plug-Ins, die daraus stammen |
browse NAME [--json] | Auflisten der Plugins, die vom Marketplace-Katalog angeboten werden |
update [NAME] (Alias refresh) | Aktualisieren Sie den Plugin-Katalog für einen Marktplatz oder für alle Marktplätze, wenn NAME nicht angegeben wird. |
plugin.json
Alle Plug-Ins bestehen aus einem Plug-In-Verzeichnis, das mindestens eine Manifestdatei mit dem Namen plugin.json enthält, die sich im Stammverzeichnis des Plug-In-Verzeichnisses befindet. Siehe Erstellen eines Plug-Ins für GitHub Copilot-CLI.
Pflichtfeld
| Feld | Typ | Beschreibung |
|---|---|---|
name | Schnur | Name des Kebab-Case-Plugins (nur Buchstaben, Zahlen und Bindestriche erlaubt). Max. 64 Zeichen. |
Optionale Metadatenfelder
| Feld | Typ | Beschreibung |
|---|---|---|
description | Schnur | Kurze Beschreibung. Max. 1024 Zeichen. |
version | Schnur | Semantische Version (z. B. 1.0.0). |
author | Objekt | |
name (erforderlich), email (optional), url (optional). | ||
homepage | Schnur | Url der Plug-In-Homepage. |
repository | Schnur | Quell-Repository-URL. |
license | Schnur | Lizenz-ID (z. B. MIT). |
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 | Vorgabe | Beschreibung |
|---|---|---|---|
agents | Zeichenkette | Zeichenkette[] | agents/ | Pfade zu Agentenverzeichnissen (.agent.md-Dateien). |
skills | Zeichenkette | Zeichenkette[] | skills/ | Pfad(n) zu Qualifikationsverzeichnissen (SKILL.md Dateien). |
commands | Zeichenkette | Zeichenkette[] | — | Pfade zu Befehlsverzeichnissen. |
hooks | string-Objekt | | — | Pfad zu einer Hooks-Konfigurationsdatei oder einem Inline-Hooks-Objekt. |
extensions | string | string[] | object | — | Pfad(n) zu Erweiterungsverzeichnissen. Verwenden Sie { paths: [...], exclusive: true }, um integrierte Erweiterungen zu unterdrücken. |
mcpServers | string-Objekt | | — | Pfad zu einer MCP-Konfigurationsdatei (z. B. .mcp.json) oder Inlineserverdefinitionen. |
lspServers | string-Objekt | | — | Pfad zu einer LSP-Konfigurationsdatei oder Inlineserverdefinitionen. |
Beispieldatei für plugin.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"
}
{
"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"
}
LSP-Serverkonfiguration
Um LSP-Server (Language Server Protocol) in ein Plugin einzubinden, erstellen Sie eine lsp-config/servers.json-Datei im Plugin-Verzeichnis oder geben Sie über das Feld lspServers in plugin.json einen Pfad oder ein Inline-Objekt an.
Beispiel lsp-config/servers.json (oder inline über lspServers in plugin.json):
{
"lspServers": {
"my-lsp": {
"command": "my-language-server",
"fileExtensions": { ".myext": "mylang" }
}
}
}
Für plattformübergreifende Unterstützung verwenden Sie bash und powershell anstelle von command:
{
"lspServers": {
"my-lsp": {
"bash": "${PLUGIN_ROOT}/scripts/start-lsp.sh",
"powershell": "${PLUGIN_ROOT}/scripts/start-lsp.ps1",
"fileExtensions": { ".myext": "mylang" }
}
}
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
command | Schnur | * | Ausführbare Datei zum Starten des Sprachservers. |
bash | Schnur | * | Bash-Skript zum Starten des Servers (Linux/macOS); ausgeführt über bash -c SCRIPT. |
powershell | Schnur | * | PowerShell-Skript zum Starten des Servers (Windows); ausgeführt über pwsh -c SCRIPT. |
cwd | Schnur | No | Arbeitsverzeichnis. Absolut oder relativ zur Konfigurationsdatei. Unterstützt ${PLUGIN_ROOT}. |
args | string[] | No | Argumente, die an command übergeben werden (ignoriert für bash und powershell). |
env | Objekt | No | Umgebungsvariablen, die beim Spawning des Servers festgelegt werden sollen. |
fileExtensions | Objekt | Ja | Zuordnung von Dateierweiterungen zu Sprach-IDs (z. B. { ".ts": "typescript" }). |
rootUri | Schnur | No | Projektwurzelverzeichnis relativ zum Git-Stammverzeichnis (Standard: .). |
initialization | beliebig | No | Optionen, die an den Server in der LSP-Anforderung initialize gesendet werden. |
(*) Mindestens einer von command, bashoder powershell ist erforderlich. Wenn sowohl bash als auch powershell angegeben werden, wird die plattformgerechte Option automatisch ausgewählt (PowerShell auf Windows, Bash an anderer Stelle).
Verwenden Sie ${PLUGIN_ROOT}, um auf Pfade innerhalb des Plugin-Verzeichnisses zu verweisen.
marketplace.json
Sie können einen Plug-In-Marketplace erstellen , mit dem Benutzer Ihre Plug-Ins entdecken und installieren können, indem Sie eine marketplace.json Datei erstellen und im .github/plugin/ Verzeichnis des Repositorys speichern. Sie können die marketplace.json Datei auch in Ihrem lokalen Dateisystem speichern. Speichern Sie die Datei beispielsweise als /PATH/TO/my-marketplace/.github/plugin/marketplace.json, 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 findest du unter Erstellen eines Plugin-Marketplace für GitHub Copilot-CLI.
Beispieldatei für marketplace.json
{
"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.
marketplace.json Felder
Felder auf oberster Ebene
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | Schnur | Ja | Name des Kebab-case Marketplace. Max. 64 Zeichen. |
owner | Objekt | Ja | |
{ name, email? } — Marketplace-Besitzerinformationen. | |||
plugins | Array | Ja | Liste der Plug-In-Einträge (siehe tabelle unten). |
metadata | Objekt | No | { description?, version?, pluginRoot? } |
Plug-In-Eintragsfelder (Objekte innerhalb des plugins Arrays)
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | Schnur | Ja | Name des Kebab-Case-Plugins. Max. 64 Zeichen. |
source | string-Objekt | | Ja | Wo das Plug-In abgerufen werden soll (relativer Pfad, GitHuboder URL). |
description | Schnur | No | Plug-In-Beschreibung. Max. 1024 Zeichen. |
version | Schnur | No | Plugin-Version. |
author | Objekt | No | { name, email?, url? } |
homepage | Schnur | No | Url der Plug-In-Homepage. |
repository | Schnur | No | Quell-Repository-URL. |
license | Schnur | No | Lizenzbezeichner. |
keywords | string[] | No | Suchstichwörter. |
category | Schnur | No | Plug-In-Kategorie. |
tags | string[] | No | Zusätzliche Tags. |
commands | Zeichenkette | Zeichenkette[] | No | Pfade zu Befehlsverzeichnissen. |
agents | Zeichenkette | Zeichenkette[] | No | Pfade zu Agentverzeichnissen. |
skills | Zeichenkette | Zeichenkette[] | No | Pfade zu Qualifikationsverzeichnissen. |
hooks | string-Objekt | | No | Pfad zur Hooks-Konfiguration oder zu einem Inline-Hooks-Objekt. |
mcpServers | string-Objekt | | No | MCP-Server, die aktiviert werden sollen, wenn das Plug-In installiert wird. Akzeptiert eine Inlineserverzuordnung oder einen Pfad zu einer JSON-Konfigurationsdatei. Wird verwendet, wenn die Plug-In-Quelle keine eigene MCP-Konfiguration enthält. |
lspServers | string-Objekt | | No | Pfad zur LSP-Konfiguration oder Inlineserverdefinition. |
strict | boolean | No | Wenn true (standard) müssen Plug-Ins den vollständigen Schema- und Validierungsregeln entsprechen. Wenn falseeine entspannte Validierung verwendet wird, ermöglicht dies mehr Flexibilität – insbesondere für direkte Installationen oder Legacy-Plug-Ins. |
Plug-In-Quelltypen
Das source Feld eines Plug-In-Eintrags akzeptiert eine relative Pfadzeichenfolge oder ein Objekt, das ein Repository oder eine GitHub Git-URL-Quelle beschreibt:
{
"source": {
"source": "github",
"repo": "owner/repo",
"ref": "v1.0.0",
"path": "plugins/my-plugin"
}
}
Sowohl die Quelltypen github als auch url akzeptieren ein optionales Feld sha, um Installationen zusätzlich zu ref (oder anstelle davon) an einen exakten Commit anzuheften:
{
"source": {
"source": "github",
"repo": "owner/repo",
"sha": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
"path": "plugins/my-plugin"
}
}
sha muss ein vollständiger Commit-SHA mit 40 Zeichen sein. Pinnen Sie auf sha, um reproduzierbare Installationen zu gewährleisten, die gegen Force-Pushes oder Verschiebungen von Tags/Branches immun sind.
Dateispeicherorte
| Element | Pfad |
|---|---|
| Installierte Plug-Ins | |
~/ (über einen Marketplace installiert) und ~/ (direkt installiert) | |
| Marketplacecache | Plattformcacheverzeichnis: ~/ (Linux), ~/ (macOS). Überschreibbar mit COPILOT_CACHE_. |
| Plugin-Manifest | |
.plugin/, plugin.json, .github/oder .claude-plugin/ (in dieser Reihenfolge eingecheckt) | |
| Marketplace-Manifest | |
marketplace.json, .plugin/, .github/oder .claude-plugin/ (in dieser Reihenfolge eingecheckt) | |
| Agenten | |
agents/ (Standard, im Manifest außer Kraft gesetzt) | |
| Fähigkeiten | |
skills/ (Standard, im Manifest außer Kraft gesetzt) | |
| Hooks-Konfiguration | |
hooks.json oder hooks/hooks.json | |
| MCP-Konfiguration | |
.mcp.json, .github/mcp.json | |
| LSP-Konfiguration | |
lsp.json oder .github/lsp.json | |
| Plug-In-Daten | |
${COPILOT_PLUGIN_ (auch verfügbar als ${CLAUDE_PLUGIN_). Verweist auf ein dauerhaftes, schreibbares Verzeichnis, das für jedes installierte Plug-In eindeutig ist. Verwenden Sie dies für Plug-In-spezifische Laufzeitdaten anstelle von Pfaden innerhalb des Cacheverzeichnisses installierter Plug-Ins. |
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
reviewer.agent.mdist, die Agent-ID istreviewer). Fähigkeiten werden durch ihr Namensfeld innerhalb derSKILL.md-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
--additional-mcp-configBefehlszeilenoption verwenden, um eine MCP-Serverkonfiguration mit demselben Namen außer Kraft zu setzen, die mit einem Plug-In installiert wird. Wenn zwei oder mehr Plug-Ins einen MCP-Server mit demselben Namen deklarieren, verwendet die CLI die Version des Plug-Ins, das zuletzt geladen wurde, und zeigt eine Warnung an, die jedes vorherige Plug-In benennt, das es definiert hat. -
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. <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) │
└─────────────────────────────────────────────────────────────────────┘