← Alle Beitrage

Eigene Skills für Claude Code erstellen: Ein vollständiges Tutorial

From the guide: Claude Code Comprehensive Guide

Drei Sitzungen hintereinander habe ich dieselbe Sicherheits-Checkliste in Claude Code eingefügt. Die Checkliste enthielt die spezifischen Schwachstellenmuster unseres Teams — die IDOR-Prüfungen, die einzigartig für unser API-Design sind, die Session-Handling-Regeln für unseren Authentifizierungsablauf, die Datenschutzregeln für unsere PII-Felder. Jedes Mal wendete Claude sie perfekt an. Jedes Mal musste ich daran denken, sie einzufügen.

Der Moment, in dem Sie sich dabei ertappen, denselben Kontext wiederholt zu erklären, ist der Moment, in dem Sie einen Skill erstellen sollten.

TL;DR

Skills sind modellaufgerufene Erweiterungen — Claude entdeckt und wendet sie automatisch basierend auf dem Kontext an, ohne dass Sie sie explizit aufrufen müssen 1. Der Schlüssel zu zuverlässigen Skills ist das description-Feld: Claude verwendet LLM-Reasoning (kein Keyword-Matching), um zu entscheiden, wann jeder Skill aktiviert wird 1. Erstellen Sie Skills für Domänenwissen, das über Sitzungen hinweg gilt (Sicherheitsmuster, Code-Stil, Geschäftsregeln). Erstellen Sie keine Skills für einmalige Aufgaben — verwenden Sie stattdessen Slash-Befehle.


Voraussetzungen: Vertrautheit mit dem Erweiterungssystem von Claude Code. Für den Vergleich zwischen Skills, Befehlen und Subagenten siehe den Skills-Abschnitt des Leitfadens.

Wann Sie einen Skill erstellen sollten

Nicht jeder wiederholte Prompt verdient einen Skill. Das Entscheidungsframework:

Situation Erstellen Sie… Warum
Sie fügen jede Sitzung dieselbe Checkliste ein Skill Domänenwissen, das sich automatisch aktiviert
Sie führen explizit dieselbe Befehlssequenz aus Slash-Befehl Benutzerausgelöste Aktion mit vorhersehbarem Auslöser
Sie benötigen isolierte Analyse, die den Kontext nicht verunreinigen soll Subagent Separates Kontextfenster für fokussierte Arbeit
Sie benötigen einen einmaligen Prompt mit spezifischen Anweisungen Nichts Tippen Sie es einfach ein. Nicht alles braucht eine Abstraktion.

Skills sind für Wissen, das Claude immer verfügbar hat. Slash-Befehle sind für Aktionen, die Sie explizit auslösen. Wenn Sie sich zwischen beiden entscheiden, fragen Sie sich: „Soll Claude dies automatisch anwenden, oder soll ich entscheiden, wann es ausgeführt wird?”

Ein häufiger Fehler: Einen Skill für etwas erstellen, das Sie einmal pro Woche tun. Ich habe einen git-rebase-helper-Skill erstellt, der sich bei jedem Git-bezogenen Prompt aktivierte — Rebases, Merges, Cherry-Picks, sogar git status. Die Beschreibung war zu breit gefasst, sie verunreinigte den Kontext in 80 % der Sitzungen, in denen sie nicht benötigt wurde, und konkurrierte mit anderen Skills um das 2-%-Kontext-Budget 1. Die Lösung war, den Skill zu löschen und stattdessen einen Slash-Befehl zu verwenden: /rebase, wenn ich ihn tatsächlich brauchte. Skills sollten stabiles Domänenwissen kodieren, keine gelegentlichen Workflows.

Tutorial: Einen Code-Review-Skill erstellen

Schritt 1: Das Verzeichnis erstellen

Skills befinden sich an vier möglichen Speicherorten, vom breitesten zum engsten Geltungsbereich 1:

Geltungsbereich Speicherort Gilt für
Unternehmen Verwaltete Einstellungen Alle Benutzer in Ihrer Organisation
Persönlich ~/.claude/skills/<name>/SKILL.md Alle Ihre Projekte
Projekt .claude/skills/<name>/SKILL.md Nur dieses Projekt
Plugin <plugin>/skills/<name>/SKILL.md Wo das Plugin aktiviert ist

Für dieses Tutorial erstellen wir einen persönlichen Skill:

mkdir -p ~/.claude/skills/code-reviewer

Schritt 2: SKILL.md mit Frontmatter schreiben

Jeder Skill benötigt eine SKILL.md-Datei mit zwei Teilen: YAML-Frontmatter (zwischen ----Markierungen), das Claude mitteilt, wann der Skill verwendet werden soll, und Markdown-Inhalt mit Anweisungen, denen Claude folgt, wenn der Skill aufgerufen wird 1.

