Veröffentlicht am 20. Januar 2026 von Dominic Böttger (vor 2 Monaten) · 10 Min. Lesezeit
Wenn du mit Claude Code in einem Team arbeitest, hast du wahrscheinlich schon die Stärke von Skills und Plugins entdeckt. Aber hier ist die Sache: Der eingebaute Marktplatz ist großartig für allgemeine Tools, doch viele Teams brauchen maßgeschneiderte Skills für ihre spezifischen Workflows.
Diese Anleitung führt dich durch das Erstellen und Verwalten eines privaten Plugin-Marktplatzes – ob auf GitHub gehostet oder lokal aus einem geklonten Repository genutzt.
Was sind Claude Code Plugins?
Bevor wir in die Marktplatz-Struktur eintauchen, klären wir, was wir hier bauen.
Plugins sind Pakete, die die Fähigkeiten von Claude Code erweitern. Jedes Plugin kann enthalten:
- Skills: Vordefinierte Prompts und Workflows, die Claude ausführen kann
- Commands: Slash-Befehle für häufige Aktionen
- Agents: Spezialisierte Sub-Agents für bestimmte Aufgaben
- Hooks: Ereignisgesteuerte Automatisierungsauslöser
Ein Marktplatz ist einfach eine Registry, die Claude Code mitteilt, wo diese Plugins zu finden sind und was sie enthalten.
Repository-Struktur
Hier ist die empfohlene Struktur für einen privaten Plugin-Marktplatz:
my-team-plugins/
├── .claude-plugin/
│ └── marketplace.json # Plugin registry
├── plugins/
│ ├── api-client/
│ │ └── skills/
│ │ └── fetch/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── fetch.py
│ ├── database/
│ │ └── skills/
│ │ └── query/
│ │ ├── SKILL.md
│ │ └── reference/
│ │ └── schema-guide.md
│ └── planner/
│ └── skills/
│ └── tasks/
│ └── SKILL.md
└── README.md
Schauen wir uns die einzelnen Komponenten an.
Die Marktplatz-Registry
Das Herzstück deines Marktplatzes ist .claude-plugin/marketplace.json. Diese Datei teilt Claude Code mit, welche Plugins verfügbar sind und wo sie zu finden sind:
{
"name": "acme-plugins",
"displayName": "Acme Corp Plugins",
"plugins": [
{
"name": "api-client",
"description": "API client utilities for REST and GraphQL endpoints. Use when working with external APIs.",
"source": "./plugins/api-client",
"skills": ["./skills/fetch"]
},
{
"name": "database",
"description": "Database query tools for PostgreSQL and MySQL. Activate for database operations.",
"source": "./plugins/database",
"skills": ["./skills/query"]
},
{
"name": "planner",
"description": "Task and project planning utilities. Use for managing tasks, sprints, and project workflows.",
"source": "./plugins/planner",
"skills": ["./skills/tasks"]
}
]
}
Wichtige Felder:
| Feld | Beschreibung |
|---|---|
name | Eindeutiger Bezeichner für den Marktplatz (kebab-case) |
displayName | Lesbarer Name, der in Claude Code angezeigt wird |
plugins[].name | Plugin-Bezeichner (muss mit dem Verzeichnisnamen übereinstimmen) |
plugins[].description | Wann dieses Plugin verwendet werden soll – Claude nutzt dies als Kontext |
plugins[].source | Relativer Pfad zum Plugin-Verzeichnis |
plugins[].skills | Array von Skill-Pfaden innerhalb des Plugins |
Plugin-Verzeichnisstruktur
Jedes Plugin liegt in seinem eigenen Verzeichnis unter plugins/. Die Struktur ist:
plugins/plugin-name/
└── skills/
└── skill-name/
├── SKILL.md # Erforderlich: Der Skill-Prompt/die Anweisungen
├── scripts/ # Optional: Unterstützende Skripte
│ └── helper.py
└── reference/ # Optional: Referenzdokumentation
└── docs.md
SKILL.md ist die einzige erforderliche Datei. Sie enthält die Anweisungen, denen Claude beim Aufrufen des Skills folgt. Hier ein einfaches Beispiel:
# API Fetch Skill
When the user asks to fetch data from an API, follow these steps:
1. Determine the HTTP method (GET, POST, PUT, DELETE)
2. Identify required headers and authentication
3. Construct the request using the provided scripts
4. Parse and format the response
## Authentication Handling
For APIs requiring authentication, check for:
- Bearer tokens in environment variables
- API keys in project configuration
- OAuth credentials if applicable
## Example Usage
User: "Fetch the user list from our backend"
Action: Use GET request to /api/users endpoint
Namenskonventionen
Die richtige Benennung ist wichtig. Claude Code verwendet ein durch Doppelpunkte getrenntes Namensmuster zur Identifizierung von Skills: plugin-name:skill-name.
Das Plugin:Skill-Muster verstehen
Wenn du einen Skill aufrufst, referenzierst du ihn in diesem Format:
plugin-name:skill-name
Zum Beispiel bei dieser Verzeichnisstruktur:
plugins/
└── planner/ # Plugin-Name: "planner"
└── skills/
└── tasks/ # Skill-Name: "tasks"
└── SKILL.md
Der Skill wird als planner:tasks referenziert.
plannerist der Plugin-Name (das Verzeichnis unterplugins/)tasksist der Skill-Name (das Verzeichnis unterskills/)
Dies erzeugt einen klaren Namespace, der Kollisionen verhindert, wenn mehrere Plugins existieren. Du könntest z.B. haben:
| Referenz | Plugin | Skill | Zweck |
|---|---|---|---|
planner:tasks | planner | tasks | Projektaufgaben verwalten |
planner:sprints | planner | sprints | Sprint-Planung |
database:query | database | query | Datenbankabfragen ausführen |
database:migrate | database | migrate | Datenbankmigrationen |
Gute Namensbeispiele
planner:tasks # Plugin für Planung, Skill verwaltet Aufgaben
api-client:fetch # Plugin ist ein API-Client, Skill ruft Daten ab
database:query # Plugin für Datenbank, Skill führt Abfragen aus
docs:generate # Plugin für Doku, Skill generiert sie
Was vermieden werden sollte
Wiederhole nicht den Plugin-Namen im Skill:
planner:planner-tasks # Schlecht - redundantes "planner"
database:database-query # Schlecht - "database" erscheint zweimal
Der Plugin-Name liefert bereits den Kontext, daher sollte der Skill-Name neue Informationen hinzufügen, nicht wiederholen.
Verwende keine generischen Skill-Namen:
utils:skill # Schlecht - was macht "skill"?
tools:helper # Schlecht - zu vage
Richtlinien für Plugin-Benennung
- Verwende kebab-case (Kleinbuchstaben mit Bindestrichen):
api-client, nichtapiClientoderAPI_Client - Sei beschreibend aber prägnant:
plannerstattproject-task-management-system - Spiegle die Domäne oder Technologie wider:
msgraph,postgres,slack - Denke daran als Namespace: Alles unter diesem Plugin bezieht sich auf diese Domäne
Richtlinien für Skill-Benennung
- Verwende Aktionsverben wenn der Skill eine Aktion ausführt:
query,fetch,generate,deploy - Verwende Substantive wenn der Skill eine Ressource verwaltet:
tasks,users,config - Halte es kurz – ein oder zwei Wörter sind ideal
- Dupliziere keine Informationen aus dem Plugin-Namen
Praxisbeispiele
So funktioniert die Benennung für ein Team mit mehreren Plugins:
# Projektmanagement-Plugin
planner:tasks # Aufgaben erstellen, aktualisieren, auflisten
planner:sprints # Sprint-Zyklen verwalten
planner:reports # Fortschrittsberichte generieren
# Microsoft Graph Integration
msgraph:mail # E-Mails senden und lesen
msgraph:calendar # Kalendertermine verwalten
msgraph:users # Benutzerverzeichnis abfragen
# Datenbankoperationen
postgres:query # SQL-Abfragen ausführen
postgres:migrate # Migrationen anwenden
postgres:backup # Sichern und Wiederherstellen
# Interne Tools
deploy:staging # Auf Staging deployen
deploy:production # Auf Produktion deployen
Jedes Plugin gruppiert verwandte Funktionalität, und jeder Skill-Name zeigt klar an, was er innerhalb dieser Domäne tut.
Einen privaten Marktplatz registrieren
Jetzt zum praktischen Teil: Wie nutzt du deinen privaten Marktplatz tatsächlich?
Option 1: Lokaler Marktplatz (Empfohlen)
Der zuverlässigste Ansatz für private Marktplätze ist, das Repository lokal zu klonen und den lokalen Pfad zu registrieren. Das vermeidet Authentifizierungsprobleme und ermöglicht sofortige Updates während der Entwicklung.
Klone zunächst dein Marktplatz-Repository:
# Klonen via SSH (empfohlen für private Repos)
git clone git@github.com:acme-corp/claude-plugins.git ~/Development/claude-plugins
Füge dann den lokalen Pfad zu deinen Claude Code Einstellungen hinzu.
Für macOS/Linux (~/.claude/settings.json):
{
"extraKnownMarketplaces": {
"acme": {
"source": {
"source": "local",
"directory": "/home/username/Development/claude-plugins"
}
}
}
}
Für Windows (%USERPROFILE%\.claude\settings.json):
{
"extraKnownMarketplaces": {
"acme": {
"source": {
"source": "local",
"directory": "C:\\Users\\username\\Development\\claude-plugins"
}
}
}
}
Nach dem Hinzufügen dieser Konfiguration:
- Starte Claude Code neu
- Führe
/marketplaceaus, um verfügbare Plugins zu sehen - Installiere Plugins mit
/install acme:planner
Vorteile lokaler Marktplätze:
- Sofortige Updates: Änderungen an SKILL.md-Dateien werden sofort wirksam
- Keine Netzwerkabhängigkeit: Funktioniert offline
- Keine Credential-Konflikte: Arbeitet mit deinem bestehenden Git/gh CLI Setup
- Einfache Entwicklung: Skills testen, bevor du sie ins Remote-Repository pushst
Um deine Plugins zu aktualisieren, ziehe einfach die neuesten Änderungen:
cd ~/Development/claude-plugins && git pull
Option 2: GitHub-gehosteter Marktplatz (nur öffentliche Repos)
Für öffentliche Repositories kannst du GitHub direkt referenzieren, ohne zu klonen:
{
"extraKnownMarketplaces": {
"acme": {
"source": {
"source": "github",
"repo": "acme-corp/claude-plugins"
}
}
}
}
Hinweis zu privaten Repositories: Die GitHub-Source-Option kann zwar mit privaten Repos funktionieren, erfordert aber möglicherweise Änderungen an der Konfiguration deines Git Credential Managers. Wenn du das gh CLI mit seinem Standard-Credential-Manager verwendest, könnten diese Änderungen Konflikte verursachen. Für private Repos ist der lokale Marktplatz-Ansatz einfacher und vermeidet Credential-Probleme.
Deinen ersten Skill erstellen
Erstellen wir ein praktisches Beispiel. Angenommen, dein Team braucht einen Skill für Aufgabenverwaltung. So baust du ihn auf.
1. Verzeichnisstruktur erstellen
mkdir -p plugins/planner/skills/tasks
2. SKILL.md schreiben
# Task Management Skill
Use this skill when the user needs to create, update, or manage project tasks.
## Capabilities
- Create new tasks with title, description, and due date
- List tasks filtered by status, assignee, or project
- Update task status (todo, in-progress, done)
- Assign tasks to team members
## Task Format
Tasks should include:
- **Title**: Brief description (required)
- **Description**: Detailed information (optional)
- **Status**: todo | in-progress | done
- **Assignee**: Team member name or email
- **Due Date**: ISO 8601 format (YYYY-MM-DD)
## Example Interactions
User: "Create a task to update the API documentation"
Action: Create task with title "Update API documentation", status "todo"
User: "Show me all tasks assigned to Sarah"
Action: List tasks filtered by assignee "Sarah"
User: "Mark the login bug task as done"
Action: Update task status to "done"
3. marketplace.json aktualisieren
{
"plugins": [
{
"name": "planner",
"description": "Task and project planning utilities. Use when managing tasks, tracking progress, or organizing work.",
"source": "./plugins/planner",
"skills": ["./skills/tasks"]
}
]
}
4. Testen
Bei Verwendung eines lokalen Marktplatzes ist der Skill sofort verfügbar:
Du: Erstelle eine Aufgabe zum Review des PRs für das neue Authentifizierungs-Feature
Claude: [Nutzt den planner:tasks Skill, um die Aufgabe zu erstellen]
Best Practices
Skills fokussiert halten
Jeder Skill sollte eine Sache gut machen. Wenn ein Skill komplex wird, teile ihn auf:
plugins/planner/
└── skills/
├── tasks/ # Einzelne Aufgabenverwaltung
├── sprints/ # Sprint-Planung und -Tracking
└── reports/ # Fortschrittsberichte und Analysen
Für Claude dokumentieren, nicht für Menschen
SKILL.md-Dateien sind Anweisungen für Claude. Schreibe sie so, als würdest du einem fähigen Assistenten etwas erklären:
- Sei explizit bei Randfällen
- Füge Beispiel-Ein- und -Ausgaben hinzu
- Spezifiziere Erwartungen zur Fehlerbehandlung
- Liste alle Abhängigkeiten oder Voraussetzungen auf
Deinen Marktplatz versionieren
Verwende Git-Tags zur Versionierung deines Marktplatzes:
git tag -a v1.2.0 -m "Added planner:sprints skill"
git push origin v1.2.0
So können Teams bei Bedarf bestimmte Versionen verwenden.
Referenzdokumentation einbinden
Für komplexe Domänen füge Referenzmaterial im reference/-Verzeichnis hinzu:
plugins/planner/skills/tasks/
├── SKILL.md
└── reference/
├── api-docs.md # API-Dokumentation
└── examples.md # Nutzungsbeispiele
Claude kann diese Dateien beim Ausführen des Skills referenzieren.
Zusammenfassung
Ein privater Plugin-Marktplatz verwandelt Claude Code von einem universellen Assistenten in ein teamspezifisches Kraftpaket. Die Ersteinrichtung dauert etwa eine Stunde, aber die Produktivitätsgewinne summieren sich schnell.
Fang klein an:
- Erstelle ein Plugin für deine häufigste wiederkehrende Aufgabe
- Teste es lokal
- Teile es über GitHub mit deinem Team
- Iteriere basierend auf Feedback
Die Struktur ist bewusst einfach gehalten – nur Markdown-Dateien und JSON-Konfiguration. Kein Build-Prozess, keine Abhängigkeiten, keine Komplexität. Das ist der Punkt.
Das Wissen deines Teams, kodiert als Skills, für alle über natürliche Sprache verfügbar. Das ist das Versprechen, und es hält.
Ressourcen
Geschrieben von Dominic Böttger
← Zurück zum Blog