Vertiefung zu Modul 10 · Bündeln, verteilen, aktualisieren
Modul 10 sagt, warum man Konfiguration bündelt.
Hier geht es darum, wie das Bündel aussieht — und wo es klemmt.
marketplace.json. Ein lokaler Pfad genügt zum Testen.name, nicht aus displayName.Was ein Plugin bündelt und wie die Teile heißen
Fast alles, was auch in einem .claude/-Verzeichnis liegen kann — jede Art in ihrem eigenen Ordner, alle optional.
skills/, commands/, agents/, workflows/hooks/, monitors/.mcp.json, .lsp.jsonoutput-styles/, themes/scripts/, bin/ — was in bin/ liegt, ist als nackter Befehl aufrufbar, solange das Plugin aktiv ist.Das Manifest ist optional.
Ohne es findet Claude Code die Komponenten an den Standardorten, der Name kommt aus Katalog oder Verzeichnis.
name das einzige Pflichtfeld. Alles andere ist Metadaten oder Pfadangabe.version steuert Updates. Ohne sie dient bei Git-Quellen der Commit-SHA als Version. Mit ihr gibt es Updates nur beim Anheben.claude plugin validate warnt, --strict macht daraus einen Fehler.keywords als Zeichenkette statt Liste lädt nicht.Ein Pfad im Manifest verhält sich je Feld anders.
Bei einem Feld kommt der eigene Pfad dazu, bei den meisten tritt er an die Stelle des Standardordners.
| Feld | Verhalten |
|---|---|
skills | ergänzt — skills/ wird immer gescannt, die eigenen Pfade kommen dazu |
commands, agents, workflows, outputStyles | ersetzt — sobald gesetzt, wird der Standardordner nicht mehr gescannt |
hooks, mcpServers, lspServers | zusammengeführt — die Standarddatei lädt zuerst, das Manifest kommt dazu |
"commands": ["./commands/", "./extras/"]../.Plugin-Skills heißen immer /plugin-name:skill-name.
So kommen sich zwei Plugins mit gleichnamigen Skills nicht in die Quere.
name aus plugin.json — nicht displayName, der ist reine Anzeige.skills/.enabledPlugins und die Installation der Katalog-Name.cgs-demo:link-reviewer. Unterordner unter agents/ werden Teil des Namens..claude/ in ein Plugin: Bei gleichem Namen hat der Projekt-Agent Vorrang vor dem Plugin-Agenten./name und /plugin:name.Katalog, Quellen, Versionen
.claude-plugin/marketplace.json im Wurzelverzeichnis des Katalogs.
Kein Dienst, kein Konto, keine Anmeldung — eine Datei mit drei Pflichtfeldern.
name, owner mit name, und plugins als Liste.name und source. Erlaubt ist zusätzlich jedes Feld des Manifests.inline, skills-dir, synced, github, npm und ähnliche.Sieben Quelltypen für ein Plugin.
Für den Kurs zählt der erste: ein relativer Pfad in einem lokalen Katalog.
./, liegt im Katalog-Verzeichnis. Aus einem lokalen Katalog lädt Claude Code es an Ort und Stelle.github mit repo, optional ref und sha.url für eine beliebige Git-Adresse, git-subdir für ein Unterverzeichnis daraus.npm, archive (ZIP über HTTPS) und command (ein Befehl nennt das Verzeichnis).ref und sha gesetzt, gewinnt der sha.owner/repourl meint beim Katalog eine marketplace.json, beim Plugin ein Git-Repository.sha.Wer version setzt, pinnt das Plugin auf diesen String.
Neue Commits allein bewirken dann nichts.
version: Updates gibt es erst beim Anheben. claude plugin update meldet vorher „already at the latest version".version: bei Git-Quellen ist der Commit-SHA die Version — jeder Commit ist ein Update.plugin.json über den Katalogeintrag.autoUpdate in extraKnownMarketplaces schaltet es ein.Wo der Schalter steht — und was im Plugin nicht gilt
enabledPlugins trägt Einträge der Form "plugin@katalog": true.
Welche Datei den Eintrag trägt, entscheidet, ob er wirkt.
false in den User-Settings verpufft, wenn das Projekt das Plugin aktiviert..claude/settings.local.json.true erzwingt, false sperrt — keine andere Datei ändert das.true nur im Projekt holt kein Plugin aus einer externen Quelle auf den Rechner — nur Plugins mit relativem Pfad im Katalog laden direkt.settings.local.jsonEin Plugin verteilt Fähigkeiten.
Rechte, Projektkontext und Anschlüsse je Subagent gibt es sich nicht selbst.
| Wo | Was nicht funktioniert |
|---|---|
| Plugin-Subagent | permissionMode, hooks, mcpServers, initialPrompt — ignoriert |
Plugin-settings.json | nur agent und subagentStatusLine; alles andere fällt beim Laden weg |
CLAUDE.md im Plugin | wird nicht als Projektkontext geladen — Anweisungen gehören in einen Skill |
| Pfade nach draußen | ../shared-utils lädt nicht; Symlinks aus dem Plugin heraus ebenso wenig |
| Hook-Matcher auf eigenen MCP-Server | der bloße Server-Name feuert nie — es braucht mcp__plugin_<plugin>_<server>__<tool> |
Ein Eintrag im Projekt meldet den Team-Katalog für alle an, die das Repository öffnen.
Die Firma kann zusätzlich begrenzen, woher Plugins kommen dürfen.
extraKnownMarketplaces im Projekt meldet den Katalog an — erst nach der Workspace-Trust-Abfrage.enabledPlugins daneben schaltet Plugins daraus ein; installieren muss jede:r selbst.strictKnownMarketplaces (nur Managed) ist die Allowlist der Kataloge. Ein leeres Array sperrt alles, auch den offiziellen.disableSideloadFlags (nur Managed) schließt die Umgehung über Startflags wie --plugin-dir und --mcp-config.Die Entscheidung, die vor dem Bauen kommt
Ein Plugin lohnt sich ab dem zweiten Repository, nicht ab der zweiten Datei.
Vorher ist .claude/ im Projekt einfacher.
.claude/skills/ lädt als name@skills-dir, sobald man dem Ordner vertraut.cgs-demoDas Begleitplugin bündelt je eine Komponente jeder Art.
Seine Nutzlast ist ein Link-Prüfer — klein, ohne Abhängigkeiten, in jedem Schulungs-Repository nützlich.
allowed-tools mit ${CLAUDE_PLUGIN_ROOT}.PostToolUse, schreibt nach ${CLAUDE_PLUGIN_DATA}.Was von diesem Deck hängenbleiben soll.
name das einzige Pflichtfeld..claude-plugin/ liegt nur plugin.json. Alle Komponentenordner liegen daneben.version pinnt. Ohne sie ist jeder Commit ein Update, mit ihr gibt es keins, bis sie steigt.permissionMode, hooks und mcpServers..claude/ im Projekt.marketplace.json, die auflistet, welche Plugins es gibt und woher sie kommen. Kein Dienst: ein lokales Verzeichnis oder ein Git-Repository genügt.
plugin.json in .claude-plugin/. Trägt Metadaten und optional eigene Pfade zu den Komponenten. Insgesamt optional; ohne sie gelten die Standardorte.
/cgs-demo:checking-links. Er kommt aus dem Feld name und verhindert Kollisionen zwischen Plugins.
.claude/-Verzeichnis an.
Alle Rechte vorbehalten
Diese Schulungsunterlagen sind urheberrechtlich geschützt. Vervielfältigung, Weitergabe oder kommerzielle Nutzung — auch in Auszügen — nur mit ausdrücklicher schriftlicher Genehmigung der CGS IT Solutions GmbH.
cgsit-claude-training · Modul 10c · Plugins · v2.0.1