---
name: code-reviewer
description: Review code for security vulnerabilities, performance issues,
  and best practice violations. Use when examining code changes, reviewing
  PRs, analyzing code quality, or when asked to review, audit, or check code.
allowed-tools: Read, Grep, Glob
---

# Code Review Expertise

## Security Checks
When reviewing code, verify:

### Input Validation
- All user input sanitized before database operations
- Parameterized queries (no string interpolation in SQL)
- Output encoding for rendered HTML content

### Authentication
- Session tokens validated on every protected endpoint
- Permission checks before data mutations
- No hardcoded credentials or API keys in source

### Data Exposure
- PII masked in log output and error messages
- API responses don't leak internal IDs or stack traces
- Sensitive fields excluded from serialization defaults

Beachten Sie allowed-tools: Read, Grep, Glob — dies beschränkt den Skill auf schreibgeschützte Operationen. Der Code-Reviewer kann Dateien untersuchen, aber nicht ändern. Tool-Beschränkungen verhindern, dass Skills unbeabsichtigte Nebeneffekte haben.

Weitere nützliche Frontmatter-Felder neben name, description und allowed-tools 1:

Feld Funktion
disable-model-invocation: true Verhindert automatische Aktivierung; Skill wird nur über /skill-name aktiviert
user-invocable: false Wird komplett aus dem /-Menü ausgeblendet
model Überschreibt das verwendete Modell, wenn der Skill aktiv ist
context: fork Ausführung in einem geforkten Subagenten-Kontext (isoliertes Kontextfenster)
argument-hint Hinweis bei der Autovervollständigung (z. B. [filename] [format])
agent Ausführung als Subagent mit eigenem isolierten Kontextfenster
hooks Definition von Lebenszyklus-Hooks (PreToolCall, PostToolCall) für den Skill
$ARGUMENTS Zeichenkettenersetzung: wird durch die Benutzereingabe nach /skill-name ersetzt
$USER_PROMPT Zeichenkettenersetzung: wird durch die letzte Nachricht des Benutzers ersetzt
$SLASH_PROMPT Zeichenkettenersetzung: wird durch den vollständigen /skill-name <args>-Aufruf ersetzt

Ein Hinweis aus der offiziellen Dokumentation: context: fork „macht nur bei Skills mit expliziten Anweisungen Sinn, die von Isolation profitieren” 1. Verwenden Sie es für Analyse-Skills (Code-Review, Sicherheitsaudit), bei denen Sie einen sauberen Kontext wünschen, nicht für Wissens-Skills, die sich in die Hauptkonversation einfügen sollen.

Schritt 3: Unterstützende Ressourcen hinzufügen

Skills können auf zusätzliche Dateien im selben Verzeichnis verweisen 1:

~/.claude/skills/code-reviewer/
├── SKILL.md                    # Required: frontmatter + core expertise
├── SECURITY_PATTERNS.md        # Referenced: detailed vulnerability patterns
└── PERFORMANCE_CHECKLIST.md    # Referenced: optimization guidelines

Verweisen Sie aus SKILL.md mit relativen Links darauf:

See [SECURITY_PATTERNS.md](SECURITY_PATTERNS.md) for OWASP Top 10 checks.
See [PERFORMANCE_CHECKLIST.md](PERFORMANCE_CHECKLIST.md) for query optimization.

Claude liest diese Dateien bei Bedarf, wenn der Skill aktiviert wird, und verwendet dabei standardmäßige Dateilesewerkzeuge 1. Halten Sie SKILL.md unter 500 Zeilen und verschieben Sie detailliertes Referenzmaterial in unterstützende Dateien 3 — kürzere Skill-Dateien reduzieren den Kontextinjektions-Overhead und halten Claude auf die aktuelle Aufgabe fokussiert.

Schritt 4: Aktivierung testen

Der Skill wird aktiviert, wenn Sie das nächste Mal eine Claude-Code-Sitzung starten. Testen Sie es:

# Ask Claude to review code — should trigger the skill automatically
claude "Review the authentication middleware in app/security/"

Überprüfen Sie, ob der Skill geladen wurde, mit einer von zwei Methoden 1:

# In an interactive session, ask Claude directly:
> What skills are available?

# Or check the context budget for excluded skills:
> /context

Wenn der Skill nicht aktiviert wird, liegt das Problem fast immer am description-Feld. Siehe Schritt 5.

Schritt 5: Der entscheidende Schritt — die Beschreibung schreiben

