marketplace.json ist die Datei, die einen Plugin-Marketplace definiert. Sie enthält den Namen des Marketplace, seinen Besitzer und einen Eintrag pro Plugin. Die Plugin-Quelle jedes Eintrags gibt an, woher Claude Code dieses Plugin abruft.
Eine Marketplace-Quelle ist ein separates Objekt, das angibt, woher Claude Code die Marketplace-Datei selbst abruft. Sie schreiben eine in den Einstellungen, oder Claude Code erstellt eine, wenn Sie claude plugin marketplace add ausführen.
Diese Referenz ist für Marketplace-Betreuer, die einen genauen Feldnamen oder -wert benötigen, und für Administratoren, die wissen müssen, welche source-Werte in extraKnownMarketplaces, strictKnownMarketplaces und blockedMarketplaces gültig sind.
Diese Fälle werden auf anderen Seiten behandelt:
- Erstellen oder Hosten eines Marketplace: siehe Marketplace erstellen und Marketplace hosten und verwalten
- Allowlist- und Blocklist-Rezepte: siehe Plugins für Ihre Organisation verwalten
- Die Marketplace-Datei: Top-Level-Felder und Plugin-Einträge
- Die
sourceeines Eintrags: Plugin-Quellen - Ein
source-Objekt in Einstellungen: Marketplace-Quellen - Ausgabe von
claude plugin validate <path>: Validierungsmeldungen, die jede Meldung dem Feld zuordnet, das sie benennt
Marketplace-Datei
Speichern Sie die Marketplace-Datei unter.claude-plugin/marketplace.json im Verzeichnis Ihres Marketplace. Wenn Sie die Datei an einer anderen Stelle im Repository speichern, müssen Benutzer den Marketplace in extraKnownMarketplaces mit path in seiner Quelle deklarieren, da claude plugin marketplace add keine Option dafür hat.
Das Verzeichnis, das .claude-plugin/ enthält, wird als Marketplace-Root bezeichnet, und jede relative Plugin-Quelle wird von dort aus aufgelöst, nicht von .claude-plugin/.
Jeder Benutzer registriert einen Marketplace pro name, daher kann ein Benutzer nicht zwei Marketplaces mit demselben Namen gleichzeitig registriert haben.
Claude Code ignoriert einen unbekannten Top-Level-Schlüssel oder Plugin-Eintrag-Schlüssel, anstatt ihn abzulehnen, daher wird ein Tippfehler stillschweigend geladen. claude plugin validate meldet jeden unbekannten Schlüssel als Warnung.
Reservierte Namen
Sie können Ihrem Marketplace keinen der folgenden Namen geben:- Offizielle Marketplace-Namen:
claude-code-marketplace,claude-code-plugins,claude-plugins-official,anthropic-marketplace,anthropic-plugins,agent-skills,anthropic-agent-skills,life-sciences,knowledge-work-plugins,claude-for-legal,claude-for-financial-services,financial-services-plugins,first-party-pluginsundclaude-tag-plugins. Reserviert, es sei denn, der Marketplace stammt von einergithub- odergit-Marketplace-Quelle untergithub.com/anthropics/. - Community-Marketplace-Namen:
claude-community,claude-plugins-communityundhealthcare. Reserviert nach der gleichen Regel wie die offiziellen Namen. - Plugin-Verzeichnisnamen:
anthropic-plugin-directoryundclaude-plugin-directory. Reserviert nach der gleichen Regel wie die offiziellen Namen. - Namen, die einen offiziellen Marketplace imitieren: Namen wie
official-claude-pluginsoderclaude-plugins-v2und jeder Name, der ein Nicht-ASCII-Zeichen enthält. Der Fehler istMarketplace name impersonates an official Anthropic/Claude marketplace. Ein Steuerzeichen oder bidirektionales Formatierungszeichen in einem Namen meldet auchMarketplace name cannot contain control or bidirectional-formatting characters. - Eine andere Schreibweise eines reservierten Namens: ein Name, der sich von einem reservierten Namen nur durch einen nachgestellten Punkt oder durch ein Symbol anstelle eines Bindestrichs unterscheidet, daher zählt
claude.code.pluginsalsclaude-code-plugins.claude plugin validateakzeptiert einen solchen Namen; das Hinzufügen des Marketplace schlägt mitis another spelling of "<reserved>", a reserved marketplace namefehl, und ein bereits unter einem registrierter Marketplace wird nicht mehr geladen. Diese Überprüfung erfordert Claude Code v2.1.280 oder später. - Namen, die Claude Code für Plugins verwendet, die nicht von einem Marketplace stammen:
inlinefür Plugins, die mit--plugin-dirgeladen werden,builtinfür integrierte Plugins,skills-dirfür Plugins, die automatisch von.claude/skills/geladen werden, undsyncedfür Plugins, die von Ihrem claude.ai-Konto synchronisiert werden.claude-plugin-testist ebenfalls reserviert.skills-direrscheint auch als{"source": "skills-dir"}instrictKnownMarketplacesundblockedMarketplaces, beschrieben unter Quellwerte, die nur in Richtlinienlisten gültig sind. npm,pip,uv,cargo,githubundgh: reserviert in jeder Schreibweise. Diese Überprüfung erfordert Claude Code v2.1.275 oder später.- Namen, die mit
claudeai-beginnen: reserviert für Marketplaces, die auf claude.ai gehostet werden.claude plugin marketplace addlehnt jeden anderen Marketplace ab, der einen mitCannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.aiverwendet.
Top-Level-Felder
Die Tabelle listet jeden Schlüssel auf, den Claude Code ausmarketplace.json liest. name, owner und plugins sind erforderlich.
Plugin-Einträge
Jedes Objekt im Top-Level-Arrayplugins von marketplace.json benennt ein Plugin und gibt an, woher es abgerufen werden soll. name und source sind erforderlich.
Ein Eintrag akzeptiert auch jedes plugin.json-Feld, wie description, version, author, commands und hooks. Für den Fall, dass diese Felder gelten, siehe Wie ein Eintrag mit plugin.json kombiniert wird.
Die Tabelle listet die eigenen Felder des Eintrags und die Manifest-Felder auf, deren Bedeutung sich in einem Eintrag ändert.
Wie ein Eintrag mit plugin.json kombiniert wird
Die Felder des Eintrags gelten unterschiedlich für ein abgerufenes Plugin, das seine eigene.claude-plugin/plugin.json hat, und für eines, das nicht:
- Keine
plugin.json: Der Eintrag ist das Manifest unabhängig vonstrict. Jedes Manifest-Feld im Eintrag gilt, einschließlichmcpServers,lspServers,userConfigundchannels. plugin.jsonvorhanden:plugin.jsonist das Manifest. Der Strict-Modus entscheidet, ob die sechs Komponentenfelder des Eintrags,commands,agents,skills,hooks,outputStylesundthemes, damit kombiniert oder als Konflikt abgelehnt werden. EintragmcpServers,lspServers,userConfigundchannelsgelten nicht. Deklarieren Sie sie inplugin.json.
Hooks in einem Eintrag
Schreiben Sie Eintraghooks als ein Inline-Objekt, das Hook-Ereignisnamen auf Matcher-Arrays abbildet. Wenn Sie einen Dateipfad oder ein Array schreiben, besteht claude plugin validate. Diese Hooks werden nie ausgeführt, und Claude Code meldet einen not yet supported in a marketplace entry-Fehler für das Plugin. Legen Sie dateibasierte Hooks in die hooks/hooks.json oder plugin.json des Plugins selbst.
Anzeigefelder
Sowohl der Eintrag als auch die eigeneplugin.json des Plugins können die Anzeigefelder displayName, description, author, homepage, repository, license und keywords setzen. Benutzer sehen diese Werte in Plugin-Auflistungen und Details vor und nach der Installation:
- Für ein Feld, das Sie auf dem Eintrag setzen, sehen Benutzer den Wert des Eintrags, auch wenn
plugin.jsoneinen anderen setzt. - Für ein Feld, das der Eintrag nicht setzt, sehen Benutzer den
plugin.json-Wert.
plugin.json nur für Einträge mit einer relativen Pfad-Quelle lesen, deren Plugin-Dateien sich im Marketplace selbst befinden. Für einen Eintrag mit einem anderen Quelltyp sehen Benutzer nur die eigenen Felder des Eintrags, bis sie das Plugin installieren.
Strict-Modus
strict entscheidet, was passiert, wenn das abgerufene Plugin seine eigene plugin.json hat und der Eintrag auch eines der Komponentenfelder deklariert: commands, agents, skills, hooks, outputStyles oder themes. Mit strict: true, dem Standard, hängt Claude Code die Komponentenfelder des Eintrags an plugin.json an, außer hooks, dessen Matcher die des Manifest pro Ereignis ersetzen. Mit strict: false ist ein Eintrag, der ein Komponentenfeld deklariert, ein Konflikt, und das Plugin wird nicht geladen. Die Tabelle zeigt jede Kombination von strict, plugin.json und den Komponentenfeldern des Eintrags.
Plugin-Quellen
Diesource eines Plugin-Eintrags gibt an, woher Claude Code dieses eine Plugin abruft. Es ist entweder eine relative Pfad-Zeichenfolge oder ein Objekt, dessen eigener source-Schlüssel den Typ benennt, daher sieht ein Eintrag wie "source": { "source": "github", "repo": "your-org/formatter" } aus.
Die Tabelle listet jeden Plugin-Quelltyp und seine Felder auf.
Die Namen
url und github sind auch Marketplace-Quell-Typen, wobei url einen direkten Link zu einer marketplace.json-Datei anstelle eines Git-Repository bedeutet. git existiert nur als Marketplace-Quelle, und npm existiert als beides. git-subdir, archive und command existieren nur als Plugin-Quellen.
Verwenden Sie einen relativen Pfad für ein Plugin in einem Unterverzeichnis des Marketplace-Repository selbst. Verwenden Sie git-subdir für ein Unterverzeichnis eines anderen Repository.
github, url und git-subdir-Quellen teilen die Felder ref und sha:
ref: ein Branch oder Tag. Standardmäßig der Standard-Branch des Repository.sha: eine vollständige 40-stellige Kleinbuchstaben-Commit-SHA. Wenn Sie sowohlrefals auchshasetzen, checkt Claude Codeshaaus. 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 vonrefbenannt wird, seitdem upstream gelöscht wurde, solange der Commit noch vom Repository erreichbar ist. Einige Server, wie AWS CodeCommit, unterstützen das Abrufen von Commits nach SHA nicht. Auf diesen Servern mussrefnoch existieren und der angeheftete Commit muss von ihm erreichbar sein.
Relative Pfad-Plugin-Quelle
Der Pfad wird vom Marketplace-Root aufgelöst../plugins/formatter ist <root>/plugins/formatter, obwohl sich die Marketplace-Datei in <root>/.claude-plugin/ befindet.
Ein Pfad, der .. enthält, schlägt die Validierung fehl. Auf macOS und Linux lehnt Claude Code einen Eintragspfad ab, der irgendwo nach dem führenden ./ einen Backslash enthält, daher schreiben Sie den Pfad mit Schrägstrichen.
github,git,fileunddirectory: Claude Code hat die Dateien des Marketplace.url: Claude Code ruft nurmarketplace.jsonab, daher können sich relative Pfade nicht auflösen. Geben Sie jedem Plugin stattdessen eine Objekt-Quelle, wiegithubodergit-subdir.settings: relative Pfade werden sofort abgelehnt.
Bare Names unter pluginRoot
Ein bare Name ist ein einzelner Verzeichnisname ohne/, wie "formatter". Um bare Names anstelle von ./-Pfaden zu schreiben, setzen Sie metadata.pluginRoot auf das Verzeichnis, unter dem sie sich auflösen. Mit "pluginRoot": "./plugins" wird "source": "formatter" zu ./plugins/formatter aufgelöst. Erfordert Claude Code v2.1.239 oder später.
metadata.pluginRoot hat diese Grenzen:
- Es muss selbst ein relativer Pfad im Marketplace sein.
- Es hat keine Auswirkung auf eine Quelle, die bereits mit
./beginnt. - Eine Quelle, die ein
/enthält, wieteam-a/formatter, ist kein bare Name und benötigt immer noch das./-Präfix, auch wennmetadata.pluginRootgesetzt ist.
github Plugin-Quelle
repo nimmt owner/repo. ref und sha sind optional.
url Plugin-Quelle
url ist eine vollständige Git-URL: https://, http://, file:// oder git@. Ein .git-Suffix ist nicht erforderlich, daher funktionieren Azure DevOps- und AWS CodeCommit-URLs wie geschrieben. Dieser Typ nimmt keine owner/repo-Kurzform.
git-subdir Plugin-Quelle
url akzeptiert eine vollständige Git-URL oder GitHub owner/repo-Kurzform. path ist das Unterverzeichnis, das das Plugin enthält, und Claude Code lädt nur dieses Unterverzeichnis herunter.
npm Plugin-Quelle
Einenpm-Quelle nimmt diese Felder:
package: ein Paketname oder ein scoped Name wie@your-org/formatterversion: eine Version oder ein Bereichregistry: eine Registry-URL für ein Paket, das nicht in der Standard-Registry ist
preinstall oder postinstall, werden nie ausgeführt, und seine Abhängigkeiten werden während des Abrufs nicht installiert. Wenn das Paket eine unterstützte Lockdatei neben seiner package.json hat, installiert Claude Code diese Node.js-Paketabhängigkeiten in einem separaten Schritt, auch mit deaktivierten Skripten.
archive Plugin-Quelle
url muss https:// verwenden und kann nicht auf einen Loopback-, Link-Local- oder Cloud-Metadaten-Host verweisen.
Der Plugin-Root kann sich oben im Zip oder ein Verzeichnis darunter befinden.
sha256 ist der Digest des Archivs als 64 Hex-Zeichen, Großbuchstaben oder Kleinbuchstaben. Wenn Sie ihn setzen, lehnt Claude Code einen Download ab, der nicht übereinstimmt.
command Plugin-Quelle
Verwenden Sie einecommand-Quelle, wenn ein auf der Maschine des Benutzers installiertes Tool das Plugin-Verzeichnis erzeugt, wie eine IDE, die ihr Plugin für die Toolchain rendert, die der Benutzer ausgewählt hat. Claude Code führt den Befehl aus, wenn der Benutzer das Plugin installiert oder aktualisiert, und erneut einmal pro Sitzung, daher erhalten Benutzer die geänderte Ausgabe des Tools ohne Neuinstallation.
Eine command-Quelle nimmt diese Felder:
command: ein Shell-Befehl, der den absoluten Pfad des Plugin-Verzeichnisses als eine Zeile druckt und mit 0 beendet. Claude Code zeigt Benutzern die ganze Zeichenfolge zur Überprüfung an, bevor sie ausgeführt wird. Schreiben Sie sie als druckbares ASCII, höchstens 500 Zeichen, ohne vier oder mehr Leerzeichen hintereinander.timeout: eine ganze Zahl von Sekunden von 1 bis 600. Standardmäßig 60.mode:copy, der Standard, oderlink. Siehe Copy-Modus und Link-Modus.
disableCommandPluginSources aus.
Was der Befehl tun muss
Schreiben Sie den Befehl, um diese Anforderungen zu erfüllen:- Shell und Arbeitsverzeichnis: Claude Code führt den Befehl durch
shoder auf Windows durchcmd.exeaus dem Home-Verzeichnis des Benutzers aus. Geben Sie einen absoluten Pfad oder einen Befehl aufPATHan. - Ausgabe: drucken Sie genau eine Zeile auf stdout, den absoluten Pfad des Plugin-Verzeichnisses, und beenden Sie mit 0 innerhalb von
timeoutSekunden. - Verzeichnisinhalte: das Verzeichnis enthält das vollständige Plugin, wenn der Befehl beendet wird. Der Pfad kann sich von Lauf zu Lauf unterscheiden.
Ausgabe, die die Installation oder Aktualisierung fehlschlagen lässt
Die Installation oder Aktualisierung schlägt fehl, wenn der Befehl mit Nicht-Null beendet wird, länger alstimeout läuft oder etwas anderes als einen absoluten Pfad druckt. Es schlägt auch fehl, wenn das gedruckte Verzeichnis eines dieser ist:
- Kein Plugin-Inhalt: das gedruckte Verzeichnis hat keinen Plugin-Inhalt auf seiner obersten Ebene, wie ein
.claude-plugin/-Verzeichnis oder einskills/-,commands/-,agents/- oderhooks/-Verzeichnis. - Das Verzeichnis der Sitzung selbst: das gedruckte Verzeichnis ist das, in dem Claude Code gestartet wurde, oder eines seiner übergeordneten Verzeichnisse.
- Ein Netzwerkpfad: auf Windows ist der gedruckte Pfad ein UNC-Pfad.
- Zu groß zum Kopieren: im Copy-Modus ist das Verzeichnis größer als 256 MiB oder hat mehr als 20.000 Einträge.
Copy-Modus und Link-Modus
mode entscheidet, ob Claude Code das gedruckte Verzeichnis kopiert oder es an Ort und Stelle verwendet:
copy: Claude Code kopiert das Verzeichnis in den Plugin-Cache und leitet die Plugin-Version von einem Hash der kopierten Dateien ab. Ihr Tool kann das Verzeichnis nach dem Beenden des Befehls löschen oder umschreiben. Ein erneuter Lauf, der identische Dateien erzeugt, zählt als aktuell.link: Claude Code füllt den Cache-Eintrag des Plugins mit einem Link zu jedem Top-Level-Eintrag des gedruckten Verzeichnisses und lädt die Dateien an Ort und Stelle. Nichts wird kopiert, Dateiinhalte werden nicht gehasht, und die Größenlimits gelten nicht. Verwenden Sie es für ein Verzeichnis, das zu groß zum Kopieren ist, wie einen gerenderten SDK-Export.
- Halten Sie das Verzeichnis an Ort und Stelle: Claude Code lädt das Plugin bei jedem Start durch die Links, daher muss das gedruckte Verzeichnis bleiben, wo es ist, solange das Plugin installiert bleibt.
- Drucken Sie einen anderen Pfad, um neuen Inhalt zu signalisieren: die Version kommt vom echten Pfad des gedruckten Verzeichnisses und seinen Top-Level-Einträgen, nicht von den Dateien darin.
- Halten Sie Top-Level-Symlinks im Verzeichnis: die Installation schlägt fehl, wenn ein Top-Level-Eintrag ein Symlink ist, der außerhalb des gedruckten Verzeichnisses verweist.
- Schließen Sie
node_modulesein: Claude Code überspringt die Node.js-Paketabhängigkeitsinstallation für ein Link-Modus-Plugin, daher drucken Sie ein Verzeichnis, das bereits die Pakete enthält, die das Plugin benötigt. - Sitzungen, die im Verzeichnis gestartet werden: eine Sitzung, die im gedruckten Verzeichnis oder irgendwo darunter gestartet wird, lädt das Plugin nicht.
- Nicht auf Windows: Claude Code lehnt die Installation eines Link-Modus-Plugins auf Windows ab. Deklarieren Sie
"mode": "copy"dort.
Marketplace-Quellen
Eine Marketplace-Quelle gibt an, woher Claude Code einemarketplace.json abruft. Die CLI erstellt eine für Sie, wenn Sie einen Marketplace hinzufügen, und Sie schreiben eine selbst in Einstellungen:
claude plugin marketplace add: Claude Code erstellt die Quelle aus der Zeichenfolge, die Sie übergeben.extraKnownMarketplaces: Sie schreiben die Quelle selbst als dassource-Objekt.strictKnownMarketplacesundblockedMarketplaces: Administratoren schreiben Quellen in diese zwei Richtlinienlisten.strictKnownMarketplacesist die Allowlist undblockedMarketplacesist die Blocklist.
url, git und github bedeuten etwas anderes in einer Marketplace-Quelle als in einer Plugin-Quelle:
Die Tabelle listet jeden Marketplace-Quelltyp mit seinen Feldern, der
claude plugin marketplace add-Eingabe, die ihn erzeugt, und was er in jedem der drei Einstellungsschlüssel tut.
Felder nach Typ
Die Tabelle listet jedes Marketplace-Quellfeld auf, das einen Standard, eine Einschränkung oder eine typspezifische Bedeutung hat.Quellwerte, die nur in Richtlinienlisten gültig sind
hostPattern, pathPattern, skills-dir und die owner/*-Form von repo sind nur in den zwei Richtlinienlisten gültig, strictKnownMarketplaces und blockedMarketplaces:
hostPatternundpathPattern: reguläre Ausdrücke, die Claude Code gegen eine Quelle testet, bevor er von ihr abruft.skills-dir: keine Quelle. Wenn SiestrictKnownMarketplacesüberhaupt setzen, Skills-Verzeichnis-Plugins stoppen das Laden, bis Sie{"source": "skills-dir"}zu dieser Liste hinzufügen.owner/*: als eingithubrepo-Wert passt jedes Repository unter genau diesem GitHub-Besitzer. Erfordert Claude Code v2.1.223 oder später.
ref-Semantik und Rezepte, siehe Plugins für Ihre Organisation verwalten.
Quellobjekte in Einstellungen
EinextraKnownMarketplaces-Wert ist eine Zuordnung vom Marketplace-Namen zu einem Objekt mit source. Dieser Eintrag registriert einen Marketplace aus einem Git-Repository bei seinem main-Branch:
strictKnownMarketplaces und blockedMarketplaces sind Arrays von Quellobjekten. Diese Allowlist lässt einen GitHub-Besitzer und einen internen Host zu:
Validierungsmeldungen
claude plugin validate <path> nimmt den Marketplace-Root oder die Marketplace-Datei selbst. Es druckt Fehler und Warnungen. Für Exit-Codes und --strict, siehe plugin validate.
Eine Meldung benennt einen Plugin-Eintrag nach seinem Index, geschrieben als plugins.1.source oder plugins[1].source.
Eine Meldung mit dem Präfix eines Eintrag-Index und plugin.json →, wie plugins[2] plugin.json →, ist über die eigenen Dateien dieses Plugins. claude plugin validate meldet Fehler listet diese Meldungen mit ihren Fixes auf.
Warnungen, die Claude Desktop-Flaggennamen erwähnen, die Claude Code akzeptiert, aber Claude Desktop ablehnt, weil Claude Desktop strengere Namenregeln hat.
Die Tabelle ordnet Marketplace-Level-Meldungen dem Feld zu, das jede betrifft.
Ungültige Eingabe auf einer Quelle
Invalid input auf einer source bedeutet, dass das Objekt keinem Quelltyp entsprach. Überprüfen Sie diese Ursachen:
- Ein relativer Pfad, der nicht mit
./beginnt, außer"."oder einem bare Name untermetadata.pluginRoot - Ein
npmpackage, das..enthält - Ein
source-Typ, der nicht einer der Plugin-Quellen ist - Ein bekannter Typ mit einem erforderlichen Feld, das fehlt oder den falschen Typ hat, wie
githubohnerepo
Fehler, die die Validierung nicht erfasst
claude plugin validate meldet nicht jeden Fehler. Ein Eintrag hooks, der als Dateipfad oder Array geschrieben wird, besteht die Validierung, und der Fehler erscheint nur, wenn das Plugin lädt, wie Hooks in einem Eintrag beschreibt. Fehler beim Abrufen einer source erscheinen auch nur nach der Installation, nicht in der Validierung.
claude plugin list zeigt ein Plugin, das nicht geladen wurde, mit seinem Fehler, und Plugins beheben behandelt die Lade-Zeit-Zeichenfolgen.
Nächste Schritte
- Marketplace erstellen: Erstellen Sie einen Marketplace aus diesen Feldern und installieren Sie ihn lokal
- Marketplace hosten und verwalten: Wo Sie die Datei ablegen und wie Benutzer Änderungen erhalten
- Plugin-Manifest-Referenz: Die
plugin.json-Felder, die ein Eintrag überschreiben kann - Plugins für Ihre Organisation verwalten: Allowlist- und Blocklist-Rezepte, die diese Quellwerte verwenden