Übersicht
Das Erstellen und Verteilen eines Marktplatzes umfasst:- Plugins erstellen: Erstellen Sie ein oder mehrere Plugins mit skills, Agents, hooks, MCP servers oder LSP servers. Diese Anleitung setzt voraus, dass Sie bereits Plugins zum Verteilen haben; siehe Plugins erstellen für Details zum Erstellen von Plugins.
- Marktplatzdatei erstellen: Definieren Sie eine
marketplace.json, die Ihre Plugins und deren Speicherorte auflistet. Siehe Marktplatzdatei erstellen. - Marktplatz hosten: Pushen Sie zu GitHub, GitLab oder einem anderen Git-Host. Siehe Marktplätze hosten und verteilen.
- Mit Benutzern teilen: Benutzer fügen Ihren Marktplatz mit
/plugin marketplace addhinzu und installieren einzelne Plugins. Siehe Plugins entdecken und installieren.
/plugin marketplace update.
Anleitung: Erstellen Sie einen lokalen Marktplatz
Dieses Beispiel erstellt einen Marktplatz mit einem Plugin: einquality-review skill für Code-Reviews. Sie erstellen die Verzeichnisstruktur, fügen ein skill hinzu, erstellen das Plugin-Manifest und den Marktplatzkatalog und installieren und testen ihn dann.
1
Erstellen Sie die Verzeichnisstruktur
2
Erstellen Sie das skill
Erstellen Sie eine
SKILL.md-Datei, die definiert, was das quality-review skill tut.my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md
3
Erstellen Sie das Plugin-Manifest
Erstellen Sie eine
plugin.json-Datei, die das Plugin beschreibt. Das Manifest befindet sich im .claude-plugin/-Verzeichnis.my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json
Das Festlegen von
version bedeutet, dass Benutzer nur Updates erhalten, wenn Sie dieses Feld ändern. Erhöhen Sie es daher bei jeder Veröffentlichung. Wenn Sie version weglassen und diesen Marktplatz in Git hosten, zählt jeder Commit automatisch als neue Version. Siehe Versionsauflösung, um den richtigen Ansatz zu wählen.4
Erstellen Sie die Marktplatzdatei
Erstellen Sie den Marktplatzkatalog, der Ihr Plugin auflistet.
my-marketplace/.claude-plugin/marketplace.json
5
Hinzufügen und Installieren
Fügen Sie den Marktplatz hinzu und installieren Sie das Plugin.
6
Probieren Sie es aus
Wählen Sie etwas Code in Ihrem Editor aus und führen Sie Ihr neues skill aus. Plugin-skills sind mit dem Plugin-Namen namespaced.
Wie Plugins installiert werden: Wenn Benutzer ein Plugin installieren, kopiert Claude Code das Plugin-Verzeichnis an einen Cache-Speicherort. Das bedeutet, dass Plugins keine Dateien außerhalb ihres Verzeichnisses mit Pfaden wie
../shared-utils referenzieren können, da diese Dateien nicht kopiert werden.Wenn Sie Dateien über Plugins hinweg teilen müssen, verwenden Sie Symlinks. Siehe Plugin-Caching und Dateiauflösung für Details.Marktplatzdatei erstellen
Erstellen Sie.claude-plugin/marketplace.json im Stammverzeichnis Ihres Repositories. Diese Datei definiert den Namen Ihres Marktplatzes, Eigentümerinformationen und eine Liste von Plugins mit ihren Quellen.
Jeder Plugin-Eintrag benötigt mindestens einen name und eine source, die Claude Code mitteilt, woher es abgerufen werden soll. Siehe das vollständige Schema unten für alle verfügbaren Felder.
Marktplatz-Schema
Erforderliche Felder
Reservierte Namen: Die folgenden Marktplatznamen sind für die offizielle Nutzung durch Anthropic reserviert und können nicht von Drittanbieter-Marktplätzen verwendet werden:
claude-code-marketplace, claude-code-plugins, claude-plugins-official, claude-plugins-community, claude-community, anthropic-marketplace, anthropic-plugins, agent-skills, anthropic-agent-skills, knowledge-work-plugins, life-sciences, claude-for-legal, claude-for-financial-services, financial-services-plugins, first-party-plugins, healthcare. Namen, die offizielle Marktplätze imitieren, wie official-claude-plugins oder anthropic-plugins-v2, sind ebenfalls blockiert. Das Reservieren dieser Namen verhindert, dass sich ein Drittanbieter-Marktplatz als von Anthropic veröffentlichte Quelle darstellt.Claude Code überprüft reservierte Namen jedes Mal, wenn es einen Marktplatz lädt, nicht nur wenn Sie einen hinzufügen. Ein Marktplatz, der unter einem dieser Namen registriert wurde, bevor der Name reserviert wurde, wird nicht mehr geladen und meldet, dass er von einer nicht vertrauenswürdigen Quelle registriert ist. Entfernen Sie diesen Marktplatz und fügen Sie ihn erneut aus der offiziellen Anthropic-Quelle hinzu. Ein Drittanbieter-Marktplatz, der von einem neu reservierten Namen betroffen ist, wird erneut geladen, sobald Sie ihn unter einem anderen Namen erneut hinzufügen. Vor v2.1.205 waren first-party-plugins und healthcare nicht reserviert, und ein Marktplatz, der bereits unter einem reservierten Namen registriert war, wurde weiterhin geladen.Eigentümer-Felder
Optionale Felder
description und version werden auch unter metadata für Rückwärtskompatibilität akzeptiert.
Plugin-Einträge
Jeder Plugin-Eintrag implugins-Array beschreibt ein Plugin und wo man es findet. Sie können jedes Feld aus dem Plugin-Manifest-Schema einbeziehen, wie description, version, author, commands und hooks, plus diese Marktplatz-spezifischen Felder: source, category, tags, strict und relevance.
Erforderliche Felder
Optionale Plugin-Felder
Standard-Metadatenfelder:
Komponenten-Konfigurationsfelder:
Plugin-Quellen
Plugin-Quellen teilen Claude Code mit, wo jedes einzelne Plugin in Ihrem Marktplatz abgerufen werden soll. Diese werden imsource-Feld jedes Plugin-Eintrags in marketplace.json festgelegt.
Sobald Claude Code ein Plugin klont oder auf den lokalen Computer herunterlädt, wird es in den lokalen versionierten Plugin-Cache unter ~/.claude/plugins/cache kopiert.
Marktplatz-Quellen vs. Plugin-Quellen: Dies sind unterschiedliche Konzepte, die unterschiedliche Dinge steuern.
- Marktplatz-Quelle: wo der
marketplace.json-Katalog selbst abgerufen werden soll. Wird festgelegt, wenn Benutzer/plugin marketplace addausführen oder inextraKnownMarketplaces-Einstellungen. Unterstütztref(Branch/Tag), aber nichtsha. - Plugin-Quelle: wo ein einzelnes Plugin in der Marktplatz-Liste abgerufen werden soll. Wird im
source-Feld jedes Plugin-Eintrags inmarketplace.jsonfestgelegt. Unterstützt sowohlref(Branch/Tag) als auchsha(exakter Commit).
acme-corp/plugin-catalog gehostet wird (Marktplatz-Quelle), ein Plugin auflisten, das von acme-corp/code-formatter abgerufen wird (Plugin-Quelle). Die Marktplatz-Quelle und die Plugin-Quelle verweisen auf unterschiedliche Repositories und werden unabhängig voneinander angeheftet.github, url und git-subdir. Wenn sowohl ref als auch sha auf einem von ihnen gesetzt sind, ist sha die effektive Anheftung. Claude Code ruft den angehefteten Commit direkt ab und checkt ihn aus.
Auf den meisten Git-Hosts, einschließlich GitHub, GitLab und Bitbucket, bedeutet dies, dass die Installation erfolgreich ist, auch wenn der Branch oder Tag, der durch ref benannt wird, inzwischen upstream gelöscht wurde, solange der Commit noch vom Repository aus erreichbar ist. Einige Server, wie AWS CodeCommit, unterstützen das Abrufen von Commits nach SHA nicht. Auf diesen Servern muss ref noch vorhanden sein und der angeheftete Commit muss von ihm aus erreichbar sein.
Relative Pfade
Für Plugins im selben Repository verwenden Sie einen Pfad, der mit./ beginnt:
.claude-plugin/ enthält. Im obigen Beispiel verweist ./plugins/my-plugin auf <repo>/plugins/my-plugin, obwohl marketplace.json unter <repo>/.claude-plugin/marketplace.json lebt. Verwenden Sie nicht ../, um Pfade außerhalb des Marktplatz-Root zu referenzieren.
Relative Pfade werden gegen eine lokale Kopie des Marktplatzes aufgelöst, daher funktionieren sie, wenn Benutzer Ihren Marktplatz aus einer Git-Quelle oder einem lokalen Verzeichnis hinzufügen. Wenn Benutzer Ihren Marktplatz über eine direkte URL zur
marketplace.json-Datei hinzufügen, werden relative Pfade nicht aufgelöst, da nur diese Datei heruntergeladen wird. Verwenden Sie für URL-basierte Verteilung stattdessen GitHub-, npm- oder Git-URL-Quellen. Siehe Fehlerbehebung für Details.GitHub-Repositories
Git-Repositories
Git-Unterverzeichnisse
Verwenden Siegit-subdir, um auf ein Plugin zu verweisen, das sich in einem Unterverzeichnis eines Git-Repositories befindet. Claude Code verwendet einen sparsamen, teilweisen Klon, um nur das Unterverzeichnis abzurufen und die Bandbreite für große Monorepos zu minimieren.
url-Feld akzeptiert auch eine GitHub-Kurzform (owner/repo) oder SSH-URLs (git@github.com:owner/repo.git).
npm-Pakete
Plugins, die als npm-Pakete verteilt werden, werden mitnpm install installiert. Dies funktioniert mit jedem Paket in der öffentlichen npm-Registry oder einer privaten Registry, die Ihr Team hostet.
version-Feld hinzu:
registry-Feld hinzu:
Erweiterte Plugin-Einträge
Dieses Beispiel zeigt einen Plugin-Eintrag mit vielen optionalen Feldern, einschließlich benutzerdefinierter Pfade für Befehle, Agents, hooks und MCP-Server:commandsundagents: Sie können mehrere Verzeichnisse oder einzelne Dateien angeben. Pfade sind relativ zum Plugin-Root.${CLAUDE_PLUGIN_ROOT}: Verwenden Sie diese Variable in hooks und MCP-Server-Konfigurationen, um auf Dateien im Installationsverzeichnis des Plugins zu verweisen. Dies ist notwendig, da Plugins beim Installieren an einen Cache-Speicherort kopiert werden.- Siehe die Substitutionstabelle für welche Konfigurationsfelder sie pro Servertyp ersetzen
- Verwenden Sie für Abhängigkeiten oder Status, die Plugin-Updates überstehen sollten, stattdessen
${CLAUDE_PLUGIN_DATA}
strict: false: Da dies auf false gesetzt ist, benötigt das Plugin keine eigeneplugin.json. Der Marktplatz-Eintrag definiert alles. Siehe Strict Mode unten.
skills/-Verzeichnis unter seiner source geladen. Pfade, die im skills-Feld aufgelistet sind, werden zu diesem Scan hinzugefügt:
skills/-Ordner im Marktplatz-Root gemeinsam nutzen (source: "./"), listen Sie stattdessen bestimmte Unterverzeichnisse auf, damit jeder Eintrag nur seine eigenen Skills lädt:
skills/-Ordner werden nicht geladen. Das Auflisten des skills/-Verzeichnisses selbst oder des Plugin-Root behält den vollständigen Scan bei. Wenn keiner der aufgelisteten Pfade existiert, wird stattdessen der Standard-Scan ausgeführt.
Strict Mode
Dasstrict-Feld steuert, ob plugin.json die Autorität für Komponentendefinitionen ist (skills, Agents, hooks, MCP-Server, Ausgabestile).
Wann jeder Modus verwendet werden sollte:
strict: true: Das Plugin hat seine eigeneplugin.jsonund verwaltet seine eigenen Komponenten. Der Marktplatz-Eintrag kann zusätzliche Skills oder hooks hinzufügen. Dies ist der Standard und funktioniert für die meisten Plugins.strict: false: Der Marktplatz-Betreiber möchte vollständige Kontrolle. Das Plugin-Repo stellt Rohdateien bereit, und der Marktplatz-Eintrag definiert, welche dieser Dateien als Skills, Agents, hooks usw. verfügbar gemacht werden. Nützlich, wenn der Marktplatz die Komponenten eines Plugins anders strukturiert oder kuratiert als vom Plugin-Autor beabsichtigt.
Marktplätze hosten und verteilen
Auf GitHub hosten (empfohlen)
GitHub ist die empfohlene Methode zum Hosten und Verteilen eines Marktplatzes:- Repository erstellen: Richten Sie ein neues Repository für Ihren Marktplatz ein
- Marktplatzdatei hinzufügen: Erstellen Sie
.claude-plugin/marketplace.jsonmit Ihren Plugin-Definitionen - Mit Teams teilen: Benutzer fügen Ihren Marktplatz mit
/plugin marketplace add owner/repohinzu
Auf anderen Git-Services hosten
Jeder Git-Hosting-Service funktioniert, wie GitLab, Bitbucket und selbstgehostete Server. Benutzer fügen mit der vollständigen Repository-URL hinzu:Private Repositories
Claude Code unterstützt die Installation von Plugins aus privaten Repositories. Für manuelle Installation und Updates verwendet Claude Code Ihre vorhandenen Git-Credential-Helper, daher funktioniert HTTPS-Zugriff übergh auth login, macOS Keychain oder git-credential-store genauso wie in Ihrem Terminal. SSH-Zugriff funktioniert, solange der Host bereits in Ihrer known_hosts-Datei vorhanden ist und der Schlüssel in ssh-agent geladen ist, da Claude Code interaktive SSH-Eingabeaufforderungen für den Host-Fingerprint und die Schlüsselpassphrase unterdrückt. GitHub owner/repo-Kurzform-Quellen klonen standardmäßig über SSH; legen Sie CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1 fest, um sie stattdessen über HTTPS zu klonen.
Hintergrund-Auto-Updates funktionieren anders. Standardmäßig deaktiviert die Hintergrund-Aktualisierung Git-Credential-Helper für seinen git pull, sodass der Pull sich nicht bei privaten Repositories über HTTPS authentifizieren kann, auch wenn ein Helper konfiguriert ist. SSH-Remotes sind nicht betroffen: Ein in ssh-agent geladener Schlüssel authentifiziert Hintergrund-Pulls genauso wie manuelle Operationen. Wenn der Hintergrund-Pull fehlschlägt, greift Claude Code auf das erneute Klonen des Marktplatzes von Grund auf zurück. Das erneute Klonen verwendet Ihre gespeicherten Git-Anmeldedaten, kann aber bei großen Repositories zeitlich überschritten werden, daher können Auto-Updates für private Marktplätze intermittierend fehlschlagen.
Zwei Einstellungen machen private Marktplätze vorhersehbar:
- Legen Sie
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1fest, um den vorhandenen Klon beizubehalten, wenn der Hintergrund-Pull fehlschlägt, anstatt zu löschen und erneut zu klonen. Ihre Plugins funktionieren weiterhin aus dem letzten synchronisierten Zustand, und manuelle Updates mit/plugin marketplace updateziehen immer noch mit Ihren Anmeldedaten. - Konfigurieren Sie einen Git-Credential-Helper, beispielsweise mit
gh auth setup-gitfür GitHub, damit das erneute Klonen-Fallback sich ohne Eingabeaufforderung authentifizieren kann.
GITHUB_TOKEN in Ihrer Umgebung ermöglicht nicht von selbst die Hintergrund-Authentifizierung. Tokens wirken sich nur durch einen konfigurierten Credential-Helper aus, beispielsweise den Helper der gh CLI, der GH_TOKEN und GITHUB_TOKEN liest.
Um den Hintergrund-Pull selbst über HTTPS zu authentifizieren, konfigurieren Sie ein globales Git-URL-Rewrite. Das Rewrite bettet ein Token in die Remote-URL ein, sodass es wirksam wird, obwohl der Hintergrund-Pull Credential-Helper deaktiviert, und ein erfolgreicher Pull überspringt das erneute Klonen-Fallback. Das folgende Beispiel schreibt die URL des Marktplatz-Repositories um, um ein Zugriffs-Token einzuschließen:
Das Rewrite speichert das Token im Klartext in Ihrer Gitconfig, daher verwenden Sie ein Token mit Nur-Lese-Zugriff auf das Marktplatz-Repository.
Konfigurieren Sie in CI/CD-Umgebungen einen Git-Credential-Helper, bevor Sie Plugins aus privaten Repositories installieren. Auf GitHub Actions exportieren Sie ein Token mit Lesezugriff auf das Marktplatz-Repository als
GH_TOKEN, führen Sie dann gh auth setup-git aus. Das Standard-Workflow-Token kann nur auf das eigene Repository des Workflows zugreifen, daher benötigt ein privater Marktplatz in einem anderen Repository ein persönliches Zugriffs-Token oder App-Token. Ein globales URL-Rewrite, das in der Pipeline konfiguriert ist, authentifiziert auch den Hintergrund-Pull direkt.Lokal vor der Verteilung testen
Testen Sie Ihren Marktplatz lokal, bevor Sie ihn teilen:Marktplätze für Ihr Team erforderlich machen
Sie können Ihr Repository so konfigurieren, dass Teammitglieder automatisch aufgefordert werden, Ihren Marktplatz zu installieren, wenn sie dem Projektordner vertrauen. Fügen Sie Ihren Marktplatz zu.claude/settings.json hinzu:
Wenn Sie eine lokale
directory- oder file-Quelle mit einem relativen Pfad verwenden, wird der Pfad gegen den Haupt-Checkout Ihres Repositories aufgelöst. Wenn Sie Claude Code aus einem Git Worktree ausführen, verweist der Pfad immer noch auf den Haupt-Checkout, sodass alle Worktrees denselben Marktplatz-Speicherort teilen. Der Marktplatz-Status wird einmal pro Benutzer in ~/.claude/plugins/known_marketplaces.json gespeichert, nicht pro Projekt.Plugins für Container vorab ausfüllen
Für Container-Images und CI-Umgebungen können Sie ein Plugins-Verzeichnis zur Build-Zeit vorab ausfüllen, damit Claude Code mit bereits verfügbaren Marktplätzen und Plugins startet, ohne zur Laufzeit etwas zu klonen. Legen Sie die UmgebungsvariableCLAUDE_CODE_PLUGIN_SEED_DIR fest, um auf dieses Verzeichnis zu verweisen.
Um mehrere Seed-Verzeichnisse zu schichten, trennen Sie Pfade mit : auf Unix oder ; auf Windows. Claude Code durchsucht jedes Verzeichnis in der Reihenfolge und verwendet den ersten Seed, der einen bestimmten Marktplatz oder Plugin-Cache enthält.
Das Seed-Verzeichnis spiegelt die Struktur von ~/.claude/plugins:
~/.claude/plugins-Verzeichnis in Ihr Image und verweisen Sie CLAUDE_CODE_PLUGIN_SEED_DIR darauf.
Um den Kopierungsschritt zu überspringen, legen Sie CLAUDE_CODE_PLUGIN_CACHE_DIR während des Builds auf Ihren Ziel-Seed-Pfad fest, damit Plugins direkt dort installiert werden:
CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed in der Laufzeitumgebung Ihres Containers fest, damit Claude Code beim Start aus dem Seed liest.
Beim Start registriert Claude Code Marktplätze, die in der Seed-Datei known_marketplaces.json gefunden werden, in der primären Konfiguration und verwendet Plugin-Caches, die unter cache/ gefunden werden, ohne erneut zu klonen. Dies funktioniert sowohl im interaktiven Modus als auch im nicht-interaktiven Modus mit dem -p-Flag.
Verhaltensdetails:
- Schreibgeschützt: Das Seed-Verzeichnis wird nie geschrieben. Auto-Updates sind für Seed-Marktplätze deaktiviert, da git pull auf einem schreibgeschützten Dateisystem fehlschlagen würde.
- Seed-Einträge haben Vorrang: Marktplätze, die in der Seed deklariert sind, überschreiben alle übereinstimmenden Einträge in der Benutzerkonfiguration bei jedem Start. Um sich von einem Seed-Plugin abzumelden, verwenden Sie
/plugin disable, anstatt den Marktplatz zu entfernen. - Pfadauflösung: Claude Code lokalisiert Marktplatz-Inhalte, indem es
$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/zur Laufzeit durchsucht, nicht indem es Pfaden vertraut, die in der Seed-JSON gespeichert sind. Dies bedeutet, dass die Seed korrekt funktioniert, auch wenn sie an einem anderen Pfad als dort, wo sie erstellt wurde, bereitgestellt wird. - Mutation ist blockiert: Das Ausführen von
/plugin marketplace removeoder/plugin marketplace updategegen einen Seed-verwalteten Marktplatz schlägt mit Anleitung fehl, um Ihren Administrator zu bitten, das Seed-Image zu aktualisieren. - Komponiert mit Einstellungen: Wenn
extraKnownMarketplacesoderenabledPluginseinen Marktplatz deklarieren, der bereits in der Seed vorhanden ist, verwendet Claude Code die Seed-Kopie, anstatt zu klonen.
Verwaltete Marktplatz-Einschränkungen
Für Organisationen, die strikte Kontrolle über Plugin-Quellen benötigen, können Administratoren einschränken, welche Plugin-Marktplätze Benutzer hinzufügen dürfen, indem sie die EinstellungstrictKnownMarketplaces in verwalteten Einstellungen verwenden. Um auch die CLI-Flags abzulehnen, die Plugins, Agenten und MCP-Server für einen einzelnen Durchlauf seitenladen, kombinieren Sie es mit disableSideloadFlags. Um eine Zulassungsliste zu erstellen, welche Plugins von Marktplätzen als kontextuelle Installationsvorschläge angezeigt werden können, legen Sie pluginSuggestionMarketplaces fest.
Wenn strictKnownMarketplaces in verwalteten Einstellungen konfiguriert ist, hängt das Einschränkungsverhalten vom Wert ab:
Häufige Konfigurationen
Deaktivieren Sie alle Marktplatz-Ergänzungen:".*" als pathPattern, um jeden Dateisystempfad zuzulassen und gleichzeitig Netzwerkquellen mit hostPattern zu steuern.
strictKnownMarketplaces schränkt ein, was Benutzer hinzufügen können, registriert aber nicht selbst Marktplätze. Um zulässige Marktplätze automatisch verfügbar zu machen, ohne dass Benutzer /plugin marketplace add ausführen müssen, kombinieren Sie es mit extraKnownMarketplaces in derselben managed-settings.json. Siehe Beide zusammen verwenden.Wie Einschränkungen funktionieren
Einschränkungen werden überprüft, bevor Netzwerk- oder Dateisystemoperationen durchgeführt werden. Die Überprüfung wird beim Hinzufügen von Marktplätzen und beim Installieren, Aktualisieren, Aktualisieren und Auto-Update von Plugins durchgeführt. Wenn ein Marktplatz hinzugefügt wurde, bevor die Richtlinie konfiguriert wurde, und seine Quelle nicht mehr mit der Zulassungsliste übereinstimmt, weigert sich Claude Code, Plugins daraus zu installieren oder zu aktualisieren. Die gleiche Durchsetzung gilt fürblockedMarketplaces.
Die Zulassungsliste verwendet exakten Abgleich für die meisten Quellentypen. Damit ein Marktplatz zulässig ist, müssen alle angegebenen Felder genau übereinstimmen:
- Für GitHub-Quellen:
repoist erforderlich, undrefoderpathmüssen auch übereinstimmen, wenn sie in der Zulassungsliste angegeben sind - Für URL-Quellen: Die vollständige URL muss genau übereinstimmen
- Für
hostPattern-Quellen: Der Marktplatz-Host wird gegen das Regex-Muster abgeglichen - Für
pathPattern-Quellen: Der Dateisystempfad des Marktplatzes wird gegen das Regex-Muster abgeglichen
.git-Suffix oder ssh:// versus https://-Form werden als unterschiedliche Werte behandelt. Wenn Ihr Organisations-Marktplatz durch mehr als eine URL-Form geklont werden kann, bevorzugen Sie einen hostPattern-Eintrag gegenüber einer literalen URL, damit alle Formen übereinstimmen.
Da strictKnownMarketplaces in verwalteten Einstellungen festgelegt ist, können einzelne Benutzer und Projektkonfigurationen diese Einschränkungen nicht überschreiben.
Für vollständige Konfigurationsdetails einschließlich aller unterstützten Quellentypen und Vergleich mit extraKnownMarketplaces siehe die strictKnownMarketplaces-Referenz.
Versionsauflösung und Release-Kanäle
Plugin-Versionen bestimmen Cache-Pfade und Update-Erkennung: Wenn die aufgelöste Version mit dem übereinstimmt, was ein Benutzer bereits hat, überspringen/plugin update und Auto-Update das Plugin.
Claude Code löst die Version eines Plugins aus dem ersten dieser Punkte auf, der festgelegt ist:
versionin derplugin.jsondes Pluginsversionim Marktplatz-Eintrag des Plugins- Der Git-Commit-SHA der Plugin-Quelle
github, url, git-subdir und relative Pfade innerhalb eines Git-gehosteten Marktplatzes können Sie version ganz weglassen und jeder neue Commit wird als neue Version behandelt. Dies ist die einfachste Einrichtung für interne oder aktiv entwickelte Plugins.
Richten Sie Release-Kanäle ein
Um “stabile” und “neueste” Release-Kanäle für Ihre Plugins zu unterstützen, können Sie zwei Marktplätze einrichten, die auf verschiedene Refs oder SHAs desselben Repos verweisen. Sie können dann die beiden Marktplätze verschiedenen Benutzergruppen über verwaltete Einstellungen zuweisen.latest-tools:
Abhängigkeitsversionen anheften
Ein Plugin kann seine Abhängigkeiten auf einen Semver-Bereich beschränken, damit Updates einer Abhängigkeit das abhängige Plugin nicht unterbrechen. Siehe Plugin-Abhängigkeitsversionen einschränken für die{plugin-name}--v{version} Git-Tag-Konvention, Bereichssyntax und wie mehrere Einschränkungen auf die gleiche Abhängigkeit kombiniert werden.
Ein Plugin umbenennen oder entfernen
Dername eines Plugins ist sein stabiler Bezeichner. Benutzer verweisen darauf in enabledPlugins, pluginConfigs und /plugin install-Befehlen, daher bricht das Ändern davon jede vorhandene Installation. Um das in der Benutzeroberfläche angezeigte Label zu ändern, ohne Installationen zu unterbrechen, legen Sie displayName fest und behalten Sie name unverändert.
Wenn Sie den name eines Plugins ändern müssen oder ein Plugin aus dem plugins-Array entfernen, fügen Sie einen Top-Level-renames-Eintrag hinzu, damit bestehende Benutzer migrieren, anstatt einen plugin-not-found-Fehler zu sehen. Automatische Migration erfordert Claude Code v2.1.193 oder später. Ordnen Sie jeden früheren Namen seinem aktuellen Namen zu, oder zu null, wenn das Plugin nicht mehr existiert. Das folgende Beispiel benennt formatter in code-formatter um und verzeichnet, dass legacy-linter entfernt wurde:
renames-Zuordnung:
- Wenn der Eintrag auf einen neuen Namen verweist, lädt Claude Code das Plugin unter seinem neuen Namen und zeigt eine einzeilige Mitteilung wie
Renamed to "code-formatter" in the "acme-tools" marketplacean. Es schreibt dann den alten Schlüssel in den neuen Schlüssel in den Benutzer-, Projekt- und lokalen Einstellungsbereichen für sowohlenabledPluginsals auchpluginConfigsum, sodass die Mitteilung einmal angezeigt wird. - Für einen
null-Eintrag löscht Claude Code den alten Schlüssel und die Mitteilung meldet, dass das Plugin aus dem Marktplatz entfernt wurde. - Wenn das umbenannte Plugin eine Remote-Quelle wie
githubodernpmverwendet, meldet Claude Codeplugin-cache-missnach der Umbenennung und der Benutzer muss/plugin installeinmal ausführen, um es unter dem neuen Namen zu holen.
renames als Nur-Anhängen-Verlauf: Behalten Sie alte Einträge an Ort und Stelle, auch nachdem Sie erwarten, dass jeder Benutzer migriert hat. Claude Code folgt Ketten, daher wenn Sie später code-formatter in formatter-pro umbenennen, fügen Sie einen zweiten Eintrag hinzu, anstatt den ersten zu bearbeiten. Ein Benutzer, der immer noch das Original formatter aktiviert hat, löst sich dann durch beide Einträge zu formatter-pro auf.
Führen Sie claude plugin validate . nach dem Bearbeiten der Zuordnung aus; es lehnt jeden Eintrag ab, dessen Kette einen Zyklus bildet oder nicht bei null oder einem Namen in plugins endet.
Verwaltete und Richtlinieneinstellungen sind schreibgeschützt für Claude Code, daher können dort aktivierte Plugins nicht automatisch umgeschrieben werden. Das umbenannte Plugin wird weiterhin jede Sitzung geladen, aber die Umbenennungsmitteilung wiederholt sich, bis ein Administrator
enabledPlugins in der verwalteten Einstellungsdatei aktualisiert, um den neuen Namen zu verwenden. Das gleiche gilt für Plugins, die über andere schreibgeschützte Quellen wie --add-dir aktiviert werden.renames-Feld und melden plugin-not-found für den alten Namen.
Validierung und Tests
Testen Sie Ihren Marktplatz vor dem Teilen. Validieren Sie Ihre Marktplatz-JSON-Syntax:Verwalten Sie Marktplätze über die CLI
Claude Code bietet nicht-interaktiveclaude plugin marketplace Unterbefehle zum Scripting und zur Automatisierung. Diese entsprechen den /plugin marketplace Befehlen, die in einer interaktiven Sitzung verfügbar sind.
Plugin marketplace add
Fügen Sie einen Marktplatz aus einem GitHub-Repository, einer Git-URL, einer Remote-URL oder einem lokalen Pfad hinzu.<source>: GitHubowner/repoKurzform, Git-URL, Remote-URL zu einermarketplace.json-Datei oder lokaler Verzeichnispfad. Um an einen Branch oder Tag anzuheften, fügen Sie@refzur GitHub-Kurzform oder#refzu einer Git-URL hinzu
gitlab.example.com/team/plugins, als ungültige owner/repo Kurzform abgelehnt und die Fehlermeldung teilt Ihnen mit, dass Sie https:// hinzufügen oder ./ für einen lokalen Pfad verwenden sollen. Frühere Versionen lasen es als GitHub-Repository-Pfad fehl und schlagen beim Klonen mit einem GitHub-Fehler fehl.
Optionen:
Fügen Sie einen Marktplatz aus GitHub mit
owner/repo Kurzform hinzu:
@ref an:
marketplace.json-Datei direkt bereitstellt:
.claude/settings.json geteilt wird:
Plugin marketplace list
Listet alle konfigurierten Marktplätze auf.
Mit
--json enthält jeder Eintrag name, source und quellenspezifische Felder: repo für GitHub-Quellen, url für Git- und URL-Quellen und path für lokale Quellen. GitHub- und Git-Quellen enthalten auch ein ref-Feld, wenn der Marktplatz mit einem angehefteten Branch oder Tag hinzugefügt wurde.
Plugin marketplace remove
Entfernen Sie einen konfigurierten Marktplatz. Der Aliasrm wird auch akzeptiert.
<name>: Marktplatz-Name zum Entfernen, wie vonclaude plugin marketplace listangezeigt. Dies ist dernameausmarketplace.json, nicht die Quelle, die Sie anaddübergeben haben
Plugin marketplace update
Aktualisieren Sie Marktplätze von ihren Quellen, um neue Plugins und Versionsänderungen abzurufen. Ein Marktplatz, der mit einem Branch oder Tagref hinzugefügt wurde, wird auf den neuesten Commit dieses Refs aktualisiert, nicht auf den Standard-Branch des Repositorys.
[name]: Marktplatz-Name zum Aktualisieren, wie vonclaude plugin marketplace listangezeigt. Aktualisiert alle Marktplätze, wenn weggelassen
remove als auch update schlagen fehl, wenn sie gegen einen Seed-verwalteten Marktplatz ausgeführt werden, der schreibgeschützt ist. Beim Aktualisieren aller Marktplätze werden Seed-verwaltete Einträge übersprungen und andere Marktplätze werden weiterhin aktualisiert. Um Seed-bereitgestellte Plugins zu ändern, bitten Sie Ihren Administrator, das Seed-Image zu aktualisieren. Siehe Plugins für Container vorab ausfüllen.
Fehlerbehebung
Marktplatz wird nicht geladen
Symptome: Kann Marktplatz nicht hinzufügen oder Plugins von ihm nicht sehen Lösungen:- Überprüfen Sie, dass die Marktplatz-URL erreichbar ist
- Überprüfen Sie, dass
.claude-plugin/marketplace.jsonim angegebenen Pfad vorhanden ist - Stellen Sie sicher, dass die JSON-Syntax gültig ist, indem Sie
claude plugin validateoder/plugin validateverwenden. Um Skill-, Agent- und Befehl-Frontmatter zu überprüfen, führen Sie den Befehl für jedes Plugin-Verzeichnis aus - Bestätigen Sie für private Repositories, dass Sie Zugriffsberechtigung haben
Marktplatz-Validierungsfehler
Führen Sieclaude plugin validate . oder /plugin validate . aus Ihrem Marktplatz-Verzeichnis aus, um auf Probleme zu überprüfen. Wenn der Validator auf ein Marktplatz-Verzeichnis verweist, überprüft er marketplace.json auf Schema-Fehler, doppelte Plugin-Namen und Quellpfad-Traversal. Für jeden Eintrag, dessen source ein lokaler Pfad ist, validiert er auch die plugin.json dieses Plugins und warnt, wenn die version des Eintrags nicht mit der in plugin.json übereinstimmt. Probleme, die in der plugin.json eines Plugins gefunden werden, werden mit dem Eintrag-Index in der Form plugins[2] plugin.json → vorangestellt.
Ab Claude Code v2.1.196 umfasst die Pro-Eintrag-Überprüfung auch:
- Plugins, deren
source.ist - wird ausgeführt, wenn
marketplace.jsonaußerhalb eines.claude-plugin-Verzeichnisses liegt, wobei Quellen gegen das Verzeichnis der Datei selbst aufgelöst werden - meldet die Probleme jedes Eintrags, auch wenn ein anderer Teil der Datei Schema-Fehler hat
.claude-plugin/marketplace.json ab.
Um die plugin.json eines einzelnen Plugins und seine Skill-, Agent-, Befehl- und Hook-Dateien zu validieren, führen Sie den Befehl für das Plugin-Verzeichnis selbst aus, zum Beispiel claude plugin validate ./plugins/my-plugin. Häufige Fehler:
Warnungen (nicht blockierend):
Marketplace has no plugins defined: Fügen Sie mindestens ein Plugin zumplugins-Array hinzuNo marketplace description provided: Fügen Sie eine Top-Level-descriptionhinzu, um Benutzern zu helfen, Ihren Marktplatz zu verstehenPlugin name "x" is not kebab-case: Der Plugin-Name enthält Großbuchstaben, Leerzeichen oder Sonderzeichen. Benennen Sie in Kleinbuchstaben, Ziffern und Bindestriche um (z. B.my-plugin). Claude Code akzeptiert andere Formen, aber die Claude.ai-Marktplatz-Synchronisierung lehnt sie ab.
Plugin-Installationsfehler
Symptome: Marktplatz wird angezeigt, aber Plugin-Installation schlägt fehl Lösungen:- Überprüfen Sie, dass Plugin-Quell-URLs erreichbar sind
- Überprüfen Sie, dass Plugin-Verzeichnisse erforderliche Dateien enthalten
- Überprüfen Sie für GitHub-Quellen, dass Repositories öffentlich sind oder Sie Zugriff haben
- Testen Sie Plugin-Quellen manuell durch Klonen/Herunterladen
- Wenn die Quelle sowohl
refals auchshafestlegt, blockiert ein gelöschter Upstream-Branch oder Tag die Installation nicht auf den meisten Git-Hosts, einschließlich GitHub, GitLab und Bitbucket. Auf Servern, die das Abrufen von Commits nach SHA nicht unterstützen, wie AWS CodeCommit, muss dierefimmer noch vorhanden sein und der angeheftete Commit muss von ihr erreichbar sein. Wenn die Installation immer noch fehlschlägt, bestätigen Sie, dass der angeheftete Commit immer noch im Repository vorhanden ist
Authentifizierung für private Repositories schlägt fehl
Symptome: Authentifizierungsfehler beim Installieren von Plugins aus privaten Repositories Lösungen: Für manuelle Installation und Updates:- Überprüfen Sie, dass Sie bei Ihrem Git-Anbieter authentifiziert sind (führen Sie z. B.
gh auth statusfür GitHub aus) - Überprüfen Sie, dass Ihr Credential-Helper korrekt konfiguriert ist:
git config --global credential.helper - Versuchen Sie, das Repository manuell zu klonen, um zu überprüfen, dass Ihre Anmeldedaten funktionieren
- Standardmäßig deaktivieren Hintergrund-Aktualisierungen Git-Credential-Helper für den Pull, sodass der Pull nicht über HTTPS authentifizieren kann. SSH-Remotes mit einem in
ssh-agentgeladenen Schlüssel authentifizieren sich immer noch. Ein fehlgeschlagener Pull löst ein erneutes Klonen von Grund auf aus, das Ihre gespeicherten Anmeldedaten verwendet, aber bei großen Repositories möglicherweise zeitüberschreitet - Legen Sie
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1fest, um den vorhandenen Klon beizubehalten, wenn der Hintergrund-Pull fehlschlägt - Konfigurieren Sie einen Git-Credential-Helper, z. B.
gh auth setup-git, damit das Fallback-Neuklon authentifizieren kann - Wenn das Neuklon bei einem großen Repository zeitüberschreitet, erhöhen Sie das Limit mit
CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS - Konfigurieren Sie ein Git-URL-Rewrite mit Bereich auf das Marktplatz-Repository, damit der Hintergrund-Pull direkt authentifiziert
- Oder aktualisieren Sie private Marktplätze manuell mit
/plugin marketplace update <name>, das Ihre Anmeldedaten verwendet
Marktplatz-Updates schlagen in Offline-Umgebungen fehl
Symptome: Marktplatzgit pull schlägt im Hintergrund fehl und Claude Code versucht wiederholt ein erneutes Klonen, das nicht erfolgreich sein kann.
Ursache: Standardmäßig versucht Claude Code ein erneutes Klonen von Grund auf, wenn ein git pull fehlschlägt. In Offline- oder Airgapped-Umgebungen schlägt das erneute Klonen auf die gleiche Weise fehl, und die Wiederherstellung des vorherigen Cache danach ist Best-Effort. Die Aktualisierung wird im Hintergrund nach dem Start ausgeführt, sodass sie den Start nicht verzögert, aber jede Sitzung wiederholt die fehlgeschlagenen Versuche und jede Git-Operation kann das 120-Sekunden-Timeout abwarten.
Lösung: Legen Sie CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1 fest, um den Neuklon-Versuch zu überspringen und den vorhandenen Cache beizubehalten, wenn der Pull fehlschlägt:
git pull-Fehler bei und verwendet weiterhin den letzten bekannten guten Status. Verwenden Sie für vollständig Offline-Bereitstellungen, bei denen das Repository nie erreichbar sein wird, stattdessen CLAUDE_CODE_PLUGIN_SEED_DIR, um das Plugins-Verzeichnis zur Build-Zeit vorab auszufüllen.
Git-Operationen zeitüberschreitung
Symptome: Plugin-Installation oder Marktplatz-Updates schlagen mit einem Timeout-Fehler fehl, wie “Git clone timed out after 120s” oder “Git pull timed out after 120s”. Ursache: Claude Code verwendet ein 120-Sekunden-Timeout für alle Git-Operationen, einschließlich Klonen von Plugin-Repositories und Abrufen von Marktplatz-Updates. Große Repositories oder langsame Netzwerkverbindungen können dieses Limit überschreiten. Lösung: Erhöhen Sie das Timeout mit der UmgebungsvariableCLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS. Der Wert ist in Millisekunden:
Plugins mit relativen Pfaden schlagen in URL-basierten Marktplätzen fehl
Symptome: Einen Marktplatz über URL hinzugefügt (z. B.https://example.com/marketplace.json), aber Plugins mit relativen Pfadquellen wie "./plugins/my-plugin" schlagen mit “path not found”-Fehlern fehl.
Ursache: URL-basierte Marktplätze laden nur die marketplace.json-Datei selbst herunter. Sie laden keine Plugin-Dateien vom Server herunter. Relative Pfade im Marktplatz-Eintrag verweisen auf Dateien auf dem Remote-Server, die nicht heruntergeladen wurden.
Lösungen:
- Verwenden Sie externe Quellen: Ändern Sie Plugin-Einträge, um stattdessen GitHub-, npm- oder Git-URL-Quellen zu verwenden:
- Verwenden Sie einen Git-basierten Marktplatz: Hosten Sie Ihren Marktplatz in einem Git-Repository und fügen Sie ihn mit der Git-URL hinzu. Git-basierte Marktplätze klonen das gesamte Repository, wodurch relative Pfade funktionieren.
Dateien nicht gefunden nach Installation
Symptome: Plugin wird installiert, aber Verweise auf Dateien schlagen fehl, besonders Dateien außerhalb des Plugin-Verzeichnisses Ursache: Plugins werden in ein Cache-Verzeichnis kopiert, anstatt an Ort und Stelle verwendet zu werden. Pfade, die auf Dateien außerhalb des Plugin-Verzeichnisses verweisen (wie../shared-utils), funktionieren nicht, da diese Dateien nicht kopiert werden.
Lösungen: Siehe Plugin-Caching und Dateiauflösung für Workarounds, einschließlich Symlinks und Verzeichnisumstrukturierung.
Für zusätzliche Debugging-Tools und häufige Probleme siehe Debugging- und Entwicklungstools.
Siehe auch
- Entdecken und Installieren vorgefertigter Plugins - Installieren von Plugins aus vorhandenen Marktplätzen
- Plugins - Erstellen Ihrer eigenen Plugins
- Plugins-Referenz - Vollständige technische Spezifikationen und Schemas
- Plugin-Einstellungen - Plugin-Konfigurationsoptionen
- strictKnownMarketplaces-Referenz - Verwaltete Marktplatz-Einschränkungen