Das description-Feld ist die wichtigste einzelne Zeile in Ihrem Skill. Folgendes passiert unter der Haube: Beim Sitzungsstart extrahiert Claude Code den name und die description jedes Skills und injiziert sie in Claudes Kontext. Wenn Sie eine Nachricht senden, verwendet Claude Language-Model-Reasoning — kein Regex, kein Keyword-Matching, keine Embedding-Ähnlichkeit — um zu entscheiden, ob ein Skill relevant ist. Die offizielle Dokumentation besagt: „Claude gleicht Ihre Aufgabe mit Skill-Beschreibungen ab, um zu entscheiden, welche relevant sind. Wenn Beschreibungen vage sind oder sich überschneiden, lädt Claude möglicherweise den falschen Skill — oder übersieht einen, der helfen würde” 1.

Eine unabhängige Analyse des Claude-Code-Quellcodes bestätigt den Mechanismus: Skill-Beschreibungen werden in einen available_skills-Abschnitt des System-Prompts injiziert, und das Modell verwendet standardmäßiges Sprachverständnis, um relevante Skills zum Aufrufzeitpunkt auszuwählen 4. Das LLM-basierte Matching hat wichtige Auswirkungen darauf, wie Sie Beschreibungen verfassen.

Schlechte Beschreibung:

description: Helps with code

Claude hat keine Ahnung, wann dies aktiviert werden soll. „Helps with code” passt auf alles und nichts — und da das Matching auf LLM-Reasoning basiert, erzeugen vage Beschreibungen unvorhersehbare Aktivierungen.

Bessere Beschreibung:

description: Review code for bugs and issues

Zu vage. Welche Art von Bugs? Welche Art von Problemen? Wann sollte Claude dies anstelle seiner eingebauten Analyse verwenden?

Effektive Beschreibung:

description: Review code for security vulnerabilities, performance issues,
  and best practice violations. Use when examining code changes, reviewing
  PRs, analyzing code quality, or when asked to review, audit, or check code.

Die effektive Beschreibung funktioniert, weil sie Folgendes enthält: - Was sie tut: Code auf spezifische Problemtypen überprüfen - Wann sie eingesetzt wird: Bei der Untersuchung von Änderungen, PRs, Qualitätsanalyse - Trigger-Phrasen: review, audit, check — Wörter, die der Benutzer natürlicherweise tippt

Eine Einschränkung, die Sie kennen sollten: Alle Skill-Beschreibungen teilen sich ein Kontext-Budget, das „dynamisch auf 2 % des Kontextfensters skaliert, mit einem Fallback von 16.000 Zeichen” 1. Wenn Sie viele Skills haben, halten Sie jede Beschreibung prägnant — eine ausführliche Beschreibung konkurriert mit anderen Skills um begrenzten Platz. Sie können das Budget über die Umgebungsvariable SLASH_COMMAND_TOOL_CHAR_BUDGET überschreiben 2, aber die bessere Lösung sind kürzere, präzisere Beschreibungen.

Testen Sie verschiedene Beschreibungen. Starten Sie eine neue Sitzung, bitten Sie Claude, Code zu überprüfen, und prüfen Sie, ob der Skill aktiviert wird. Falls nicht, fügen Sie mehr Trigger-Phrasen hinzu. Falls er aktiviert wird, wenn er es nicht sollte, machen Sie die Beschreibung spezifischer.

Schritt 6: Basierend auf der Nutzung iterieren

Nach einer Woche Nutzung werden Sie Folgendes feststellen: - Muster, die der Skill prüfen sollte, aber nicht prüft — fügen Sie sie zu SKILL.md hinzu - Falsche Aktivierungen bei unzusammenhängenden Aufgaben — verschärfen Sie die Beschreibung, oder fügen Sie disable-model-invocation: true hinzu und erfordern Sie den expliziten Aufruf über /code-reviewer - Fehlender Kontext — fügen Sie unterstützende Ressourcendateien hinzu - Tool-Beschränkungen, die zu eng oder zu locker sind — passen Sie allowed-tools an

Skills sind lebende Dokumente. Die erste Version ist nie die endgültige Version.

Fortgeschritten: Skills als Prompt-Bibliothek

Über einzelne Skills hinaus funktioniert die Verzeichnisstruktur als organisierte Prompt-Bibliothek:

~/.claude/skills/
├── code-reviewer/          # Activates on: review, audit, check
├── api-designer/           # Activates on: design API, endpoint, schema
├── sql-analyst/            # Activates on: query, database, migration
├── deploy-checker/         # Activates on: deploy, release, production
└── incident-responder/     # Activates on: error, failure, outage, debug

Jeder Skill kodiert eine andere Facette der Expertise Ihres Teams. Zusammen bilden sie eine Wissensbasis, aus der Claude automatisch basierend auf dem Kontext schöpft. Ein Junior-Entwickler erhält Anleitung auf Senior-Niveau, ohne danach fragen zu müssen.

Ein Hinweis zur Anzahl der Skills: Mehr Skills bedeuten mehr Beschreibungen, die um das Kontext-Budget konkurrieren 1. Wenn Sie bemerken, dass Skills nicht aktiviert werden, führen Sie /context aus, um zu prüfen, ob welche ausgeschlossen werden. Priorisieren Sie weniger, gut beschriebene Skills gegenüber vielen vagen.

Skills mit Ihrem Team teilen

Persönliche Skills (~/.claude/skills/) gehören nur Ihnen. Verwenden Sie sie für persönliche Präferenzen, experimentelle Muster oder Expertise, die spezifisch für Ihren Workflow ist.

Projekt-Skills (.claude/skills/ im Repo-Stammverzeichnis) werden über Git geteilt 1:

# Create project-level skill
mkdir -p .claude/skills/domain-expert
# ... write SKILL.md ...

# Commit and push
git add .claude/skills/
git commit -m "feat: add domain-expert skill for payment processing rules"
git push

Wenn Teammitglieder pullen, erhalten sie den Skill automatisch. Keine Installation, keine Konfiguration. Git-Distribution ist der effektivste Weg, um Expertise in einem Team zu standardisieren.

Richtlinien für geteilte Skills: - Halten Sie Projekt-Skills auf Domänenwissen fokussiert (Geschäftsregeln, Architekturmuster) - Behalten Sie persönliche Skills für Workflow-Präferenzen (Formatierung, Commit-Stil) - Dokumentieren Sie, warum der Skill existiert, in einem Kommentar am Anfang von SKILL.md - Überprüfen Sie Skill-Änderungen in PRs wie jeden anderen Code

Wichtigste Erkenntnisse

  • Erstellen Sie einen Skill, wenn Sie sich dabei ertappen, Kontext erneut zu erklären. Wenn Sie dieselbe Checkliste dreimal einfügen, sollte es ein Skill sein.
  • Das Beschreibungsfeld bestimmt alles. Claude verwendet LLM-Reasoning, um Ihre Anfragen mit Beschreibungen abzugleichen 1. Investieren Sie mehr Zeit in die Beschreibung als in den Skill-Inhalt.
  • Verwenden Sie allowed-tools, um Nebeneffekte einzuschränken. Schreibgeschützte Skills sollten auf Read, Grep, Glob beschränkt werden.
  • Teilen Sie Projekt-Skills über Git. Verteilung von Teamwissen ohne Konfigurationsaufwand 1.
  • Überabstrahieren Sie nicht. Ein Skill für jedes Mikromuster erzeugt Wartungsaufwand und konkurriert um das Kontext-Budget. Erstellen Sie Skills für Expertise, die stabil, wiederverwendbar und wertvoll genug ist, um gepflegt zu werden.

Referenzen


  1. Extend Claude with Skills — Claude Code Documentation — Skill-Struktur, alle 10 Frontmatter-Felder, LLM-basiertes Matching, 2-%-Kontext-Budget, Verzeichnis-Geltungsbereiche und Fehlerbehebung 

  2. Claude Code Source — SLASH_COMMAND_TOOL_CHAR_BUDGET — Umgebungsvariable zur Überschreibung des Skill-Beschreibungs-Budgets 

  3. Skill Authoring Best Practices — Claude API Documentation — 500-Zeilen-Limit, unterstützende Dateien und Namenskonventionen 

  4. Inside Claude Code Skills: Structure, Prompts, Invocation — Mikhail Shilkov — Unabhängige Analyse des Entdeckungsmechanismus, der Kontextinjektion und des available_skills-Abschnitts - Claude Code Guide — Skills Section — Vollständige Referenz für Skill-Struktur, Frontmatter und Tool-Beschränkungen - Claude Code Hooks — Hooks ergänzen Skills: Hooks erzwingen Richtlinien, Skills liefern Expertise - Context Engineering Is Architecture — Skills als Schicht in der siebenstufigen Kontexthierarchie - AGENTS.md Patterns — Projektübergreifende Anweisungen (das Codex-Äquivalent) 

Verwandte Beiträge

Claude Code Hooks: Why Each of My 95 Hooks Exists

I built 95 hooks for Claude Code. Each one exists because something went wrong. Here are the origin stories and the arch…

7 Min. Lesezeit

Context Window Management: What 50 Sessions Taught Me About AI Development

I measured token consumption across 50 Claude Code sessions. Context exhaustion degrades output before you notice. Here …

6 Min. Lesezeit

Claude Code Hooks Tutorial: 5 Production Hooks From Scratch

Build 5 production Claude Code hooks from scratch with full JSON configs: auto-formatting, security gates, test runners,…

12 Min. Lesezeit