SpyBara
Go Premium

skills.md 2026-11-03 23:58 UTC to 2026-11-04 23:59 UTC

This page contains 1 addition and 1 deletion.

2026
Wed 4 23:59 Tue 10 21:57 Wed 11 22:59

Claude mit Skills erweitern

Erstellen, verwalten und teilen Sie Skills, um die Funktionen von Claude in Claude Code zu erweitern. Umfasst benutzerdefinierte Befehle und gebündelte Skills.

Skills erweitern die Möglichkeiten von Claude. Erstellen Sie eine SKILL.md-Datei mit Anweisungen, und Claude fügt sie zu seinem Toolkit hinzu. Claude verwendet Skills, wenn sie relevant sind, oder Sie können einen direkt mit /skill-name aufrufen.

Erstellen Sie einen Skill, wenn Sie dieselben Anweisungen, Checklisten oder mehrstufige Verfahren immer wieder in den Chat einfügen, oder wenn ein Abschnitt von CLAUDE.md zu einem Verfahren statt zu einer Tatsache geworden ist. Im Gegensatz zu CLAUDE.md-Inhalten wird der Text eines Skills nur geladen, wenn er verwendet wird, sodass umfangreiches Referenzmaterial fast nichts kostet, bis Sie es benötigen.

[!NOTE]

Informationen zu integrierten Befehlen wie /help und /compact sowie zu gebündelten Skills wie /debug und /code-review finden Sie in der Befehlsreferenz.

Benutzerdefinierte Befehle wurden in Skills zusammengeführt. Eine Datei unter .claude/commands/deploy.md und ein Skill unter .claude/skills/deploy/SKILL.md erstellen beide /deploy und funktionieren auf die gleiche Weise. Ihre vorhandenen .claude/commands/-Dateien funktionieren weiterhin. Skills bieten optionale Funktionen: ein Verzeichnis für unterstützende Dateien, Frontmatter zur Kontrolle, ob Sie oder Claude sie aufrufen, und die Möglichkeit für Claude, sie automatisch zu laden, wenn sie relevant sind.

Claude Code Skills folgen dem Agent Skills offenen Standard, der über mehrere KI-Tools hinweg funktioniert. Claude Code erweitert den Standard um zusätzliche Funktionen wie Aufrufersteuerung, Subagent-Ausführung und dynamische Kontexteinspeisung. Siehe Verwendung von Skill-Frontmatter außerhalb von Claude Code für die Frontmatter-Felder, die Teil des Standards sind, und welche Claude Code-Erweiterungen sind.

Gebündelte Skills

Claude Code enthält eine Reihe von gebündelten Skills wie /doctor, /code-review, /batch, /debug, /loop und /claude-api. Gebündelte Skills sind prompt-basiert: Sie geben Claude detaillierte Anweisungen und ermöglichen es ihm, die Arbeit mit seinen Tools zu orchestrieren. Die meisten integrierten Befehle führen stattdessen direkt eine feste Logik aus.

Sie rufen einen gebündelten Skill auf die gleiche Weise auf wie jeden anderen Skill, indem Sie / gefolgt vom Skill-Namen eingeben. Claude ruft einige gebündelte Skills automatisch auf, wenn sie relevant sind; andere, einschließlich /verify, werden nur ausgeführt, wenn Sie sie aufrufen, was Ihnen die Kontrolle darüber gibt, wann diese längeren Überprüfungen Zeit und Token aufwenden.

Die meisten gebündelten Skills sind in jeder Sitzung verfügbar. Einige hängen von einer bestimmten Funktion ab: /workflow-authoring ist beispielsweise nur verfügbar, wenn dynamische Workflows aktiviert sind.

Um gebündelte Skills auszuschalten, verwenden Sie die Einstellung disableBundledSkills.

[!NOTE]

Die Einrichtungsüberprüfung /doctor bleibt eingebbar, wenn disableBundledSkills aktiviert ist. Um sie auszublenden, setzen Sie die Umgebungsvariable DISABLE_DOCTOR_COMMAND oder einen skillOverrides-Eintrag von "doctor": "off".

Gebündelte Skills werden zusammen mit integrierten Befehlen in der Befehlsreferenz aufgelistet, gekennzeichnet mit Skill in der Spalte „Zweck“.

Überprüfen Sie Ihre Einrichtung mit /doctor

Führen Sie /doctor an der Claude Code-Eingabeaufforderung aus, um eine Einrichtungsüberprüfung zu starten, die Probleme diagnostiziert und beheben kann. Claude meldet zuerst seine Ergebnisse und bittet um Bestätigung, bevor etwas geändert wird. Die Überprüfung umfasst folgende Bereiche:

  • Zustand der Installation: doppelte oder übrig gebliebene Installationen, PATH-Probleme, nicht parsebare Einstellungsdateien und ob auf Ihrem Release-Kanal eine neuere Version verfügbar ist
  • Erweiterungen: nicht genutzte Skills, MCP-Server und Plugins im Vergleich zu ihren Kontextkosten sowie langsame Hooks
  • CLAUDE.md-Dateien: lokale CLAUDE.md-Dateien, die eingecheckte Dateien duplizieren, eingecheckte CLAUDE.md-Inhalte, die Claude aus der Codebasis ableiten könnte, sowie die verbleibenden, stets geladenen Anweisungen, die Claude in Skills und verschachtelte CLAUDE.md-Dateien zu migrieren anbietet, die bei Bedarf geladen werden
  • Berechtigungen: ein Angebot, den Auto-Modus zu Ihrem Standard-Berechtigungsmodus zu machen und nur lesende Befehle, die Sie häufig ablehnen, vorab zu genehmigen
  • Nutzung: bei einem Pro-, Max-, Ultra-, Team- oder Enterprise-Plan die Änderungen, die /usage empfiehlt, um Ihre Plan-Nutzung zu senken, gemessen über die letzten 7 Tage. Claude schlägt die Änderungen vor, die es selbst vornehmen kann, und meldet den Rest als Hinweis, etwa einen Befehl, den Sie ausführen sollen. Die Nutzungsprüfung erfordert Claude Code v2.1.305 oder später, und /doctor lässt sie aus, solange Remote Control verbunden ist.

Für eine nur lesende Diagnose der Installation, ohne eine Sitzung zu starten, führen Sie stattdessen claude doctor in Ihrem Terminal aus.

Um statt Ihrer Einrichtung Ihre Anweisungen zu prüfen, führen Sie /doctor prompt-audit an der Claude Code-Eingabeaufforderung aus. Claude prüft Ihre CLAUDE.md-Dateien, Skills und andere Konfiguration auf veraltete oder widersprüchliche Anweisungen, anstatt die Einrichtungsüberprüfung auszuführen. Der Unterbefehl prompt-audit erfordert Claude Code v2.1.283 oder später.

Führen Sie Ihre App aus und überprüfen Sie sie

Drei mitgelieferte Skills arbeiten zusammen, um Ihre App zu starten und Änderungen gegen die laufende App zu bestätigen, anstatt nur gegen Tests:

Skill Zweck
/run Starten und steuern Sie Ihre App, um eine Änderung in Aktion zu sehen
/verify Erstellen und führen Sie Ihre App aus, um zu bestätigen, dass eine Codeänderung das tut, was sie soll, ohne auf Tests oder Typüberprüfungen zurückzugreifen
/run-skill-generator Lehren Sie /run und /verify, wie Sie Ihr Projekt erstellen und starten

/run und /verify funktionieren ohne Einrichtung. Sie leiten den Start von Ihrem Projekttyp ab (CLI, Server, TUI, Browser-gesteuert) und von dem, was sich in Ihrer README, package.json oder Makefile befindet. Diese Ableitung wird unzuverlässig für Projekte, die mehr als einen Standard-Start benötigen: eine Datenbank, eine Env-Datei, eine grafische Sitzung, einen mehrstufigen Build.

/run-skill-generator zeichnet stattdessen das Rezept auf. Es bringt Ihre App aus einer sauberen Umgebung zum Laufen, erfasst, was funktioniert hat (die Installationsbefehle, die Umgebungsvariablen, das Startskript), und speichert es als projektspezifischen Skill unter .claude/skills/run-<name>/. Danach folgen /run, /verify und alle anderen Agenten im Repository dem aufgezeichneten Rezept, anstatt es neu zu entdecken. Führen Sie /run-skill-generator einmal pro Projekt aus, und erneut, wenn sich der Build- oder Startprozess ändert.

/verify kann auch sein eigenes Rezept aufzeichnen. Wenn es Ihre App ohne ein aufgezeichnetes Rezept erstellen und steuern muss, schreibt es, was funktioniert hat, in .claude/skills/verify/SKILL.md im Repository-Root oder im betroffenen Paketverzeichnis in einem Monorepo, damit spätere Läufe und andere Agenten die gleichen Schritte befolgen. Im Repository-Root ersetzt der aufgezeichnete Skill den mitgelieferten /verify.

Claude bearbeitet die aufgezeichnete Datei nur, wenn es einen Lauf falsch gesteuert hat, z. B. einen Befehl, der fehlgeschlagen ist, oder einen fehlenden Schritt, damit Sie die Datei ohne sitzungsspezifische Diffs committen können.

Führen Sie Ihre Prüfungen vor jedem Commit aus

Wenn eine Sitzung mit einem vorhandenen Skill namens verify oder simplify startet, weisen die Commit-Anweisungen von Claude Code Claude an, ihn unmittelbar vor jedem Commit auszuführen, außer bei Änderungen an Dokumentation oder Tests. Dies erfordert Claude Code v2.1.286 oder später. Claude erhält diese Anweisung, wenn zu Beginn der Sitzung die folgenden Bedingungen erfüllt sind:

  • Speicherort: Der Skill wird aus dem Enterprise-, persönlichen, Projekt- oder zusätzlichen Verzeichnis-Speicherort geladen oder aus einer .claude/commands/-Datei mit diesem Namen. Das Rezept, das /verify in Ihrem Repository-Root aufzeichnet, ist ein Projekt-Skill und zählt daher. Die mitgelieferten Skills /verify und /simplify, Plugin-Skills und Skills aus Ihrem claude.ai-Konto zählen nicht.
  • Aufruf: Claude kann den Skill aufrufen. Wenn Sie Claude daran gehindert haben, ihn aufzurufen, zum Beispiel mit disable-model-invocation: true, erhält Claude die Anweisung nicht.
  • Git-Anweisungen: Sie haben includeGitInstructions nicht ausgeschaltet. Wenn Sie es ausschalten, wird diese Anweisung zusammen mit den übrigen integrierten Commit- und PR-Anweisungen entfernt.

Arbeiten Sie an Claude API-Projekten

Der gebündelte /claude-api-Skill lädt Claude API und Managed Agents-Referenzmaterial für die Sprache Ihres Projekts. Claude aktiviert ihn auch automatisch, wenn Ihr Code anthropic oder @anthropic-ai/sdk importiert.

Um einen der Workflows des Skills zu starten, geben Sie einen Unterbefehl nach dem Skill-Namen an der Claude Code-Eingabeaufforderung ein, z. B. /claude-api migrate. Die Tabelle listet auf, was jeder Unterbefehl tut, und die früheste Claude Code-Version, die ihn enthält. migrate und managed-agents-onboard stammen aus einer Zeit vor v2.1.221, der ältesten Version, die die Tabelle verfolgt.

Unterbefehl Was er tut Mindestversion
migrate Aktualisieren Sie Ihren vorhandenen Claude API-Code auf ein neueres Modell Früher als v2.1.221
upgrade Aktualisieren Sie das Anthropic SDK Ihres Projekts auf eine neue Hauptversion und passen Sie Ihren Code an deren inkompatible Änderungen an v2.1.236 oder später
api-version Aktualisieren Sie Ihren Claude API-Code für eine neuere API-Version und stellen Sie Ihre Anfragen anschließend auf diese Version um v2.1.307 oder später
managed-agents-onboard Durchlaufen Sie die Erstellung eines neuen Managed Agent Früher als v2.1.221
managed-agents-onboard <url> Erstellen Sie den Managed Agent, den die Seite unter der URL beschreibt, z. B. eine Seite in der Managed Agents-Dokumentation v2.1.290 oder später
managed-agents-onboard <quickstart-name> Erstellen Sie eine der Schnellstart-Vorlagen der Console, z. B. deep-researcher. Wenn Sie ein einzelnes Wort angeben, das kein Vorlagenname ist, listet Claude die gültigen Namen auf v2.1.290 oder später
managed-agents-secure [<agent-id>] Lesen Sie die Einstellungen eines Managed Agent und melden Sie, wo sie mit dem Leitfaden Secure your Managed Agents deployment übereinstimmen oder davon abweichen. Erfordert die ant CLI v2.1.304 oder später
prompt-audit Kennzeichnen Sie Anweisungen, die für ältere Modelle in Ihren Prompts, Skills und Tool-Beschreibungen geschrieben wurden, und schlagen Sie Fixes als Diff vor v2.1.221 oder später
cost-optimize Profilieren Sie, wohin die Claude API-Ausgaben Ihres Projekts gehen, und schlagen Sie Einsparungen aus Optionen wie Prompt-Caching, Trimmen unnötiger Input- und Output-Token, Batch-Verarbeitung, Aufwand und Modellwahl vor, eine Änderung nach der anderen v2.1.247 oder später
build-eval Erstellen Sie einen Eval-Satz für Ihre Claude-gestützte App v2.1.259 oder später
hillclimb Verbessern Sie Ihre App iterativ gegen einen vorhandenen Eval v2.1.259 oder später
preserved-thinking-migration Finden Sie die Änderungen, die Ihre Integration an früheren Turns, ihrem System-Prompt oder ihrer Tool-Liste vornimmt, die preserved thinking-Blöcke ungültig machen, messen Sie, wie viel Reasoning jede einzelne fallen lässt, und schlagen Sie Fixes nacheinander vor, wobei Sie nach jeder Änderung neu messen v2.1.282 oder später

Erste Schritte

Erstellen Sie Ihre erste Skill

Dieses Beispiel erstellt eine Skill, die die nicht committeten Änderungen in Ihrem Git-Repository zusammenfasst und alles Riskante kennzeichnet. Sie zieht den Live-Diff in den Prompt, bevor Claude ihn liest, sodass die Antwort in Ihrem tatsächlichen Arbeitsbaum verankert ist, anstatt auf dem, was Claude aus offenen Dateien erraten kann. Claude lädt die Skill automatisch, wenn Sie nach Ihren Änderungen fragen, oder Sie können sie direkt mit /summarize-changes aufrufen.

1. Erstellen Sie das Skill-Verzeichnis

Erstellen Sie ein Verzeichnis für die Skill in Ihrem persönlichen Skills-Ordner. Persönliche Skills sind in allen Ihren Projekten verfügbar.

mkdir -p ~/.claude/skills/summarize-changes

2. Schreiben Sie SKILL.md

Jede Skill benötigt eine SKILL.md-Datei mit zwei Teilen: YAML-Frontmatter zwischen ----Markierungen, das Claude mitteilt, wann die Skill verwendet werden soll, und Markdown-Inhalt mit den Anweisungen, die Claude befolgt, wenn die Skill ausgeführt wird. Der Verzeichnisname wird zum Befehl, den Sie eingeben, und die description hilft Claude zu entscheiden, wann die Skill automatisch geladen werden soll.

Speichern Sie dies unter ~/.claude/skills/summarize-changes/SKILL.md:

---
description: Fasst nicht committete Änderungen zusammen und kennzeichnet alles Riskante. Verwenden Sie dies, wenn der Benutzer fragt, was sich geändert hat, eine Commit-Nachricht möchte oder seinen Diff überprüfen möchte.
---

## Aktuelle Änderungen

!`git diff HEAD`

## Anweisungen

Fassen Sie die obigen Änderungen in zwei oder drei Aufzählungspunkten zusammen, listen Sie dann alle Risiken auf, die Sie bemerken, wie fehlende Fehlerbehandlung, hartcodierte Werte oder Tests, die aktualisiert werden müssen. Wenn der Diff leer ist, sagen Sie, dass es keine nicht committeten Änderungen gibt.

Die Zeile !`git diff HEAD` verwendet dynamische Kontextinjektion: Claude Code führt den Befehl aus und ersetzt die Zeile durch seine Ausgabe, bevor Claude den Skill-Inhalt sieht, sodass die Anweisungen mit dem aktuellen Diff bereits inline ankommen.

3. Testen Sie die Skill

Öffnen Sie ein Git-Projekt, nehmen Sie eine kleine Änderung an einer beliebigen Datei vor, und starten Sie Claude Code, indem Sie claude ausführen. Sie können die Skill auf zwei Arten testen.

Lassen Sie Claude sie automatisch aufrufen, indem Sie etwas eingeben, das der Beschreibung entspricht:

What did I change?

Oder rufen Sie sie direkt auf mit dem Skill-Namen:

/summarize-changes

In beiden Fällen sollte Claude mit einer kurzen Zusammenfassung Ihrer Änderung und einer Liste von Risiken antworten.

Wählen Sie, wo Skills geladen werden

Wo Sie einen Skill speichern, entscheidet, welche Sitzungen ihn laden. Speichern Sie ihn in Ihrem Home-Verzeichnis, um ihn in jedem Projekt zu erhalten, committen Sie ihn in ein Repository, um ihn mit allen zu teilen, die dort arbeiten, oder verteilen Sie ihn über ein Plugin oder verwaltete Einstellungen, um ein ganzes Team zu erreichen.

Speicherort Pfad Wird geladen in
Enterprise .claude/skills/<skill-name>/SKILL.md im Verzeichnis für verwaltete Einstellungen Alle Benutzer auf Maschinen, auf denen Ihre Organisation es bereitstellt
Persönlich ~/.claude/skills/<skill-name>/SKILL.md Alle Ihre Projekte auf dieser Maschine, aber nicht Cowork- oder Cloud-Sitzungen
Projekt .claude/skills/<skill-name>/SKILL.md Sitzungen in diesem Repository, aber nicht Cloud-Threads in einem Projekt. Committen Sie es, damit Ihr Team es auch erhält
Verschachtelt <subdir>/.claude/skills/<skill-name>/SKILL.md Sitzungen, die in oder unter <subdir> gestartet werden, aber nicht Cloud-Threads in einem Projekt. Außerhalb dieser Threads lädt eine Sitzung, die darüber gestartet wird, den Skill, sobald Claude an Dateien dort arbeitet. Siehe Monorepos und Unterverzeichnisse
Zusätzliches Verzeichnis .claude/skills/<skill-name>/SKILL.md in einem Verzeichnis, das Sie mit --add-dir übergeben Diese Sitzung. Siehe Verzeichnisse außerhalb des Projekts
Plugin <plugin>/skills/<skill-name>/SKILL.md Überall dort, wo das Plugin aktiviert ist, als /plugin-name:skill-name
claude.ai-Konto Skills, die für Ihr claude.ai-Konto aktiviert sind Cowork-Sitzungen, Cloud-Sitzungen und Terminal-Sitzungen, in denen Sie sich mit diesem Konto anmelden. Siehe Skills, die von claude.ai synchronisiert werden

Skill-Ordner folgen auch diesen Regeln:

  • Symverlinkte Ordner: Ein <skill-name>-Eintrag am Enterprise-, Personal- oder Projekt-Speicherort kann ein Symlink zu einem Verzeichnis an anderer Stelle auf der Festplatte sein. Claude Code liest SKILL.md aus dem Ziel und lädt den Skill einmal, auch wenn mehrere Speicherorte auf dasselbe Ziel verweisen. Plugin-Skills handhaben Symlinks anders.
  • Reservierter Name synced: Benennen Sie einen Skill-Ordner nicht synced, in keiner Schreibweise. Claude Code verwendet ~/.claude/skills/synced/ für Skills, die von claude.ai heruntergeladen werden und überspringt einen Skill, den Sie unter diesem Namen am Enterprise-, Personal- und Projekt-Speicherort erstellen.
  • Reservierter Name anthropic-skills: Außerhalb eines Plugins wird ein Skill-Ordner oder eine Befehlsdatei mit dem Namen anthropic-skills oder einem Namen, der mit anthropic-skills: beginnt, nicht geladen. Siehe Namen, die für synchronisierte Skills reserviert sind.
  • Zeichen im Namen: Außerhalb eines Plugins wird ein Skill-Ordner nicht geladen, wenn sein Name ein Zeichen wie ein Leerzeichen mit Nullbreite oder < enthält. Siehe Zeichen, die ein Skill-Name nicht enthalten kann.
  • Befehlsdateien: Eine Markdown-Datei in .claude/commands/ ist das ältere Format und funktioniert immer noch. Sie unterstützt dieselbe Frontmatter außer name und paths. Um den Namen zu finden, den Sie eingeben, um ihn aufzurufen, siehe Wie ein Skill seinen Befehlsnamen erhält. Bevorzugen Sie einen Skill für neue Arbeiten, da Skills auch unterstützende Dateien unterstützen.
  • Skill-Ordner als Plugin: Fügen Sie einem persönlichen oder Projekt-Skill-Ordner eine .claude-plugin/plugin.json hinzu, dann kann Claude Code ihn als Plugin mit dem Namen <name>@skills-dir mit eigenen Agenten, Hooks und MCP-Servern laden. In .claude/skills/ eines Projekts müssen Sie dafür zuerst den Workspace-Trust-Dialog akzeptieren, und an beiden Speicherorten setzt dies voraus, dass Ihr Administrator Plugins aus Skill-Verzeichnissen nicht blockiert hat.

Skills in Monorepos und Unterverzeichnissen laden

Claude Code lädt Projekt-Skills aus .claude/skills/ in dem Verzeichnis, in dem Sie ihn starten, und in jedem übergeordneten Verzeichnis bis zur Repository-Root, sodass das Starten in packages/frontend/ immer noch Skills aufgreift, die in der Root definiert sind. Wenn Sie die Sitzung mit /cd verschieben auf v2.1.246 oder später, fügt Claude Code die Projekt-Skills des neuen Verzeichnisses hinzu.

In einer Sitzung, die in einem verknüpften Git Worktree läuft, den Sie mit --worktree oder git worktree add erstellt haben, durchsucht Claude Code übergeordnete Verzeichnisse nur bis zur Worktree-Root. Auf Claude Code v2.1.277 oder später lädt Claude Code, wenn der Worktree-Checkout kein .claude/skills-Verzeichnis in seiner Root hat, stattdessen die Projekt-Skills des Haupt-Checkouts. Siehe Was Worktrees mit dem Haupt-Checkout teilen.

Skills in einem .claude/skills/-Verzeichnis unterhalb des Ortes, an dem Sie gestartet haben, werden beim Start nicht geladen. Sie werden geladen, wenn Claude zum ersten Mal eine Datei in diesem Unterverzeichnis liest oder bearbeitet, und bleiben für den Rest der Sitzung verfügbar. Bis dahin erscheinen sie nicht im /-Menü und Sie können sie nicht nach Name aufrufen. Um sie früher zu laden, führen Sie /add-dir mit dem Pfad des Unterverzeichnisses aus, was Claude Code v2.1.257 oder später erfordert. Für eine Worktree-Sitzung, die Sie aus der Desktop-App starten, siehe Was Worktrees mit dem Haupt-Checkout teilen.

Wenn ein verschachtelter Skill denselben Namen wie ein anderer Skill hat, bleiben beide verfügbar. Mit einem deploy-Skill in der Repository-Root und einem anderen in apps/web/.claude/skills/:

  • /deploy führt den Root-Skill aus. Claude Code listet auch die verzeichnisqualifizierten Varianten für Claude auf, mit einer Anweisung, denjenigen aufzurufen, dessen Verzeichnis die Dateien enthält, an denen es arbeitet, sodass der verschachtelte Skill immer noch auf Arbeiten in apps/web/ angewendet wird.
  • /apps/web:deploy führt den verschachtelten Skill eigenständig aus. Seine Beschreibung benennt das Verzeichnis, auf das es angewendet wird.

Skills aus einem Verzeichnis außerhalb des Projekts laden

Wenn Sie ein Verzeichnis mit --add-dir oder /add-dir hinzufügen, lädt Claude Code die Skills in .claude/skills/ dieses Verzeichnisses zusammen mit .claude/commands/ und .claude/agents/. Verzeichnisse, die das Agent SDK durch additionalDirectories in TypeScript oder add_dirs in Python hinzufügt, werden auf die gleiche Weise geladen, da das SDK sie als --add-dir übergibt. Die Einstellung permissions.additionalDirectories in settings.json gewährt nur Dateizugriff und lädt keine dieser.

Claude Code überwacht .claude/skills/ in einem Verzeichnis, das Sie mit --add-dir beim Start übergeben, wie Einen Skill während einer Sitzung bearbeiten beschreibt. Es überwacht nicht das .claude/commands/ oder .claude/agents/ des hinzugefügten Verzeichnisses, daher starten Sie die Sitzung neu, nachdem Sie eine Datei dort geändert haben.

Diese Ladevorgänge hängen von der project-Einstellungsquelle ab, die standardmäßig aktiviert ist. Eine strictPluginOnlyCustomization-Richtlinie, Bare Mode und --safe-mode beschränken sie weiter, wie diese Seiten beschreiben. Siehe Zusätzliche Verzeichnisse gewähren Dateizugriff, keine Konfiguration für die vollständige Tabelle, was ein hinzugefügtes Verzeichnis lädt, einschließlich CLAUDE.md und Plugin-Einstellungen.

Einen gleichnamigen Skill aus einem hinzugefügten Verzeichnis ausführen

Ein Skill aus einem hinzugefügten Verzeichnis erhält ein Präfix, wenn sein Ordnername mit einem Enterprise-, persönlichen oder Projekt-Skill kollidiert oder mit einem Skill in einem zuvor hinzugefügten Verzeichnis. Um ihn auszuführen, geben Sie /<prefix>:<skill-name> im Eingabefeld von Claude Code ein. Das /-Menü listet den Skill unter seinem Namen mit Präfix auf, und Wie ein Skill seinen Befehlsnamen erhält beschreibt, woher das Präfix stammt. Dieser Name erfordert Claude Code v2.1.309 oder später.

Zum Beispiel mit --add-dir ../cli und einem verify-Skill sowohl in Ihrem Projekt als auch in ../cli:

  • /verify führt den Skill Ihres Projekts aus
  • /cli:verify führt den Skill aus ../cli aus

Skills auflösen, die denselben Namen haben

Wenn zwei Skills denselben Verzeichnis- oder Dateinamen haben, entscheidet, woher jeder kam, welchen /name ausführt. Für einen Namen, der durch das Frontmatter-Feld name festgelegt wird, siehe Wie ein Skill seinen Befehlsnamen erhält.

Gleicher Name in Welcher wird ausgeführt
Zwei von Enterprise, Personal und Projekt Enterprise über Personal und Personal über Projekt. Mit deploy in beiden ~/.claude/skills/ und .claude/skills/ des Projekts führt /deploy den persönlichen aus
Einer dieser Speicherorte und ein gebündelter Skill Ihr Skill ersetzt den gebündelten Befehl, aber nicht seine Aliase. Ein Projekt-code-review-Skill ersetzt /code-review, und der gebündelte Alias /review führt niemals Ihren Skill aus
Einer dieser Speicherorte und ein integrierter Befehl In einer lokalen Terminal-Sitzung ersetzt Ihr Skill den integrierten Befehl, aber nicht seine Aliase. Ein Projekt-usage-Skill ersetzt /usage, und der integrierte Alias /cost führt weiterhin den integrierten Befehl aus
Ein Skill und eine Datei in .claude/commands/ Der Skill
Ein Projekt-Root-Skill und ein verschachtelter Skill Beide werden geladen. Siehe Monorepos und Unterverzeichnisse
Ein Enterprise-, persönlicher oder Projekt-Skill und ein Skill in einem hinzugefügten Verzeichnis außerhalb des Projekts Der Enterprise-, persönliche oder Projekt-Skill, während der Skill des hinzugefügten Verzeichnisses unter einem Namen mit Präfix ausgeführt wird. Siehe Einen gleichnamigen Skill aus einem hinzugefügten Verzeichnis ausführen
Zwei hinzugefügte Verzeichnisse außerhalb des Projekts Der Skill aus dem zuerst hinzugefügten Verzeichnis, in der Reihenfolge von --add-dir oder /add-dir. Der andere wird unter einem Namen mit Präfix ausgeführt
Ein Plugin-Skill und ein Skill an einem der obigen Speicherorte Beide werden geladen, da Plugin-Skills als /plugin-name:skill-name namensgebunden sind
Einer der obigen und der Kurzname eines Skills, der von Ihrem claude.ai-Konto synchronisiert wird Der andere Skill oder Befehl. Der synchronisierte Skill wird dann aufgelistet und läuft nur unter seinem vollständigen Namen. Siehe Wenn ein synchronisierter Skill-Name mit einem anderen Befehl übereinstimmt

Skills in Cowork- und Cloud-Sitzungen verwenden

Cowork-Sitzungen und Cloud-Sitzungen, einschließlich geplanter Aufgaben in der Cloud, lesen nicht ~/.claude/skills/ auf Ihrer Maschine. Sowohl interaktive als auch geplante Cowork-Sitzungen laden die Skills, die für Ihr claude.ai-Konto aktiviert sind, synchronisiert beim Sitzungsstart. Verwalten Sie sie über Customize in der Desktop-App-Seitenleiste oder in den Skill-Einstellungen auf claude.ai.

Wenn ein Skill nur in ~/.claude/skills/ auf Ihrer Maschine vorhanden ist, meldet Claude Code, dass der Skill nicht gefunden wurde, wenn eine geplante Aufgabe in der Cloud ihn aufruft. Das liegt daran, dass jede Ausführung als frische Cloud-Sitzung startet. Um einen persönlichen Skill in diesen Sitzungen verfügbar zu machen:

  • Für Cowork-Sitzungen, Cloud-Sitzungen und Cloud-Threads in einem Projekt aktivieren Sie den Skill für Ihr claude.ai-Konto. In einem Cloud-Thread eines Projekts sind Skills, die in .claude/skills/ eines Repositorys committet sind, nicht verfügbar. Einige Sitzungen in einer selbst gehosteten Umgebung laden die Skills Ihres Kontos nicht.
  • Für Cloud-Sitzungen außer Projekt-Threads können Sie den Skill stattdessen in .claude/skills/ des Repositorys committen. Plugins, die in .claude/settings.json des Repositorys deklariert sind, und Plugins, die nur in Ihren Benutzereinstellungen aktiviert sind, werden nicht in Cloud-Sitzungen geladen.

Desktop-geplante Aufgaben werden lokal auf Ihrer Maschine ausgeführt, daher laden sie ~/.claude/skills/.

Skills, die von claude.ai synchronisiert werden

Dieser Abschnitt gilt für Sie, wenn Sie Cowork- oder Cloud-Sitzungen verwenden oder sich in Ihrem Terminal mit einem claude.ai-Konto bei Claude Code anmelden. In diesen Sitzungen lädt Claude Code die Skills, die für Ihr claude.ai-Konto aktiviert sind, ohne Setup auf Ihrer Seite, wie Wo synchronisierte Skills geladen werden beschreibt. Diese Skills umfassen die, die Sie in Ihren claude.ai-Einstellungen erstellen oder aktivieren, Skills, die Ihre Organisation dort bereitstellt, und Anthropic's integrierte Skills wie pdf und xlsx.

Claude Code lädt einen synchronisierten Skill von Ihrem Konto herunter, anstatt eine Datei zu lesen, die Sie auf der Maschine geschrieben haben, auf der die Sitzung läuft, daher wendet es Regeln auf synchronisierte Skills an, die nicht auf die Skills angewendet werden, die Sie in den Skill-Speicherorten speichern.

Wo synchronisierte Skills geladen werden

In einer Cowork- oder Cloud-Sitzung lädt Claude Code die Skills, die für Ihr claude.ai-Konto aktiviert sind, und Skills in Cowork- und Cloud-Sitzungen sagt, wie Sie wählen, welche Skills diese Sitzungen erhalten.

In Ihrem Terminal synchronisiert Claude Code diese Skills in Sitzungen, in denen Sie sich mit Ihrem claude.ai-Konto anmelden. Wenn die Sitzung startet, lädt Claude Code Ihre Account-Skills im Hintergrund in ~/.claude/skills/synced/ herunter und prüft dann, während die Sitzung läuft, auf claude.ai auf Änderungen. Wenn eine Prüfung feststellt, dass ein Skill auf claude.ai hinzugefügt, bearbeitet oder deaktiviert wurde, fügt Claude Code ihn in der laufenden Sitzung hinzu, aktualisiert oder entfernt ihn ohne Neustart. Die Synchronisierung in Terminal-Sitzungen erfordert Claude Code v2.1.273 oder später.

Während die Sitzung inaktiv ist, laufen die Prüfungen seltener:

  • Während Sie oder Claude in der Sitzung arbeiten: Etwa alle 10 Minuten wird eine Prüfung ausgeführt.
  • Während die Sitzung inaktiv ist: Etwa alle 40 Minuten wird eine Prüfung ausgeführt. Wenn Sie wieder in der Sitzung tippen, prüft Claude Code innerhalb weniger Minuten, sofern die letzte Prüfung mehr als 10 Minuten zurückliegt.

Die Synchronisierung verzögert niemals den Start, da Claude auf den Download eines Skills nur wartet, wenn er diesen Skill aufruft. Ein kurzer nicht-interaktiver Lauf kann daher beendet werden, bevor ein neu hinzugefügter Skill heruntergeladen wird. In diesem Fall lädt eine spätere Sitzung ihn herunter. Um einen nicht-interaktiven Lauf dazu zu bringen, Ihre Skills herunterzuladen und auf die Liste zu warten, bevor er den Prompt beantwortet, setzen Sie CLAUDE_CODE_SYNC_SKILLS auf 1. Vor v2.1.273 luden Terminal-Sitzungen sie nur in einem -p-Lauf mit gesetzter Variable herunter.

Claude Code synchronisiert nur in einer Sitzung, die sich mit Ihrem claude.ai-Konto anmeldet und Feature-Flags von Anthropic abruft. Es synchronisiert nicht in diesen Sitzungen:

  • Eine Sitzung, die keine Anmeldung verwendet, die von /login gespeichert wurde, wie eine, die sich mit einem API-Schlüssel authentifiziert, oder eine, bei der ANTHROPIC_AUTH_TOKEN, CLAUDE_CODE_OAUTH_TOKEN oder ein apiKeyHelper-Skript die Anmeldedaten bereitstellt
  • Eine Sitzung, die keine Feature-Flags abruft, wie eine auf Amazon Bedrock oder eine, bei der Sie CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC setzen
  • Eine Sitzung in Bare Mode oder eine, die Sie mit --safe-mode starten
  • Eine Sitzung, bei der die verwalteten Einstellungen Ihrer Organisation Skills auf Plugin-Quellen sperren, oder eine, die Sie mit einer --setting-sources-Liste starten, die user auslässt

Wenn Sie sich während einer Sitzung mit /login anmelden, starten Sie Claude Code neu, um die Synchronisierung zu starten.

Skills, die eine frühere Sitzung synchronisiert hat, bleiben auf der Festplatte. Claude Code lädt sie in späteren Sitzungen, die sich bei demselben Konto anmelden, auch wenn es claude.ai nicht erreichen kann.

Claude Code lädt synchronisierte Skills herunter und lädt sie niemals hoch. Wenn Sie oder Claude eine Datei unter ~/.claude/skills/synced/ bearbeiten, wird die Änderung nicht in Ihrem claude.ai-Konto gespeichert, und eine spätere Synchronisierung kann sie überschreiben oder entfernen. Um einen synchronisierten Skill zu ändern, aktualisieren Sie ihn auf claude.ai; die nächste Synchronisierung lädt die neue Version herunter.

Um zu sehen, welche Skills synchronisiert wurden, führen Sie /skills aus. Das Menü listet sie unter claude.ai sync auf.

Einige von Anthropic's Skills, wie pdf und xlsx, werden immer synchronisiert. Für die übrigen aktivieren oder deaktivieren Sie einen Skill in Ihren Skill-Einstellungen auf claude.ai, um zu ändern, ob er synchronisiert wird.

Um die Synchronisierung auf einer Maschine zu stoppen, setzen Sie syncClaudeAiSkills in Ihren Benutzereinstellungen auf false. Claude Code stoppt das Herunterladen, und beim nächsten Start verschiebt es die Skills, die es bereits synchronisiert hat, in ~/.claude/skills/.trash/ und lädt sie nicht mehr. Ihre Organisation kann die Synchronisierung für alle ausschalten, indem sie Skills auf claude.ai ausschaltet. Um die Synchronisierung zu stoppen, während Skills eingeschaltet bleiben, kann sie denselben Schlüssel in verwalteten Einstellungen setzen.

Wenn Ihre Organisation Skills auf claude.ai ausschaltet, entfernt Claude Code die heruntergeladenen Skills und sie werden nicht mehr geladen. Die entfernten Skills werden in ~/.claude/skills/.trash/ verschoben, wo Sie die Dateien wiederherstellen können, bis die Aufbewahrungslöschung sie löscht. Sobald Ihre Organisation Skills wieder einschaltet, lädt Claude Code die Skills herunter, die Sie bei der nächsten Synchronisierung aktiviert haben.

Wenn ein synchronisierter Skill-Name mit einem anderen Befehl übereinstimmt

Sie können einen synchronisierten Skill mit seinem Kurznamen /<name> oder mit seinem vollständigen Namen /anthropic-skills:<name> aufrufen. Wenn ein anderer Befehl den Kurznamen verwendet, führt /<name> den anderen Befehl aus, und der synchronisierte Skill wird nur als /anthropic-skills:<name> ausgeführt. Mit einem lokalen deploy-Skill und einem synchronisierten deploy führt /deploy den lokalen Skill aus und /anthropic-skills:deploy führt den synchronisierten aus. Vor v2.1.269 hatte ein synchronisierter Skill nur seinen Kurznamen.

Im /-Menü, /skills und /context wird ein synchronisierter Skill unter seinem Kurznamen angezeigt, oder unter seinem vollständigen Namen, während ein anderer Befehl den Kurznamen verwendet. Führen Sie /skills in Ihrer Sitzung aus. Eine Notiz unter der Liste erklärt jeden synchronisierten Skill, der seinen Kurznamen verloren hat. Wenn einer Ihrer persönlichen Skills oder Befehlsdateien in ~/.claude/ den Namen verwendet, sagt die Notiz auch, was Sie umbenennen oder löschen müssen, um ihn freizugeben.

Von v2.1.269 bis v2.1.280 zeigten diese Listen jeden synchronisierten Skill unter seinem vollständigen Namen an, und /skills hatte keine solche Notiz; beides änderte sich in v2.1.281.

Der Befehl, der den Kurznamen verwendet, kann einer dieser sein:

  • Ein integrierter Befehl oder ein gebündelter Skill, einschließlich eines, der in Ihrer Sitzung nicht verfügbar ist, zum Beispiel nachdem Sie gebündelte Skills ausschalten
  • Ein Skill auf einer beliebigen lokalen Ebene oder eine Datei in .claude/commands/
  • Ein Plugin-Skill
  • Eine MCP-Eingabeaufforderung

Claude Code kennzeichnet synchronisierte Skills, damit Sie sehen können, woher sie stammen. Das /skills-Menü und /context gruppieren synchronisierte Skills unter claude.ai sync, und das /-Befehlsmenü kennzeichnet sie als von claude.ai stammend.

Beim Vergleich von Namen ignoriert Claude Code Groß-/Kleinschreibung, Abstände und unsichtbare Zeichen und behandelt Kompatibilitätsformen wie Vollbreitenbuchstaben und Bindestrich-Varianten als ihre einfachen Äquivalente. Zum Beispiel zählen ein synchronisierter Skill mit dem Namen Commit und ein lokaler Skill mit dem Namen commit als derselbe Name, daher führt /commit weiterhin Ihren lokalen Skill aus.

Ein Name, der sich nur durch einen ähnlich aussehenden Buchstaben aus einem anderen Alphabet unterscheidet, zählt als ein anderer Name, und die claude.ai sync-Kennzeichnung ist, wie Sie die beiden unterscheiden. Diese Prüfungen und Kennzeichnungen erfordern Claude Code v2.1.228 oder später.

Namen, die für synchronisierte Skills reserviert sind

Claude Code reserviert den Namen anthropic-skills und jeden Namen in diesem Namespace wie anthropic-skills:pdf für Skills, die von claude.ai synchronisiert werden, daher führt der vollständige Name eines synchronisierten Skills niemals etwas anderes aus. Der Name ist in jeder Sitzung reserviert, unabhängig davon, ob Sie sich mit einem claude.ai-Konto anmelden oder nicht.

  • Ein Skill-Ordner, eine Frontmatter name, eine Datei oder ein Unterordner in .claude/commands/ oder ein gespeicherter Workflow: er wird nicht geladen. Eine Startup-Benachrichtigung benennt das erste Element zum Umbenennen oder Bearbeiten.
  • Ein Plugin mit dem Namen anthropic-skills: es wird geladen. Wenn einer seiner Skills und ein synchronisierter Skill beide <name> genannt werden, führt /anthropic-skills:<name> den synchronisierten Skill aus.
  • Ein MCP-Server mit dem Namen anthropic-skills: er verbindet sich und seine Tools funktionieren, aber seine Eingabeaufforderungen erscheinen nicht als Befehle. Benennen Sie den Server in Ihrer MCP-Konfiguration um, um sie aufzulisten.

Wie Claude Code die Frontmatter eines synchronisierten Skills handhabt

Claude Code wendet zwei Regeln auf die Frontmatter eines synchronisierten Skills an:

  • Das Frontmatter gilt in jeder Art von Sitzung, daher durchläuft eine allowed-tools-Gewährung den normalen Berechtigungsfluss. Wenn Ihre Organisation allowManagedPermissionRulesOnly setzt, gilt die Gewährung nicht.
  • Claude Code bereinigt den Anzeigetext, den der Skill bereitstellt, wie seine Beschreibung. Es entfernt Steuerzeichen, und in Text, der Claude erreicht, wie die Beschreibung, maskiert es auch spitzklammern, damit der Text Claude Code's interne Formatierung nicht imitieren kann. Diese Bereinigung erfordert Claude Code v2.1.228 oder später.

Wie Claude Code den Body eines synchronisierten Skills handhabt

Was Claude Code mit dem Body eines synchronisierten Skills macht, hängt davon ab, wo die Sitzung läuft:

  • In einer Cloud-Sitzung behält der Body das Verhalten, das ein lokaler Skill hat, da die Sitzung in einem isolierten Container läuft.
  • In einer Cowork-Sitzung auf Ihrem Desktop behält der Body das Verhalten, das ein lokaler Skill hat, außer dass Claude Code jede !-Befehlszeile durch den disableSkillShellExecution-Platzhalter ersetzt, wie es für jeden Skill tut, den Sie dort bereitstellen.
  • In jeder anderen Sitzung auf Ihrer Maschine führt Claude Code keine !-Befehle aus, hängt nicht die Dateien an, die @-Referenzen benennen, wie es für einen lokalen Skill tut, und ersetzt nicht die Platzhalter ${CLAUDE_PROJECT_DIR} und ${CLAUDE_SESSION_ID}, daher erreichen die @-Referenzen und beide Platzhalter Claude als wörtlicher Text. Eine !-Befehlszeile erreicht Claude auch als wörtlicher Text oder als dieser Platzhalter, wenn disableSkillShellExecution aktiviert ist. Diese Handhabung erfordert Claude Code v2.1.228 oder später.

Einen Skill während einer Sitzung bearbeiten

Claude Code überwacht Skill-Verzeichnisse auf Dateiänderungen, außer in Bare Mode. Wenn Sie einen Skill unter ~/.claude/skills/, dem Projekt .claude/skills/ oder einem .claude/skills/ in einem --add-dir-Verzeichnis hinzufügen, bearbeiten oder entfernen, nimmt Claude Code die Änderung innerhalb der aktuellen Sitzung auf, ohne einen Neustart.

Wenn Sie ein Top-Level-Skills-Verzeichnis erstellen, das beim Start der Sitzung nicht vorhanden war, führen Sie /reload-skills aus, um die Skills zu laden, die Sie dort eingefügt haben. Claude Code überwacht dieses Verzeichnis noch nicht, daher führen Sie /reload-skills erneut aus, nachdem Sie später Änderungen dort vornehmen.

Die Live-Änderungserkennung deckt nur SKILL.md-Text ab. Für einen Skill-Ordner, der auch ein Plugin ist, benötigen Änderungen an hooks/, .mcp.json, agents/ und output-styles/ /reload-plugins, um wirksam zu werden.

Einen Skill entfernen

Wie Sie einen Skill entfernen, hängt davon ab, woher er kam:

  • Persönlicher oder Projekt-Skill: Löschen Sie das Verzeichnis des Skills, ~/.claude/skills/<skill-name>/ oder .claude/skills/<skill-name>/. Claude Code entfernt ihn aus /skills in der aktuellen Sitzung; Inhalte, die Claude Code bereits daraus geladen hat, folgen dem Skill-Content-Lebenszyklus.
  • Enterprise-Skill: Ein Administrator löscht das Verzeichnis des Skills aus .claude/skills/ im Verzeichnis für verwaltete Einstellungen, zum Beispiel /etc/claude-code/.claude/skills/<skill-name>/ auf Linux.
  • Plugin-Skill: Deaktivieren oder deinstallieren Sie das Plugin, das ihn bereitstellt, aus dem /plugin-Menü oder mit /plugin uninstall <plugin-name>@<marketplace-name>. Claude Code entlädt die Skills des Plugins, wenn die Änderung angewendet wird oder wenn Sie neu starten.
  • Skill, der von claude.ai synchronisiert wird: Schalten Sie den Skill für Ihr claude.ai-Konto aus, an derselben Stelle, an der Sie ihn aktiviert haben. Claude Code entfernt ihn aus ~/.claude/skills/synced/ beim nächsten Mal, wenn es Ihre Skills synchronisiert. Wenn Sie das Verzeichnis stattdessen von Hand löschen, lädt die nächste Synchronisierung es erneut herunter, während der Skill auf claude.ai aktiviert bleibt.
  • Gebündelter Skill: Setzen Sie disableBundledSkills auf true, um gebündelte Skills auszuschalten, oder setzen Sie einen Skill auf "off" in skillOverrides, um ihn auszublenden.

Um einen persönlichen oder Projekt-Skill zu behalten, aber Claude daran zu hindern, ihn von selbst aufzurufen, setzen Sie disable-model-invocation: true in seiner Frontmatter oder "user-invocable-only" in skillOverrides, wenn Sie die Datei nicht bearbeiten möchten.

Fähigkeiten konfigurieren

Fähigkeiten werden durch YAML-Frontmatter am Anfang von SKILL.md und den darauffolgenden Markdown-Inhalt konfiguriert.

Arten von Fähigkeitsinhalten

Fähigkeitsdateien können beliebige Anweisungen enthalten, aber das Nachdenken darüber, wie Sie sie aufrufen möchten, hilft bei der Entscheidung, was Sie einbeziehen:

Referenzinhalte fügen Wissen hinzu, das Claude auf Ihre aktuelle Arbeit anwendet. Konventionen, Muster, Stilrichtlinien, Domänenwissen. Dieser Inhalt wird inline ausgeführt, sodass Claude ihn zusammen mit Ihrem Gesprächskontext verwenden kann.

---
name: api-conventions
description: API design patterns for this codebase
---

When writing API endpoints:
- Use RESTful naming conventions
- Return consistent error formats
- Include request validation

Aufgabeninhalte geben Claude Schritt-für-Schritt-Anweisungen für eine bestimmte Aktion, wie Bereitstellungen, Commits oder Code-Generierung. Dies sind oft Aktionen, die Sie direkt mit /skill-name aufrufen möchten, anstatt Claude entscheiden zu lassen, wann sie ausgeführt werden. Fügen Sie disable-model-invocation: true hinzu, um zu verhindern, dass Claude sie automatisch auslöst. Das folgende Beispiel fügt context: fork hinzu, das die Fähigkeit in ihrem eigenen Subagent-Kontext ausführt; siehe Fähigkeiten in einem Subagent ausführen.

---
name: deploy
description: Deploy the application to production
context: fork
disable-model-invocation: true
---

Deploy the application:
1. Run the test suite
2. Build the application
3. Push to the deployment target

Halten Sie den Text selbst prägnant. Sobald ein Skill geladen ist, bleibt sein Inhalt über Turns hinweg im Kontext, sodass jede Zeile wiederkehrende Token-Kosten verursacht. Geben Sie an, was zu tun ist, anstatt zu erzählen, wie oder warum, und wenden Sie denselben Prägnanztest an, den Sie für CLAUDE.md-Inhalte verwenden würden.

Frontmatter-Referenz

Konfigurieren Sie eine Fähigkeit mit YAML-Frontmatter zwischen ----Markierungen am Anfang von SKILL.md, und schreiben Sie die Anweisungen der Fähigkeit als Markdown nach dem schließenden ---. Feldnamen verwenden Kleinbuchstaben-Wörter, die durch Bindestriche getrennt sind, außer when_to_use. Eine Befehlsdatei in .claude/commands/ akzeptiert die gleichen Felder außer name und paths. Dieses Beispiel setzt vier Felder:

---
name: my-skill
description: What this skill does
disable-model-invocation: true
allowed-tools: Read Grep
---

Your skill instructions here...

Alle Felder sind optional. Nur description wird empfohlen, damit Claude weiß, wann der Skill verwendet werden soll. Ein Feldname muss genau mit der Tabelle übereinstimmen, Bindestriche eingeschlossen: Claude Code ignoriert ein Feld, das es nicht erkennt, ohne einen Fehler zu melden. Boolesche Felder akzeptieren yes, no, on, off, 1 und 0 in beliebiger Schreibweise, zusätzlich zu true und false.

Claude Code liest das Frontmatter nur, wenn die öffnende --- die erste Zeile der Datei ist. Andernfalls behandelt es die gesamte Datei, einschließlich ----Markierungen, als Fähigkeitsinhalt. Wenn das YAML zwischen den Markierungen nicht analysiert wird, wird die Fähigkeit immer noch geladen, ohne dass Felder gesetzt werden; siehe Fähigkeit wird nicht ausgelöst, um den Fehler zu finden und zu beheben.

Feld Erforderlich Beschreibung
name Nein Befehlsname, der im /-Menü angezeigt wird. Standardmäßig der Verzeichnisname. Siehe Wie eine Fähigkeit ihren Befehlsnamen erhält, um zu sehen, wie das Feld mit dem Namen interagiert, den Sie eingeben, um die Fähigkeit aufzurufen.
description Empfohlen Was der Skill tut und wann er verwendet werden soll. Claude verwendet dies, um zu entscheiden, wann der Skill angewendet werden soll. Wenn weggelassen, wird die erste nicht leere Zeile des Markdown-Inhalts verwendet. Setzen Sie den wichtigsten Anwendungsfall zuerst: Der kombinierte description- und when_to_use-Text wird in der Skill-Auflistung auf 1.536 Zeichen gekürzt, um die Kontextnutzung zu reduzieren. Spitze Klammern im Text werden als &lt; und &gt; angezeigt.
when_to_use Nein Zusätzlicher Kontext für den Zeitpunkt, zu dem Claude die Fähigkeit aufrufen sollte, z. B. Trigger-Phrasen oder Beispielanfragen. An description in der Fähigkeitsauflistung angehängt und zählt zur 1.536-Zeichen-Obergrenze.
argument-hint Nein Hinweis, der während der Autovervollständigung angezeigt wird, um erwartete Argumente anzuzeigen. Beispiel: [issue-number] oder [filename] [format].
arguments Nein Benannte Positionsargumente für $name-Substitution im Fähigkeitsinhalt. Akzeptiert eine durch Leerzeichen getrennte Zeichenkette oder eine YAML-Liste. Namen werden in Reihenfolge Argumentpositionen zugeordnet.
disable-model-invocation Nein Setzen Sie auf true, um zu verhindern, dass Claude diesen Skill automatisch lädt. Verwenden Sie dies für Workflows, die Sie manuell mit /name auslösen möchten. Verhindert auch, dass der Skill in Subagenten vorgeladen wird und dass er ausgeführt wird, wenn eine sitzungsgebundene geplante Aufgabe mit dem Skill als Prompt ausgelöst wird. Standard: false.
user-invocable Nein Setzen Sie auf false, wenn nur Claude die Fähigkeit aufrufen sollte: Claude Code blendet sie aus dem /-Menü aus und führt sie nicht aus, wenn Sie /name eingeben. Verwenden Sie für Hintergrundwissen, das Benutzer nicht direkt aufrufen sollten. Standard: true.
allowed-tools Nein Tools, die Claude ohne Genehmigung während des Turns verwenden kann, der diese Fähigkeit aufruft. Die Genehmigung wird gelöscht, wenn Sie Ihre nächste Nachricht senden. Akzeptiert eine durch Leerzeichen oder Komma getrennte Zeichenkette oder eine YAML-Liste. Siehe Tools für eine Fähigkeit vorab genehmigen.
disallowed-tools Nein Tools, die aus Claudes verfügbarem Pool entfernt werden, während diese Fähigkeit aktiv ist. Verwenden Sie für autonome Fähigkeiten, die niemals bestimmte Tools aufrufen sollten, z. B. AskUserQuestion für eine Hintergrundschleife. Akzeptiert eine durch Leerzeichen oder Komma getrennte Zeichenkette oder eine YAML-Liste. Die Einschränkung wird gelöscht, wenn Sie Ihre nächste Nachricht senden. Wie Ablehnungsregeln kann das Feld EndConversation nicht entfernen, während ein anderes Tool verfügbar bleibt.
model Nein Modell, das verwendet werden soll, wenn diese Fähigkeit aktiv ist. Die Außerkraftsetzung gilt für den Rest des aktuellen Turns und wird nicht in den Einstellungen gespeichert; das Sitzungsmodell wird bei Ihrer nächsten Eingabeaufforderung fortgesetzt. Akzeptiert die gleichen Werte wie /model, oder inherit, um das aktive Modell beizubehalten. Ein Wert, der durch die availableModels-Zulassungsliste Ihrer Organisation ausgeschlossen ist, wird nicht verwendet und die Sitzung behält ihr aktuelles Modell. Im Auto-Modus und im Plan-Modus, während der Klassifizierer Befehle überprüft, wird ein Modell, das der Auto-Modus nicht unterstützt, auch nicht verwendet, und die Sitzung behält ihr aktuelles Modell. Mit context: fork setzt der Wert stattdessen das Modell des verzweigten Subagents und ein ausgeschlossener Wert folgt den gleichen Regeln wie eine Subagent-Modellüberschreibung.
effort Nein Effort-Stufe für den Rest des aktuellen Turns. Überschreibt die Effort-Stufe der Sitzung, aber nicht die Umgebungsvariable CLAUDE_CODE_EFFORT_LEVEL. Mit context: fork setzt der Wert stattdessen die Effort-Stufe des verzweigten Subagenten. Wenn Sie das Feld weglassen, ergibt sich die Stufe aus der Auflösungsreihenfolge für Effort. Für einen Fork auf einem anderen Modell siehe Effort-Stufe von Subagenten und Teammitgliedern. Optionen: low, medium, high, xhigh, max; verfügbare Stufen hängen vom Modell ab.
context Nein Setzen Sie auf fork, um in einem verzweigten Subagent-Kontext ausgeführt zu werden. Siehe Fähigkeiten in einem Subagent ausführen.
agent Nein Welcher Subagent-Typ verwendet werden soll, wenn context: fork gesetzt ist.
background Nein Gilt nur mit context: fork. Setzen Sie auf false, um auf das Ergebnis des verzweigten Subagenten im Turn zu warten, der den Skill aufgerufen hat, anstatt ihn im Hintergrund auszuführen. Standard: true.
hooks Nein Hooks, die Claude Code registriert, wenn der Skill aufgerufen wird, und die für den Rest der Sitzung aktiv bleiben. Siehe Hooks in Skills und Agenten für das Konfigurationsformat, die Option once und die Einschränkungen für Skill-Hooks.
paths Nein Glob-Muster, die einschränken, wann dieser Skill aktiviert wird. Akzeptiert eine durch Komma getrennte Zeichenkette oder eine YAML-Liste. Wenn gesetzt, lädt Claude den Skill automatisch nur, wenn es mit Dateien arbeitet, die den Mustern entsprechen. Muster sind relativ zu Claudes aktuellem Arbeitsverzeichnis, und Dateien außerhalb dieses Verzeichnisses stimmen nicht überein. Verwendet das gleiche Glob-Format wie pfadspezifische Regeln.
shell Nein Shell, die für !`command`- und ```!-Blöcke in diesem Skill verwendet werden soll. Akzeptiert bash (Standard) oder powershell. Das Setzen von powershell führt Inline-Shell-Befehle über PowerShell aus, wenn das PowerShell-Tool aktiviert ist: Es ist standardmäßig unter Windows ohne Git Bash aktiviert, standardmäßig mit Git Bash für claude.ai- und Console-Konten aktiviert und benötigt CLAUDE_CODE_USE_POWERSHELL_TOOL=1 in Sitzungen mit Amazon Bedrock, Google Cloud's Agent Platform und Microsoft Foundry sowie auf macOS, Linux und WSL. Setzen Sie es auf 0, um das Tool auszuschalten.
metadata Nein Freie YAML-Zuordnung für Ihre eigenen Schlüssel-Wert-Daten, z. B. Berechtigung oder Katalogfelder, die von Ihrem eigenen Tooling aus SKILL.md gelesen werden. Claude Code handelt nicht nach ihrem Inhalt und verwirft einen Wert, der keine Zuordnung ist. Verwenden Sie keine Frontmatter-Feldnamen wie paths als Schlüssel erneut.
license Nein Lizenz, die die Fähigkeit abdeckt. Teil der Agent Skills-Spezifikation; siehe Fähigkeits-Frontmatter außerhalb von Claude Code verwenden. Claude Code akzeptiert das Feld, handelt aber nicht danach.
compatibility Nein Umgebungsanforderungen für die Fähigkeit, z. B. beabsichtigte Produkte oder Systemvoraussetzungen, wie in der Agent Skills-Spezifikation definiert; siehe Fähigkeits-Frontmatter außerhalb von Claude Code verwenden. Akzeptiert eine Zeichenkette von bis zu 500 Zeichen. Claude Code akzeptiert das Feld, handelt aber nicht danach.

Fähigkeits-Frontmatter außerhalb von Claude Code verwenden

Claude Code akzeptiert jedes Feld in der obigen Tabelle. Außerhalb von Claude Code können Sie nur die Felder in der Agent Skills-Spezifikation verwenden:

Verteilungspfad Frontmatter-Felder, die Sie verwenden können
Claude Code-Fähigkeiten auf beliebiger Ebene, einschließlich Plugin-Fähigkeiten Jedes Feld in der obigen Tabelle
claude.ai-Fähigkeits-Uploads, die Skills-API und Verpackung mit package_skill.py aus anthropics/skills name, description, license, compatibility, metadata, allowed-tools

Wenn Sie einen persönlichen Skill für Ihr claude.ai-Konto aktivieren, um ihn beispielsweise in Cowork- und Cloud-Sitzungen und geplanten Aufgaben zu verwenden, laden Sie ihn auf claude.ai hoch. Für diesen Upload gelten die gleichen Regeln.

Wenn Sie ein Feld einbeziehen, das die Spezifikation nicht zulässt, schlägt die Verpackung oder der Upload mit einem schwerwiegenden Fehler fehl, anstatt das Feld zu ignorieren:

Unexpected key(s) in SKILL.md frontmatter: argument-hint. Allowed properties are: allowed-tools, compatibility, description, license, metadata, name

Das Einschränken des Frontmatters auf die sechs Felder der Spezifikation vermeidet den obigen Fehler „unexpected-key“. Die Agent Skills-Spezifikation und die Skills-API-Anforderungen definieren alles andere, das diese Pfade validieren. Claude Code-spezifische Body-Funktionen, wie dynamische Kontexteinspritzung, funktionieren nicht in claude.ai-Chat oder über die API. Claude Code akzeptiert alle sechs Felder, sodass Frontmatter, das der Spezifikation folgt, ohne Änderungen in Claude Code geladen wird.

Wie eine Fähigkeit ihren Befehlsnamen erhält

Der Befehl, den Sie eingeben, um eine Fähigkeit aufzurufen, kommt von dem Ort, an dem die Fähigkeitsdatei lebt, und für Fähigkeitsverzeichnisse und Plugin-Fähigkeiten auch vom Frontmatter-Feld name. In einer persönlichen oder Projektfähigkeit setzt name den Befehl, den das /-Menü anzeigt und den Sie eingeben, es sei denn, ein anderer Befehl verwendet bereits diesen Namen. Der Verzeichnisname ruft auch die Fähigkeit auf. In einer Plugin-Fähigkeit setzt name das letzte Segment des Befehls und das Plugin-Präfix bleibt bestehen.

Die folgende Tabelle zeigt, woher der Befehlsname für jedes Layout kommt:

Fähigkeitsort Befehlsnamenquelle Beispiel
Fähigkeitsverzeichnis unter ~/.claude/skills/ oder .claude/skills/ Frontmatter name oder der Verzeichnisname .claude/skills/deploy-staging/SKILL.md → /deploy-staging, oder /deploy mit name: deploy
Verschachteltes .claude/skills/-Verzeichnis, wenn der Verzeichnisname mit einer anderen Fähigkeit kollidiert Unterverzzeichnisspfad relativ zum Arbeitsverzeichnis, dann der Fähigkeitsverzeichnisname apps/web/.claude/skills/deploy/SKILL.md → /apps/web:deploy
.claude/skills/ in einem hinzugefügten Verzeichnis außerhalb des Projekts, wenn der Name des Skill-Verzeichnisses mit einem Enterprise-, persönlichen oder Projekt-Skill oder einem Skill in einem zuvor hinzugefügten Verzeichnis kollidiert Der Ordnername des hinzugefügten Verzeichnisses, dann der Name des Skill-Verzeichnisses. Wenn zwei hinzugefügte Verzeichnisse denselben Ordnernamen haben, beginnt das Präfix mit dem Namen des übergeordneten Ordners. Erfordert v2.1.309 oder später ../cli/.claude/skills/verify/SKILL.md mit --add-dir ../cli → /cli:verify. Mit --add-dir ../a/cli --add-dir ../b/cli, je einem verify-Skill in beiden und keinem anderswo: der in ../a/cli → /verify und der andere → /b/cli:verify
Datei unter .claude/commands/ Dateiname ohne Erweiterung .claude/commands/deploy.md → /deploy
Datei in einem Unterverzeichnis von .claude/commands/ Unterverzzeichnisspfad relativ zu commands/ mit jedem / ersetzt durch :, dann der Dateiname ohne Erweiterung .claude/commands/frontend/component.md → /frontend:component
Plugin skills/ Unterverzeichnis Frontmatter name oder der Verzeichnisname, mit Namespace durch Plugin my-plugin/skills/review/SKILL.md → /my-plugin:review, oder /my-plugin:fancy mit name: fancy
Plugin-Root SKILL.md Frontmatter name, mit dem Plugin-Verzeichnisnamen als Fallback my-plugin/SKILL.md mit name: review → /my-plugin:review. Siehe eine einzelne Fähigkeit im Plugin-Root
Fähigkeit synchronisiert von claude.ai Der Name der Fähigkeit auf Ihrem claude.ai-Konto, mit dem Präfix anthropic-skills: Kontofähigkeit deploy → /anthropic-skills:deploy, oder /deploy, wenn kein anderer Befehl diesen Namen verwendet

In einer Plugin-Fähigkeit ersetzt das Frontmatter-Feld name den Verzeichnisnamen im letzten Segment des Befehls, sodass my-plugin/skills/review/SKILL.md mit name: fancy zu /my-plugin:fancy wird. Der bloße /fancy ruft die Fähigkeit auch auf, es sei denn, ein anderer Befehl verwendet bereits diesen Namen. Wenn der name, den Sie schreiben, bereits mit dem eigenen Präfix des Plugins beginnt, fügt Claude Code das Präfix nicht erneut auf v2.1.246 oder später hinzu. Zum Beispiel wird name: my-plugin:fancy immer noch zu /my-plugin:fancy. Von v2.1.216 bis v2.1.245 verdoppelte Claude Code das Präfix, wenn der name es bereits trug.

In nicht-interaktiven Sitzungen sind die Namen help und feedback nicht für ihre nur-Terminal-Befehle reserviert, sodass eine Plugin-Fähigkeit mit einem dieser Namen ihren bloßen Befehl dort behält. Jeder andere nur-Terminal-Befehl, wie /login, bleibt reserviert, obwohl der Befehl in diesen Sitzungen nicht ausgeführt werden kann.

Für eine Plugin-Root SKILL.md gibt es kein Fähigkeitsverzeichnis, aus dem der Name genommen werden kann, sodass name das ganze letzte Segment liefert. Ohne ein name-Feld fällt Claude Code auf den Plugin-Verzeichnisnamen zurück.

Zeichen, die ein Skill-Name nicht enthalten darf

Wenn ein Skill oder benutzerdefinierter Befehl im /-Menü fehlt oder das Menü den Frontmatter-name eines Skills nicht anzeigt, überprüfen Sie den Namen. Claude Code lehnt einen Befehlsnamen oder einen Frontmatter-name ab, der Zeichen wie die folgenden enthält:

  • Ein Leerzeichen mit Nullbreite oder ein Steuerzeichen
  • Ein Zeichen aus dem privaten Nutzungsbereich oder ein nicht zugewiesenes Zeichen, z. B. ein Glyph aus einer Icon-Schriftart
  • Ein Zeichen, das die Richtung des umgebenden Textes ändert
  • Ein Leerraum, der kein einzelnes normales Leerzeichen zwischen Wörtern ist, z. B. ein geschütztes Leerzeichen, zwei Leerzeichen hintereinander oder ein Leerzeichen am Anfang oder Ende
  • < oder >

Ein benutzerdefinierter Befehl oder Skill wird nicht geladen, wenn Claude Code seinen Verzeichnis- oder Dateinamen ablehnt. Benennen Sie diesen Ordner bzw. diese Datei um, um die Zeichen zu entfernen. Ein Skill wird trotzdem geladen, wenn sich diese Zeichen nur im Namen eines Plugin-Skill-Ordners oder in seinem Frontmatter-name befinden:

  • Ordner im skills/-Verzeichnis eines Plugins oder in den skills-Pfaden seines Manifests: Sie müssen den Ordner nicht umbenennen. Diese Zeichen werden im Befehlsnamen des Skills zu Bindestrichen, geben Sie den Befehl also mit den Bindestrichen ein.
  • Frontmatter name: Das /-Menü zeigt den name-Wert nicht an, und die Eingabe dieses Werts ruft den Skill nicht auf. Bearbeiten Sie die Zeile name:, um die Zeichen zu entfernen.

Um herauszufinden, welchen Namen Claude Code abgelehnt hat, starten Sie es aus Ihrer Shell mit claude --debug und durchsuchen Sie das Debug-Log nach [names]. In einer interaktiven Sitzung weist Sie außerdem ein Hinweis beim Start darauf hin, dass Namen abgelehnt wurden. Starten Sie nach einer Umbenennung oder einer Änderung an name: die Sitzung neu, es sei denn, die Datei befindet sich in einem Verzeichnis, das Claude Code auf Änderungen überwacht.

Verfügbare Zeichenkettensubstitutionen

Fähigkeiten unterstützen Zeichenkettensubstitution für dynamische Werte im Fähigkeitsinhalt:

Variable Beschreibung
$ARGUMENTS Alle Argumente, die beim Aufrufen der Fähigkeit übergeben werden. Wenn kein Platzhalter ein Argument empfängt, hängt Claude Code ARGUMENTS: <value> am Ende des Fähigkeitsinhalts an. Siehe Argumente an Fähigkeiten übergeben.
$ARGUMENTS[N] Greifen Sie auf ein bestimmtes Argument nach 0-basiertem Index zu, z. B. $ARGUMENTS[0] für das erste Argument.
$N Kurzform für $ARGUMENTS[N], z. B. $0 für das erste Argument oder $1 für das zweite.
$name Benanntes Argument, das in der arguments-Frontmatter-Liste deklariert ist. Namen werden in Reihenfolge Positionen zugeordnet, sodass mit arguments: [issue, branch] der Platzhalter $issue zum ersten Argument und $branch zum zweiten expandiert.
${CLAUDE_SESSION_ID} Die aktuelle Sitzungs-ID. Nützlich für Protokollierung, Erstellen von sitzungsspezifischen Dateien oder Korrelation von Fähigkeitsausgabe mit Sitzungen.
${CLAUDE_EFFORT} Die aktuelle Aufwandsstufe: low, medium, high, xhigh oder max. Verwenden Sie dies, um Fähigkeitsanweisungen an die aktive Aufwandseinstellung anzupassen.
${CLAUDE_SKILL_DIR} Das Verzeichnis, das die SKILL.md-Datei der Fähigkeit enthält. Für Plugin-Fähigkeiten ist dies das Fähigkeitsunterverzeichnis innerhalb des Plugins, nicht die Plugin-Root. Verwenden Sie dies in Bash-Injektionsbefehlen, um auf Skripte oder Dateien zu verweisen, die mit der Fähigkeit gebündelt sind, unabhängig vom aktuellen Arbeitsverzeichnis.
${CLAUDE_PROJECT_DIR} Das Projektroot-Verzeichnis. Dies ist der gleiche Pfad, den Hooks und MCP-Server als CLAUDE_PROJECT_DIR erhalten. Verwenden Sie dies, um auf projektlokale Skripte oder Dateien zu verweisen, z. B. ${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh, unabhängig davon, wo die Fähigkeit installiert ist.
${CLAUDE_PLUGIN_ROOT} Das Installationsverzeichnis des Plugins. Wird nur in Plugin-Fähigkeiten ersetzt. Verwenden Sie dies, um auf Skripte oder Dateien zu verweisen, die überall im Plugin gebündelt sind, einschließlich Ressourcen, die zwischen den Plugin-Fähigkeiten geteilt werden. Siehe Plugin-Umgebungsvariablen.
${CLAUDE_PLUGIN_DATA} Das persistente Datenverzeichnis des Plugins, das Plugin-Updates überlebt. Wird nur in Plugin-Fähigkeiten ersetzt. Verwenden Sie dies, um auf installierte Abhängigkeiten, generierte Dateien oder Caches zu verweisen, die ein Update überleben müssen.

Claude Code ersetzt ${CLAUDE_SKILL_DIR} und ${CLAUDE_PROJECT_DIR} an zwei Stellen: im Markdown-Inhalt der Fähigkeit und in Bash-Regeln im allowed-tools-Frontmatter. In einer Plugin-Fähigkeit ersetzt Claude Code ${CLAUDE_PLUGIN_ROOT} und ${CLAUDE_PLUGIN_DATA} an den gleichen zwei Stellen. Die Verwendung der gleichen Variable an beiden Stellen ermöglicht es einer Fähigkeit, ein gebündeltes Skript ohne Genehmigungsaufforderung auszuführen. Die folgende Fähigkeit zeigt das Muster:

---
name: render-chart
description: Render a chart from a CSV file
allowed-tools: Bash(${CLAUDE_SKILL_DIR}/scripts/render.sh *)
---

Run `${CLAUDE_SKILL_DIR}/scripts/render.sh <csv-file>` to render the chart.

Wenn diese Fähigkeit unter ~/.claude/skills/render-chart/ installiert ist, expandieren beide Vorkommen von ${CLAUDE_SKILL_DIR} zu diesem Verzeichnis. Die allowed-tools-Regel stimmt dann mit dem genauen Befehl überein, den der Fähigkeitstext Claude ausführen sagt, sodass das Skript ohne Aufforderung ausgeführt wird.

Indizierte Argumente verwenden Shell-ähnliche Anführungszeichen, sodass mehrteilige Werte in Anführungszeichen einschließen, um sie als einzelnes Argument zu übergeben. Zum Beispiel macht /my-skill "hello world" second $0 zu hello world und $1 zu second. Der $ARGUMENTS-Platzhalter expandiert immer zur vollständigen Argumentzeichenkette wie eingegeben.

Ein indizierter Platzhalter ohne entsprechendes Argument, z. B. $2, wenn nur ein Argument übergeben wurde, bleibt im Inhalt unverändert. Ein benannter Platzhalter aus dem arguments-Frontmatter ohne übereinstimmendes Argument expandiert zu einer leeren Zeichenkette.

Wenn Sie einen Argumentwert übergeben, der selbst Text wie $1 oder $ARGUMENTS enthält, fügt Claude Code ihn als Literaltext ein und expandiert ihn nicht. Zum Beispiel, wenn der Fähigkeitstext Summarize $0 enthält und Sie /summarize "$ARGUMENTS from yesterday" ausführen, empfängt Claude Summarize $ARGUMENTS from yesterday. Claude Code ersetzt immer noch ${CLAUDE_*}-Variablen wie ${CLAUDE_SKILL_DIR}, nachdem es die Argumente eingefügt hat.

Um ein Literal $ vor einer Ziffer, ARGUMENTS oder einem deklarierten Argumentnamen einzubeziehen, z. B. $1.00 in Prosa, maskieren Sie es mit einem Backslash: \$1.00. Ein Backslash vor jedem anderen $ bleibt unverändert. Nur ein einzelner Backslash direkt vor dem Token maskiert ihn. Ein verdoppelter Backslash wie \\$1 lässt beide Backslashes an Ort und Stelle, und $1 expandiert immer noch zum Argumentwert. Die Backslash-Maskierung deckt nur diese Argumentplatzhalter ab. Ein Backslash verhindert nicht die Substitution einer ${CLAUDE_*}-Variable, wo die Variable angewendet wird.

Beispiel mit Substitutionen:

---
name: session-logger
description: Log activity for this session
---

Log the following to logs/${CLAUDE_SESSION_ID}.log:

$ARGUMENTS

Unterstützende Dateien hinzufügen

Fähigkeiten können mehrere Dateien in ihrem Verzeichnis enthalten. Dies hält SKILL.md auf das Wesentliche konzentriert, während Claude auf detailliertes Referenzmaterial nur bei Bedarf zugreifen kann. Große Referenzdokumente, API-Spezifikationen oder Beispielsammlungen müssen nicht jedes Mal geladen werden, wenn die Fähigkeit ausgeführt wird.

my-skill/
├── SKILL.md (required - overview and navigation)
├── reference.md (detailed API docs - loaded when needed)
├── examples.md (usage examples - loaded when needed)
└── scripts/
    └── helper.py (utility script - executed, not loaded)

Verweisen Sie auf unterstützende Dateien aus SKILL.md, damit Claude weiß, was jede Datei enthält und wann sie geladen werden soll:

## Additional resources

- For complete API details, see [reference.md](/anthropic/claude-code/history/docs/de/2026-11-03-2358..2026-11-04-2359/reference/)
- For usage examples, see [examples.md](/anthropic/claude-code/history/docs/de/2026-11-03-2358..2026-11-04-2359/examples/)

[!TIP]

Halten Sie SKILL.md unter 500 Zeilen. Verschieben Sie detailliertes Referenzmaterial in separate Dateien.

Kontrollieren Sie, wer eine Fähigkeit aufruft

Standardmäßig können Sie und Claude jede Fähigkeit aufrufen. Sie können /skill-name eingeben, um sie direkt aufzurufen, und Claude kann sie automatisch laden, wenn sie für Ihr Gespräch relevant ist. Zwei Frontmatter-Felder ermöglichen es Ihnen, dies einzuschränken:

  • disable-model-invocation: true: Claude kann den Skill nicht von sich aus aufrufen. Verwenden Sie dies für Workflows mit Nebenwirkungen oder solche, deren Zeitpunkt Sie selbst steuern möchten, wie /commit, /deploy oder /send-slack-message. Sie möchten nicht, dass Claude entscheidet zu deployen, weil Ihr Code fertig aussieht.

  • user-invocable: false: Nur Claude kann die Fähigkeit aufrufen. Verwenden Sie dies für Hintergrundwissen, das nicht als Befehl umsetzbar ist. Eine legacy-system-context-Fähigkeit erklärt, wie ein altes System funktioniert. Claude sollte dies kennen, wenn relevant, aber /legacy-system-context ist keine aussagekräftige Aktion für Benutzer.

Dieses Beispiel erstellt einen Deploy-Skill. Wenn Sie disable-model-invocation: true setzen, kann Claude den Skill nicht automatisch ausführen:

---
name: deploy
description: Deploy the application to production
disable-model-invocation: true
---

Deploy $ARGUMENTS to production:

1. Run the test suite
2. Build the application
3. Push to the deployment target
4. Verify the deployment succeeded

Wenn Claude es trotzdem versucht, blockiert Claude Code den Aufruf und weist es an, die Deploy-Schritte nicht auf andere Weise zu reproduzieren, sodass Sie erwarten können, dass Claude vorschlägt, /deploy selbst auszuführen.

Hier ist, wie die beiden Felder Aufrufe und Kontextladung beeinflussen:

Frontmatter Sie können aufrufen Claude kann aufrufen Wann in Kontext geladen
(Standard) Ja Ja Beschreibung immer im Kontext, vollständige Fähigkeit wird beim Aufrufen geladen
disable-model-invocation: true Ja Nicht von sich aus Beschreibung nicht im Kontext, vollständiger Skill wird beim Aufruf geladen
user-invocable: false Nein Ja Beschreibung immer im Kontext, vollständige Fähigkeit wird beim Aufrufen geladen

[!NOTE]

In einer regulären Sitzung werden Fähigkeitsbeschreibungen in den Kontext geladen, damit Claude weiß, was verfügbar ist, aber vollständiger Fähigkeitsinhalt wird nur beim Aufrufen geladen. Subagents mit vorgeladenen Fähigkeiten funktionieren anders: Der vollständige Fähigkeitsinhalt wird beim Start eingespritzt.

Wo Sie den Namen des Skills schreiben

Um einen Skill direkt auszuführen, setzen Sie seinen Namen an den Anfang Ihrer Nachricht. Nach normalem Text erteilt der Name Claude die Erlaubnis, den Skill auszuführen, führt ihn aber nicht aus:

Wo Beispiel Was passiert
Am Anfang Ihrer Nachricht /deploy staging Claude Code führt den Skill direkt aus
Nach normalem Text, als eigenes Wort ohne angehängte Satzzeichen go ahead and /deploy to staging Nichts wird direkt ausgeführt. Der Name gilt als Ihre Erlaubnis für diese Nachricht: Claude kann den Skill während seiner Antwort ausführen und beurteilt anhand Ihrer Formulierung, ob Sie darum gebeten haben

Um über den Skill zu schreiben, ohne eine Ausführung zu erlauben, lassen Sie den Schrägstrich weg.

Fähigkeitsinhalts-Lebenszyklus

Wenn Sie oder Claude eine Fähigkeit aufrufen, tritt der gerenderte SKILL.md-Inhalt als einzelne Nachricht in das Gespräch ein und bleibt über spätere Turns hinweg bestehen. Diese Persistenz gilt für die Anweisungen der Fähigkeit, nicht ihre Berechtigungen: Eine allowed-tools-Genehmigung wird gelöscht, wenn Sie Ihre nächste Nachricht senden. Claude Code liest die Fähigkeitsdatei bei späteren Turns nicht erneut, daher schreiben Sie Anleitung, die während einer Aufgabe gelten sollte, als stehende Anweisungen anstelle von einmaligen Schritten.

Wenn Claude eine Fähigkeit erneut aufruft, deren gerenderter Inhalt identisch mit der bereits im Kontext vorhandenen Kopie ist, fügt Claude Code einen kurzen Hinweis hinzu, dass die Fähigkeit bereits geladen ist, anstatt eine zweite Kopie des Inhalts zu erstellen. Wenn sich der gerenderte Inhalt unterscheidet, weil sich die Argumente geändert haben oder ein dynamischer Kontext-Befehl neue Ausgabe erzeugt hat, hängt Claude Code den vollständigen Inhalt erneut an.

Auto-Komprimierung trägt aufgerufene Fähigkeiten innerhalb eines Token-Budgets vorwärts. Wenn das Gespräch zusammengefasst wird, um Kontext freizugeben, hängt Claude Code die neueste Aufrufinvokation jeder Fähigkeit nach der Zusammenfassung erneut an, wobei die ersten 5.000 Token jeder beibehalten werden. Erneut angehängte Fähigkeiten teilen sich ein kombiniertes Budget von 25.000 Token. Claude Code füllt dieses Budget beginnend mit der zuletzt aufgerufenen Fähigkeit, sodass ältere Fähigkeiten vollständig gelöscht werden können, nachdem die Komprimierung erfolgt ist, wenn Sie viele in einer Sitzung aufgerufen haben.

Wenn Claude stops following a skill partway through a session, see Claude stops following a skill.

Tools für eine Fähigkeit vorab genehmigen

Das Feld allowed-tools gewährt Genehmigung für die aufgelisteten Tools während des Turns, der die Fähigkeit aufruft, sodass Claude sie ohne Genehmigungsaufforderung verwenden kann. Die Genehmigung wird gelöscht, wenn Sie Ihre nächste Nachricht senden, obwohl der Fähigkeitsinhalt im Kontext bleibt; das erneute Aufrufen der Fähigkeit wendet es für diesen Turn erneut an. Es schränkt nicht ein, welche Tools verfügbar sind: Jedes Tool bleibt aufrufbar, und Ihre Berechtigungseinstellungen regieren immer noch Tools, die nicht aufgelistet sind. Um Tools für die ganze Sitzung vorab zu genehmigen, anstatt einen einzelnen Turn, fügen Sie stattdessen Zulassungsregeln zu diesen Berechtigungseinstellungen hinzu.

Workspace-Vertrauen hat keinen Einfluss auf dieses Feld. Claude Code wendet die allowed-tools eines Projekt-Skills selbst in einem -p-Lauf in einem Ordner an, dem Sie nie vertraut haben. Ein Skill kann sich selbst weitreichenden Tool-Zugriff gewähren, überprüfen Sie daher die allowed-tools von Skills, die in ein Repository eingecheckt sind, bevor Sie Claude Code dort ausführen. Wie Sie das Feld für Repository-Skills in Ihrer gesamten Organisation unwirksam machen, erfahren Sie unter Wenn nur verwaltete Berechtigungsregeln gelten.

Diese Fähigkeit ermöglicht es Claude, Git-Befehle ohne Genehmigung pro Verwendung auszuführen, wann immer Sie sie aufrufen:

---
name: commit
description: Stage and commit the current changes
disable-model-invocation: true
allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)
---

Um Tools aus Claudes verfügbarem Pool zu entfernen, während eine Fähigkeit aktiv ist, listen Sie sie im disallowed-tools im Frontmatter der Fähigkeit auf. Die Einschränkung wird gelöscht, wenn Sie Ihre nächste Nachricht senden. Wie Ablehnungsregeln kann das Feld EndConversation nicht entfernen, während ein anderes Tool verfügbar bleibt. Um Tools über alle Fähigkeiten und Eingabeaufforderungen hinweg zu blockieren, fügen Sie Ablehnungsregeln in Ihren Berechtigungseinstellungen hinzu.

Wenn verwaltete Einstellungen Hooks auf Plugins beschränken

Wenn die verwalteten Einstellungen Ihrer Organisation hooks in strictPluginOnlyCustomization aufführen, verliert ein persönlicher oder Projekt-Skill, dessen Frontmatter hooks deklariert, seine allowed-tools-Vorabgenehmigung, abgesehen von den Skills, die sie behalten.

  • Prüfen: Geben Sie /status in einer Claude Code-Sitzung ein. Wenn /status Enterprise managed settings anzeigt, fragen Sie Ihren Administrator, ob strictPluginOnlyCustomization hooks aufführt.
  • Beheben: Entfernen Sie hooks aus dem Frontmatter des Skills, da seine Hooks unter dieser Einstellung nicht ausgeführt werden. Um sie beizubehalten, verschieben Sie den Skill in ein Plugin, das Sie aus einem Marketplace installieren.

Wenn nur verwaltete Berechtigungsregeln gelten

Wenn Ihre Organisation allowManagedPermissionRulesOnly in den verwalteten Einstellungen setzt, ignoriert Claude Code allowed-tools in Projekt- und persönlichen Skills sowie in den weiteren Quellen, die der Eintrag der Einstellung aufführt. Dies erfordert Claude Code v2.1.282 oder später.

Die Tools, die ein betroffener Skill auflistet, durchlaufen stattdessen die verwalteten Regeln Ihrer Organisation und die normale Berechtigungsabfrage. Führen Sie /status aus, um jeden Skill aufzulisten, dessen allowed-tools Claude Code in der Sitzung bisher ignoriert hat. Für einen eingefügten Befehl im Skill, den keine verwaltete Regel erlaubt, gilt Berechtigungsprüfungen für eingefügte Befehle.

Argumente an Fähigkeiten übergeben

Sowohl Sie als auch Claude können Argumente beim Aufrufen einer Fähigkeit übergeben. Argumente sind über den $ARGUMENTS-Platzhalter verfügbar.

Diese Fähigkeit behebt ein GitHub-Problem nach Nummer. Der $ARGUMENTS-Platzhalter wird durch alles ersetzt, das dem Fähigkeitsnamen folgt:

---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---

Fix GitHub issue $ARGUMENTS following our coding standards.

1. Read the issue description
2. Understand the requirements
3. Implement the fix
4. Write tests
5. Create a commit

Wenn Sie /fix-issue 123 ausführen, empfängt Claude „Fix GitHub issue 123 following our coding standards...“

Wenn Sie eine Fähigkeit mit Argumenten aufrufen, aber kein Platzhalter im Fähigkeitsinhalt ein Argument empfängt, hängt Claude Code ARGUMENTS: <your input> am Ende des Fähigkeitsinhalts an, damit Claude immer noch sieht, was Sie eingegeben haben. Ein Platzhalter ist $ARGUMENTS, eine indizierte Form wie $1 oder ein benanntes Argument. Ein indizierter Platzhalter ohne Argument an seiner Position bleibt als Literaltext und zählt nicht als empfangen. Ein benannter Platzhalter zählt auch, wenn seine Position kein Argument hat, weil er zu einer leeren Zeichenkette expandiert.

Um auf einzelne Argumente nach Position zuzugreifen, verwenden Sie $ARGUMENTS[N] oder die kürzere $N:

---
name: migrate-component
description: Migrate a component from one language to another
---

Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].
Preserve all existing behavior and tests.

Das Ausführen von /migrate-component SearchBar JavaScript TypeScript ersetzt $ARGUMENTS[0] durch SearchBar, $ARGUMENTS[1] durch JavaScript und $ARGUMENTS[2] durch TypeScript. Die gleiche Fähigkeit mit der $N-Kurzform:

---
name: migrate-component
description: Migrate a component from one language to another
---

Migrate the $0 component from $1 to $2.
Preserve all existing behavior and tests.

Mehrere Skills in einer Nachricht stapeln

Wenn Sie im Prompt von Claude Code in Ihrem Terminal tippen, können Sie mehrere Skills am Anfang einer Nachricht stapeln. Über das Agent SDK oder claude -p lädt Claude Code nur den ersten Skill und verwendet den Rest der Zeile als dessen Argumente. Im Terminal-Prompt lädt die Eingabe von /write-tests /fix-issue 123 beide Skills und übergibt den nachfolgenden Text 123 als $ARGUMENTS an jeden von ihnen.

Claude Code expandiert den ersten Skill plus bis zu fünf weitere, die danach gestapelt sind. Die Expansion stoppt beim ersten Token, das kein inline ausgeführter, vom Benutzer aufrufbarer Skill ist. Wenn Sie einen Skill stapeln, der als verzweigter Subagent ausgeführt wird, wie /code-review, oder einen, dessen Argumente mit einem anderen Befehl beginnen können, wie /loop, endet die Expansion dort. Dieses Token und alles danach werden zum Argumenttext für jeden expandierten Skill.

Fortgeschrittene Muster

Dynamischen Kontext einfügen

Die Syntax !`<command>` führt Shell-Befehle aus, bevor der Skill-Inhalt an Claude gesendet wird. Die Ausgabe des Befehls ersetzt den Platzhalter, sodass Claude tatsächliche Daten erhält und nicht den Befehl selbst. Claude Code führt diese Befehle nicht auf Ihrem Rechner aus, wenn der Skill aus Ihrem claude.ai-Konto synchronisiert wurde. Diese Einschränkung erfordert Claude Code v2.1.228 oder höher.

Dieser Skill fasst einen Pull Request zusammen, indem er aktuelle PR-Daten mit der GitHub CLI abruft. Der Befehl !`gh pr diff` und die anderen Befehle werden zuerst ausgeführt, und ihre Ausgabe wird in den Prompt eingefügt:

---
name: pr-summary
description: Summarize changes in a pull request
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---

## Pull request context
- PR diff: !`gh pr diff`
- PR comments: !`gh pr view --comments`
- Changed files: !`gh pr diff --name-only`

## Your task
Summarize this pull request...

Die Ersetzung erfolgt einmal über die ursprüngliche Datei. Die Befehlsausgabe wird als reiner Text eingefügt und nicht erneut nach weiteren !`<command>`-Platzhaltern durchsucht, sodass ein Befehl keinen Platzhalter ausgeben kann, der in einem späteren Durchlauf expandiert wird.

Die Inline-Form wird nur erkannt, wenn ! am Anfang einer Zeile oder unmittelbar nach einem Leerraum steht. Folgt ! auf ein anderes Zeichen, wie in KEY=!`cmd`, bleibt der Platzhalter als wörtlicher Text stehen und der Befehl wird nicht ausgeführt.

Verwenden Sie für mehrzeilige Befehle statt der Inline-Form einen eingezäunten Codeblock, der mit ```! geöffnet wird:

## Environment
```!
node --version
git status --short
```

Um dieses Verhalten für Skills und benutzerdefinierte Befehle aus Benutzer-, Projekt-, Plugin- oder zusätzlichen Verzeichnis-Quellen zu deaktivieren, setzen Sie "disableSkillShellExecution": true in den Einstellungen. Jeder Befehl wird dann durch [shell command execution disabled by policy] ersetzt, statt ausgeführt zu werden. Mitgelieferte und verwaltete Skills sind davon nicht betroffen. Diese Einstellung ist vor allem in verwalteten Einstellungen nützlich, wo Benutzer sie nicht überschreiben können.

Claude Code führt diese Befehle unabhängig von dieser Einstellung niemals auf Ihrem Rechner aus, wenn sie in Skills vorkommen, die aus Ihrem claude.ai-Konto synchronisiert wurden. Diese Einschränkung erfordert Claude Code v2.1.228 oder höher. Unter Wie Claude Code den Inhalt eines synchronisierten Skills behandelt erfahren Sie, was Claude in jeder Art von Sitzung anstelle des Befehls erhält.

[!TIP]

Um tiefergehendes Nachdenken anzufordern, wenn ein Skill ausgeführt wird, fügen Sie ultrathink an beliebiger Stelle in den Skill-Inhalt ein. Siehe ultrathink für einmaliges tiefes Nachdenken verwenden.

Wie eingefügte Befehle ausgeführt werden

Claude Code wählt das Tool, das die eingefügten Befehle eines Skills ausführt, anhand des Schlüssels shell im Frontmatter des Skills und Ihrer Umgebung. Jede Kombination führt die Befehle über das Bash-Tool oder das PowerShell-Tool aus, mit Ausnahme einer, bei der der Aufruf sofort fehlschlägt:

  • shell: powershell, bei aktiviertem PowerShell-Tool: Die Befehle werden über das PowerShell-Tool ausgeführt.
  • shell: bash, wenn bash nicht verfügbar ist: Der Aufruf schlägt fehl, bevor ein Befehl ausgeführt wird. Das passiert unter Windows ohne Git Bash. Claude Code zeigt Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found an.
  • Jede andere Kombination: Die Befehle werden über das Bash-Tool ausgeführt, wenn bash verfügbar ist. Andernfalls werden sie über das PowerShell-Tool ausgeführt.

Beide Tools führen die Befehle auf dieselbe Weise aus wie Claudes eigene Shell-Befehle. Sie teilen sich Arbeitsverzeichnis, Timeout und Ausgabeverarbeitung:

  • Arbeitsverzeichnis: Claude Code führt jeden Befehl im aktuellen Arbeitsverzeichnis der Sitzungs-Shell aus. Dieses Verzeichnis ändert sich, wenn Claude cd ausführt. Verwenden Sie ${CLAUDE_SKILL_DIR} oder ${CLAUDE_PROJECT_DIR} in Pfaden, die jedes Mal gleich aufgelöst werden müssen.
  • stderr: Bei der Standard-Shell bash führt Claude Code stderr mit stdout zusammen. Alles, was der Befehl nach stderr schreibt, erscheint im eingefügten Text.
  • Timeout: Jeder Befehl läuft unter dem standardmäßigen 2-Minuten-Timeout des Bash-Tools. Wenn das Bash-Tool einen Befehl mit Zeitüberschreitung in den Hintergrund verschiebt, wird der Skill trotzdem gerendert. Der eingefügte Text meldet die Verschiebung und nennt die Hintergrundaufgabe sowie die Datei, in der die Ausgabe des Befehls gesammelt wird. Handelt es sich um einen Befehl, den das Bash-Tool nie automatisch in den Hintergrund verschiebt, beendet Claude Code ihn beim Timeout. Dieser Fehler bricht den Aufruf ab.
  • Ausgabegröße: Ausgabe jenseits der Inline-Obergrenze des Bash-Tools kommt als Dateipfad plus kurze Vorschau an, nicht als gekürzter Text. Ausgabelimits beschreibt die Obergrenze und wie Sie jede Grenze anpassen.

Das PowerShell-Tool wendet auf die von ihm ausgeführten Befehle dasselbe Verhalten bei Timeout, Verschiebung in den Hintergrund und Ausgabeobergrenze an. Einzelheiten finden Sie im Abschnitt PowerShell-Tool.

Wenn ein eingefügter Befehl fehlschlägt

Ein fehlgeschlagener Befehl bricht den gesamten Skill-Aufruf ab, nicht nur seinen eigenen Platzhalter. Claude sieht den Skill-Inhalt für diesen Aufruf nie. Beim Abbruch wird Shell command failed for pattern "..." angezeigt. Die Fehlermeldung enthält die Ausgabe des Befehls.

Bei der Standard-Shell bash gilt jeder Exit-Code ungleich null als Fehler. Es gibt eine Ausnahme: Claude Code behandelt den Exit-Code 1 von Such- und Vergleichsbefehlen als normales Ergebnis und fügt deren Ausgabe ein. Exit-Codes von 2 oder höher gelten auch bei diesen Befehlen als Fehler.

Welche Befehle unter die Ausnahme fallen, hängt von der Shell ab:

  • Standard-Shell bash: die unter Ausgabelimits aufgeführten Befehle
  • shell: powershell, wenn das PowerShell-Tool aktiviert ist: eine andere Menge, die grep und git diff enthält, aber nicht find oder diff

Hängen Sie bei der Standard-Shell bash || true an jeden anderen Befehl an, bei dem Sie einen Exit-Code ungleich null erwarten. Ein Prüfskript, das mit 1 endet, wenn es Probleme findet, ist ein Beispiel dafür.

Wenn kein Shell-Befehl ausgeführt wurde

No shell command in <name> was run bedeutet, dass einer seiner Shell-Befehle ein Zeichen enthält, das das Tool nicht akzeptiert. Wie Sie das Zeichen finden und entfernen, erfahren Sie in der Fehlerreferenz.

Berechtigungsprüfungen bei eingefügten Befehlen

Eingefügte Befehle lösen nie eine Berechtigungsabfrage aus, während der Skill gerendert wird. Claude Code prüft jeden zunächst anhand Ihrer Berechtigungsregeln. Ein Befehl, auf den eine deny-Regel zutrifft, bricht den Aufruf mit Shell command permission check failed for pattern "..." ab.

Außerhalb des Auto-Modus bricht Claude Code den Aufruf mit demselben Fehler ab, wenn die Berechtigungsprüfung eines Befehls etwas anderes als allow ergibt. Dazu gehört auch eine Regel, die Sie normalerweise fragen würde. Damit ein nicht erfasster Befehl hier nicht zum Abbruch führt, genehmigen Sie ihn vorab mit allowed-tools. Wenn Ihre Organisation Berechtigungsregeln auf verwaltete Einstellungen beschränkt, siehe Wenn nur verwaltete Berechtigungsregeln gelten. deny- und ask-Regeln überschreiben allowed-tools weiterhin. Siehe Berechtigungen verwalten.

Im Auto-Modus bricht ein Befehl, der sonst Ihre Genehmigung erfordern würde, den Aufruf nicht ab. Der Skill wird mit einer Anweisung geladen, die Claude auffordert, den Befehl zuerst auszuführen, und Claudes eigener Aufruf durchläuft dann die üblichen Prüfungen des Auto-Modus. Der Aufruf wird dennoch abgebrochen in einem geforkten Skill, der agent setzt, sowie in einer Sitzung, in der Claude nicht über das Shell-Tool verfügt, das eingefügte Befehle ausführt.

Skills in einem Subagenten ausführen

Fügen Sie Ihrem Frontmatter context: fork hinzu, wenn ein Skill isoliert ausgeführt werden soll. Claude Code startet einen neuen Subagenten des im Feld agent festgelegten Typs und übergibt ihm den Skill-Inhalt als Prompt. Der Subagent sieht Ihren Konversationsverlauf nicht, daher müssen die Anweisungen des Skills für sich allein stehen.

[!NOTE]

Trotz des Namens läuft ein Skill mit context: fork nicht in einem Fork der aktuellen Konversation, der dem Subagenten alles übergeben würde, was Sie bisher besprochen haben. Wenn die Aufgabe von diesem Verlauf abhängt, forken Sie die Konversation, statt context: fork zu verwenden.

Der geforkte Subagent läuft im Hintergrund: Sie arbeiten weiter, während er läuft, und sein Ergebnis erscheint in Ihrer Konversation, wenn er fertig ist. Setzen Sie background: false im Frontmatter, um stattdessen im Turn, der den Skill aufgerufen hat, auf das Ergebnis zu warten.

Claude Code wartet auch dann auf das Ergebnis, wenn der Skill background: false nicht setzt, etwa in folgenden Fällen:

  • Im nicht interaktiven Modus, mit dem Flag -p oder dem Agent SDK
  • Wenn Sie CLAUDE_CODE_DISABLE_BACKGROUND_TASKS auf 1 setzen, wodurch auch andere Funktionen für Hintergrundaufgaben deaktiviert werden
  • Wenn Sie einen geforkten Skill aufrufen, während ein früherer Aufruf desselben Skills noch läuft
  • Wenn eine sitzungsbezogene geplante Aufgabe mit dem Skill als Prompt ausgelöst wird

Wenn ein Agent in einem dynamischen Workflow einen geforkten Skill aufruft, wartet dieser Agent auf das Ergebnis und erhält es, auch wenn der Skill background: false nicht setzt. Vor v2.1.295 wartete dieser Agent nicht auf den Skill, wenn er im Hintergrund lief. Das Ergebnis des Skills erschien dann in Ihrer Hauptkonversation, statt den Agenten zu erreichen.

Ein in den Hintergrund verschobener Fork läuft außerdem mit der eingeschränkteren Tool-Menge, die für Hintergrund-Subagenten gilt: Der Subagent des Skills ist ein regulärer Agententyp, daher greift die Ausnahme für Subagenten, die die Konversation forken, hier nicht. Wenn die Schritte Ihres Skills von einem Tool außerhalb dieser Menge abhängen, setzen Sie background: false, um die vollständige Tool-Menge zu behalten.

Ein geforkter Skill, der im Hintergrund läuft, wendet seine Änderungen außerhalb der Checkpoints Ihrer Sitzung an. Danach stellt /rewind nur die Dateien wieder her, die Claude bereits in Ihrer Konversation bearbeitet hatte. Die Änderungen des Skills an anderen Dateien bleiben bestehen, verwenden Sie also git, um sie rückgängig zu machen.

[!WARNING]

context: fork ist nur für Skills mit expliziten Anweisungen sinnvoll. Wenn Ihr Skill Richtlinien wie „verwende diese API-Konventionen“ ohne Aufgabe enthält, erhält der Subagent die Richtlinien, aber keinen umsetzbaren Prompt, und kehrt ohne aussagekräftige Ausgabe zurück.

Skills und Subagenten arbeiten in zwei Richtungen zusammen:

Ansatz System-Prompt Aufgabe Lädt außerdem
Skill mit context: fork Vom Agententyp Inhalt der SKILL.md CLAUDE.md, gemäß dem Startkontext des Agenten
Subagent mit Feld skills Markdown-Inhalt des Subagenten Delegationsnachricht von Claude Vorab geladene Skills + CLAUDE.md, gemäß dem Startkontext des Subagenten

Mit context: fork schreiben Sie die Aufgabe in Ihren Skill und wählen einen Agententyp, der sie ausführt. Die integrierten Agenten Explore und Plan starten ohne CLAUDE.md und git status, um ihren Kontext klein zu halten. Legen Sie alles, was die Aufgabe benötigt, in Ihre SKILL.md. Ein geforkter Skill mit agent: Explore startet mit diesem Inhalt und dem eigenen System-Prompt des Agenten, aber ohne eine Ihrer CLAUDE.md-Dateien.

Für den umgekehrten Fall, in dem Sie einen benutzerdefinierten Subagenten definieren, der Skills als Referenzmaterial verwendet, siehe Subagenten.

Beispiel: Recherche-Skill mit dem Explore-Agenten

Dieser Skill führt eine Recherche in einem geforkten Explore-Agenten aus. Der Skill-Inhalt wird zur Aufgabe, und der Agent stellt nur lesende Tools bereit, die für die Erkundung der Codebasis optimiert sind:

---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---

Research $ARGUMENTS thoroughly:

1. Find relevant files using Glob and Grep
2. Read and analyze the code
3. Summarize findings with specific file references

Wenn dieser Skill ausgeführt wird:

  1. Ein neuer isolierter Kontext wird erstellt
  2. Der Subagent erhält den Skill-Inhalt als Prompt (die Anweisungen „Research $ARGUMENTS thoroughly“)
  3. Das Feld agent bestimmt die Ausführungsumgebung (Modell, Tools und Berechtigungen)
  4. Der Subagent fasst seine Ergebnisse zusammen und gibt sie an Ihre Hauptkonversation zurück, wenn er fertig ist

Das Feld agent legt fest, welche Subagenten-Konfiguration verwendet wird. Zur Auswahl stehen integrierte Agenten (Explore, Plan, general-purpose) oder jeder benutzerdefinierte Subagent aus .claude/agents/. Wird es weggelassen, wird general-purpose verwendet.

Claudes Zugriff auf Skills einschränken

Standardmäßig kann Claude jeden Skill aufrufen, für den nicht disable-model-invocation: true gesetzt ist. Skills, die allowed-tools definieren, gewähren Claude während des Turns, der den Skill aufruft, Zugriff auf diese Tools ohne Genehmigung bei jeder Verwendung; die Freigabe erlischt, wenn Sie Ihre nächste Nachricht senden. Ihre Berechtigungseinstellungen regeln weiterhin das grundlegende Genehmigungsverhalten für alle anderen Tools. Einige integrierte Befehle sind ebenfalls über das Skill-Tool verfügbar, darunter /init und /security-review. Andere integrierte Befehle wie /compact sind es nicht.

Drei Möglichkeiten, zu steuern, welche Skills Claude aufrufen kann:

Alle Skills deaktivieren, indem Sie das Skill-Tool in /permissions verweigern:

# Add to deny rules:
Skill

Bestimmte Skills erlauben oder verweigern mit Berechtigungsregeln:

# Allow only specific skills
Skill(commit)
Skill(review-pr *)

# Deny specific skills
Skill(deploy *)

Berechtigungssyntax: Skill(name) für eine exakte Übereinstimmung, Skill(name *) für eine Präfixübereinstimmung mit beliebigen Argumenten.

Die Tabelle zeigt, was eine deny-Regel über den von Ihnen geschriebenen Namen hinaus blockiert, abhängig von der Art des Namens in der Regel.

Ihre deny-Regel nennt Beispielregel Claude Code blockiert außerdem
Einen Alias Skill(review) Das mitgelieferte /code-review über seinen Alias /review
Einen nicht qualifizierten Namen Skill(deploy) Einen verschachtelten Skill, der als apps/web:deploy aufgeführt ist
Einen von claude.ai synchronisierten Skill Skill(anthropic-skills:deploy) Diesen Skill, wenn Claude Desktop ihn einer Sitzung als Plugin bereitstellt
Die Plugin-Form eines synchronisierten Skills Skill(deploy:deploy) Den synchronisierten Skill
Einen Skill in der Parameterform Skill(skill:deploy) Den Skill, unter welchem seiner Namen Claude ihn auch aufruft, einschließlich seines Alias und Anzeigenamens

Vor v2.1.260 blockierte Claude Code einen verschachtelten Skill, der unter seinem qualifizierten Namen aufgeführt war, nicht, wenn die deny-Regel nur den nicht qualifizierten Namen nannte.

Claude Code gleicht eine allow-Regel nur mit dem eigenen Namen des Skills und dem Namen in Claudes Aufruf ab. Um einen synchronisierten Skill ohne Berechtigungsabfrage zu genehmigen, nennen Sie ihn innerhalb seines reservierten Namensraums:

  • Skill(anthropic-skills:pdf) genehmigt den synchronisierten Skill pdf
  • Skill(anthropic-skills *) genehmigt jeden synchronisierten Skill
  • Skill(anthropic *) deckt anthropic-skills:pdf nicht ab, da ein Präfix außerhalb des Namensraums nicht auf die Namen darin zutrifft

Einzelne Skills ausblenden, indem Sie ihrem Frontmatter disable-model-invocation: true hinzufügen. Dadurch wird der Skill vollständig aus Claudes Kontext entfernt.

[!NOTE]

Mit user-invocable: false können Sie den Skill nicht aufrufen, Claude jedoch schon. Um zu verhindern, dass Claude ihn über das Skill-Tool aufruft, setzen Sie disable-model-invocation: true.

Skill-Sichtbarkeit über Einstellungen überschreiben

Die Einstellung skillOverrides steuert die Sichtbarkeit von Skills über Ihre Einstellungen statt über das eigene Frontmatter des Skills. Verwenden Sie sie für Skills, deren SKILL.md Sie nicht bearbeiten möchten, etwa solche, die in ein gemeinsames Projekt-Repository eingecheckt sind. Das Menü /skills schreibt sie für Sie: Markieren Sie einen Skill und drücken Sie Space, um die Zustände durchzuschalten, und anschließend Esc, um in .claude/settings.local.json zu speichern.

Jeder Schlüssel ist ein Skill-Name und jeder Wert einer von vier Zuständen:

Wert Für Claude aufgeführt Im /-Menü
"on" Name und Beschreibung Ja
"name-only" Nur Name Ja
"user-invocable-only" Ausgeblendet Ja
"off" Ausgeblendet Ausgeblendet

Das Menü /skills bezeichnet den Zustand "user-invocable-only" als user-only.

"off" blendet den Skill zusätzlich zum /-Menü im Terminal auch aus den Befehlslisten aus, die Remote Control-Clients und Aufrufern des Agent SDK angeboten werden. Wenn Sie einen ausgeblendeten Skill über seinen vollständigen Namen aufrufen, wird der skillOverrides-Fehler zurückgegeben, statt ihn auszuführen.

Ein Skill, der in skillOverrides fehlt, wird als "on" behandelt. Das folgende Beispiel reduziert einen Skill auf seinen Namen und schaltet einen anderen vollständig aus:

{
  "skillOverrides": {
    "legacy-context": "name-only",
    "deploy": "off"
  }
}

Einige mitgelieferte Skills haben Aliase, etwa checkup für /doctor. Wenn Sie einen skillOverrides-Eintrag unter einem Alias in verwalteten Einstellungen oder in einer Datei setzen, die Sie mit dem Flag --settings übergeben, wendet Claude Code ihn auf den Skill hinter dem Alias an. Über einen Alias können Sie einen Skill nur weiter einschränken, niemals sichtbarer machen, und wenn Sie in verwalteten Einstellungen auch einen Eintrag unter dem eigenen Namen des Skills setzen, hat dieser Eintrag Vorrang. Vor v2.1.260 wendete Claude Code einen Eintrag unter einem Alias in keiner Einstellungsquelle auf den Skill an.

In Benutzer-, Projekt- und lokalen Einstellungen gleicht Claude Code Einträge nur mit Skill-Namen ab. Wenn Sie dort einen Eintrag für review setzen, gilt er für einen Skill namens review, nicht für das mitgelieferte /code-review über seinen Alias /review.

Plugin-Skills sind von skillOverrides nicht betroffen. Verwalten Sie diese stattdessen über /plugin.

Ungenutzte Skills finden

Jeder Skill in der Skill-Liste vergrößert Ihren Kontext in jedem Turn, unabhängig davon, ob Claude ihn jemals verwendet. Führen Sie /skill-doctor aus, um zu sehen, was jeder Ihrer Skills kostet und wie oft er verwendet wird, damit Sie entscheiden können, welche Sie ausschalten. In einer interaktiven Sitzung öffnet sich der Bericht im Tab Stats des /plugin-Managers. Im nicht interaktiven Modus mit -p gibt Claude Code ihn als Text aus.

Der Bericht umfasst die Skills in Ihrer Sitzung mit Ausnahme mitgelieferter Skills und Enterprise-Skills. Er kennzeichnet Skills in der Liste, die noch nie aufgerufen wurden, und gibt an, wo Sie sie ausschalten können. Beginnen Sie unter den Skills, für die er angibt, wo Sie sie ausschalten können, mit denen mit den höchsten Kontextkosten. Der Bericht listet außerdem Plugins auf, die Sie in letzter Zeit nicht verwendet haben.

/skill-doctor erfordert Claude Code v2.1.252 oder höher und ist in Sitzungen, die das Abrufen von Feature-Flags überspringen, nicht verfügbar. Wenn Sie /skill-doctor über Remote Control von Ihrem Telefon oder Browser aus ausführen, antwortet Claude Code stattdessen mit Skill usage reports are not available on this connection.. Führen Sie /skill-doctor im Terminal auf dem Rechner aus, auf dem die Sitzung läuft.

Skill evaluieren und iterieren

Das Sehen eines Skill-Triggers zeigt dir, dass Claude ihn gefunden hat, nicht dass er das getan hat, was du beabsichtigt hast. Um zu wissen, dass ein Skill funktioniert, musst du zwei Dinge separat messen: ob Claude ihn bei den Prompts aufruft, bei denen er sollte, und ob die Ausgabe dem entspricht, was du erwartest, wenn er es tut.

Die Überprüfung beider ist ein Baseline-Vergleich. Sammle ein paar realistische Prompts, führe jeden in einer neuen Sitzung mit dem verfügbaren Skill aus und wiederhole dies mit ihm deaktiviert, und vergleiche die Ergebnisse. Eine neue Sitzung ist wichtig, da der verbleibende Kontext aus der Erstellung des Skills Lücken in den geschriebenen Anweisungen verdeckt.

Wie du den Skill für den zweiten Durchlauf deaktivierst, hängt davon ab, woher er kommt:

  • Persönlicher oder Projekt-Skill: Setze ihn auf "off" in skillOverrides.
  • Skill, den ein Plugin bereitstellt: skillOverrides gilt nicht für Plugin-Skills. Verwende stattdessen claude plugin eval, das jeden Durchlauf ohne geladenes Plugin wiederholt.

Zwei Tools automatisieren den Baseline-Vergleich. Für einen Skill, der in einem Plugin ausgeliefert wird, führt claude plugin eval jeden Prompt in einer isolierten Sitzung mit und ohne das Plugin aus, bewertet ihn mit Gradern, die du definierst oder die er für dich schreibt, und beendet sich mit einem Nicht-Null-Wert unterhalb eines Schwellwerts, sodass du CI darauf abstimmen kannst. Um an einem einzelnen Skill in einer Claude Code-Konversation zu iterieren, führt das unten stehende skill-creator-Plugin eine ähnliche Schleife mit seinem eigenen evals/evals.json-Format aus. Die beiden Formate sind nicht austauschbar.

Evals mit skill-creator ausführen

Das skill-creator-Plugin automatisiert die Vergleichsschleife in Claude Code. Installieren Sie es in der VS Code-Erweiterung oder der Desktop-App vom offiziellen Marketplace, indem Sie Plugin installieren folgen. Starten Sie Claude Code in einem Terminal mit claude und geben Sie dann Folgendes in dessen Eingabeaufforderung ein:

/plugin install skill-creator@claude-plugins-official

Wenn die Installation fehlschlägt, vergleiche die Nachricht, die Claude Code meldet:

  • Marketplace "claude-plugins-official" not found: Füge den Marketplace mit /plugin marketplace add anthropics/claude-plugins-official hinzu und versuche dann die Installation erneut.
  • Plugin "<name>" not found in marketplace "claude-plugins-official": Ihre lokale Kopie des Marketplace-Katalogs ist möglicherweise veraltet. Aktualisieren Sie sie mit /plugin marketplace update claude-plugins-official und versuchen Sie die Installation dann erneut. Wenn der erneute Versuch dieselbe Meldung ausgibt, lesen Sie Plugin nicht im Marketplace gefunden.

Wenn die Installationszusammenfassung Run /reload-plugins to apply. meldet, führt Claude Code diesen Reload anschließend für Sie aus. Wenn der Reload warnt, dass Ihre nächste Nachricht die Konversation erneut einlesen würde, führen Sie /reload-plugins --force aus, um die Skills des Plugins in der aktuellen Sitzung verfügbar zu machen. Bitten Sie Claude dann, einen vorhandenen Skill zu evaluieren, zum Beispiel evaluate my summarize-changes skill with skill-creator. Das Plugin führt Sie durch das Schreiben von Testfällen und führt die Schleife aus:

  • Testfälle: speichert Prompts, Eingabedateien und erwartetes Verhalten in evals/evals.json im Skill-Verzeichnis
  • Isolierte Ausführungen: spawnt einen Subagent pro Testfall, sodass jede Ausführung mit einem sauberen Kontext beginnt, und zeichnet Token-Anzahl und Dauer auf
  • Bewertung: überprüft jede Assertion gegen die Ausgabe und schreibt Bestanden oder Nicht bestanden mit Beweis in grading.json
  • Benchmark: aggregiert Erfolgsquote, Zeit und Tokens für mit-Skill versus ohne-Skill in benchmark.json, sodass du die Verbesserung der Erfolgsquote gegen den Token- und Zeit-Overhead vergleichen kannst
  • Versionsvergleich: führt einen blinden A/B zwischen zwei Versionen des Skills durch, sodass du bestätigen kannst, dass eine Bearbeitung eine Verbesserung ist, bevor du sie commitest
  • Beschreibungsoptimierung: generiert sollte-auslösen und sollte-nicht-auslösen Prompts, misst die Trefferquote und schlägt Beschreibungsbearbeitungen vor, wenn der Skill bei falschen Anfragen aktiviert wird
  • Review-Viewer: öffnet einen HTML-Bericht, in dem du jede Ausgabe inspizieren und qualitatives Feedback aufzeichnen kannst, das die nächste Iteration liest

Für das Eval-Dateiformat und den vollständigen Iterations-Workflow siehe Evaluating skill output quality auf agentskills.io. Für Hintergrundinformationen zum Benchmark- und Vergleichsmodus siehe die skill-creator Ankündigung.

Fähigkeiten teilen

Fähigkeiten können je nach Zielgruppe in verschiedenen Bereichen verteilt werden:

  • Projektfähigkeiten: Commit .claude/skills/ zur Versionskontrolle
  • Plugins: Erstellen Sie ein skills/-Verzeichnis in Ihrem Plugin
  • Verwaltet: Bereitstellung organisationsweit über verwaltete Einstellungen

Visuelle Ausgabe generieren

Fähigkeiten können Skripte in jeder Sprache bündeln und ausführen und Claude Funktionen geben, die über das hinausgehen, was in einer einzelnen Eingabeaufforderung möglich ist. Ein Muster ist die Generierung visueller Ausgabe: interaktive HTML-Dateien, die in Ihrem Browser geöffnet werden, um Daten zu erkunden, Fehler zu beheben oder Berichte zu erstellen.

Dieses Beispiel erstellt einen Codebase-Explorer: eine interaktive Baumansicht, in der Sie Verzeichnisse erweitern und reduzieren können, Dateigröße auf einen Blick sehen und Dateitypen nach Farbe identifizieren können.

Erstellen Sie das Fähigkeitsverzeichnis:

mkdir -p ~/.claude/skills/codebase-visualizer/scripts

Speichern Sie dies unter ~/.claude/skills/codebase-visualizer/SKILL.md. Die Beschreibung teilt Claude mit, wann diese Fähigkeit aktiviert werden soll, und die Anweisungen teilen Claude mit, das gebündelte Skript auszuführen. Der Skriptpfad verwendet ${CLAUDE_SKILL_DIR}, damit er korrekt aufgelöst wird, unabhängig davon, ob die Fähigkeit auf persönlicher, Projekt- oder Plugin-Ebene installiert ist:

---
name: codebase-visualizer
description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.
allowed-tools: Bash(python3 *)
---

# Codebase Visualizer

Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

## Usage

Run the visualization script from your project root:

```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .
```

This creates `codebase-map.html` in the current directory and opens it in your default browser.

## What the visualization shows

- **Collapsible directories**: Click folders to expand/collapse
- **File sizes**: Displayed next to each file
- **Colors**: Different colors for different file types
- **Directory totals**: Shows aggregate size of each folder

Speichern Sie dies unter ~/.claude/skills/codebase-visualizer/scripts/visualize.py. Dieses Skript scannt einen Verzeichnisbaum und generiert eine in sich geschlossene HTML-Datei mit:

  • Eine Zusammenfassungs-Seitenleiste mit Dateianzahl, Verzeichnisanzahl, Gesamtgröße und Anzahl der Dateitypen
  • Ein Balkendiagramm, das die Codebase nach Dateityp aufschlüsselt (Top 8 nach Größe)
  • Ein zusammenklappbarer Baum, in dem Sie Verzeichnisse erweitern und reduzieren können, mit farbcodierten Dateityp-Indikatoren

Das Skript erfordert Python 3, verwendet aber nur integrierte Bibliotheken, daher müssen keine Pakete installiert werden:

#!/usr/bin/env python3
"""Generate an interactive collapsible tree visualization of a codebase."""

import json
import sys
import webbrowser
from html import escape
from pathlib import Path
from collections import Counter

IGNORE = {'.git', 'node_modules', '__pycache__', '.venv', 'venv', 'dist', 'build'}

def scan(path: Path, stats: dict) -> dict:
    result = {"name": path.name, "children": [], "size": 0}
    try:
        for item in sorted(path.iterdir()):
            if item.name in IGNORE or item.name.startswith('.'):
                continue
            if item.is_file():
                size = item.stat().st_size
                ext = item.suffix.lower() or '(no ext)'
                result["children"].append({"name": item.name, "size": size, "ext": ext})
                result["size"] += size
                stats["files"] += 1
                stats["extensions"][ext] += 1
                stats["ext_sizes"][ext] += size
            elif item.is_dir():
                stats["dirs"] += 1
                child = scan(item, stats)
                if child["children"]:
                    result["children"].append(child)
                    result["size"] += child["size"]
    except PermissionError:
        pass
    return result

def generate_html(data: dict, stats: dict, output: Path) -> None:
    ext_sizes = stats["ext_sizes"]
    total_size = sum(ext_sizes.values()) or 1
    sorted_exts = sorted(ext_sizes.items(), key=lambda x: -x[1])[:8]
    colors = {
        '.js': '#f7df1e', '.ts': '#3178c6', '.py': '#3776ab', '.go': '#00add8',
        '.rs': '#dea584', '.rb': '#cc342d', '.css': '#264de4', '.html': '#e34c26',
        '.json': '#6b7280', '.md': '#083fa1', '.yaml': '#cb171e', '.yml': '#cb171e',
        '.mdx': '#083fa1', '.tsx': '#3178c6', '.jsx': '#61dafb', '.sh': '#4eaa25',
    }
    lang_bars = "".join(
        f'<div class="bar-row"><span class="bar-label">{ext}</span>'
        f'<div class="bar" style="width:{(size/total_size)*100}%;background:{colors.get(ext,"#6b7280")}"></div>'
        f'<span class="bar-pct">{(size/total_size)*100:.1f}%</span></div>'
        for ext, size in sorted_exts
    )
    def fmt(b):
        if b < 1024: return f"{b} B"
        if b < 1048576: return f"{b/1024:.1f} KB"
        return f"{b/1048576:.1f} MB"

    html = f'''<!DOCTYPE html>
<html><head>
  <meta charset="utf-8"><title>Codebase Explorer</title>
  <style>
    body {{ font: 14px/1.5 system-ui, sans-serif; margin: 0; background: #1a1a2e; color: #eee; }}
    .container {{ display: flex; height: 100vh; }}
    .sidebar {{ width: 280px; background: #252542; padding: 20px; border-right: 1px solid #3d3d5c; overflow-y: auto; flex-shrink: 0; }}
    .main {{ flex: 1; padding: 20px; overflow-y: auto; }}
    h1 {{ margin: 0 0 10px 0; font-size: 18px; }}
    h2 {{ margin: 20px 0 10px 0; font-size: 14px; color: #888; text-transform: uppercase; }}
    .stat {{ display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #3d3d5c; }}
    .stat-value {{ font-weight: bold; }}
    .bar-row {{ display: flex; align-items: center; margin: 6px 0; }}
    .bar-label {{ width: 55px; font-size: 12px; color: #aaa; }}
    .bar {{ height: 18px; border-radius: 3px; }}
    .bar-pct {{ margin-left: 8px; font-size: 12px; color: #666; }}
    .tree {{ list-style: none; padding-left: 20px; }}
    details {{ cursor: pointer; }}
    summary {{ padding: 4px 8px; border-radius: 4px; }}
    summary:hover {{ background: #2d2d44; }}
    .folder {{ color: #ffd700; }}
    .file {{ display: flex; align-items: center; padding: 4px 8px; border-radius: 4px; }}
    .file:hover {{ background: #2d2d44; }}
    .size {{ color: #888; margin-left: auto; font-size: 12px; }}
    .dot {{ width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; }}
  </style>
</head><body>
  <div class="container">
    <div class="sidebar">
      <h1>📊 Summary</h1>
      <div class="stat"><span>Files</span><span class="stat-value">{stats["files"]:,}</span></div>
      <div class="stat"><span>Directories</span><span class="stat-value">{stats["dirs"]:,}</span></div>
      <div class="stat"><span>Total size</span><span class="stat-value">{fmt(data["size"])}</span></div>
      <div class="stat"><span>File types</span><span class="stat-value">{len(stats["extensions"])}</span></div>
      <h2>By file type</h2>
      {lang_bars}
    </div>
    <div class="main">
      <h1>📁 {escape(data["name"])}</h1>
      <ul class="tree" id="root"></ul>
    </div>
  </div>
</body></html>'''
    output.write_text(html)

if __name__ == '__main__':
    target = Path(sys.argv[1] if len(sys.argv) > 1 else '.').resolve()
    stats = {"files": 0, "dirs": 0, "extensions": Counter(), "ext_sizes": Counter()}
    data = scan(target, stats)
    out = Path('codebase-map.html')
    generate_html(data, stats, out)
    print(f'Generated {out.absolute()}')
    webbrowser.open(f'file://{out.absolute()}')

Zum Testen öffnen Sie Claude Code in einem beliebigen Projekt und fragen Sie „Visualize this codebase.“ Claude führt das Skript aus, das den Pfad der generierten Datei ausgibt, z. B. Generated /path/to/codebase-map.html, und öffnet es in Ihrem Browser. Wenn Sie in einer Umgebung ohne Kopf arbeiten, in der kein Browser geöffnet wird, bestätigt der gedruckte Pfad, dass das Skript erfolgreich war.

Dieses Muster funktioniert für jede visuelle Ausgabe: Abhängigkeitsgraphen, Testabdeckungsberichte, API-Dokumentation oder Datenbankschema-Visualisierungen. Das gebündelte Skript erledigt die Arbeit, während Claude die Orchestrierung übernimmt.

Fehlerbehebung

Skill wird nicht ausgelöst

Wenn Claude Ihren Skill nicht wie erwartet verwendet:

  1. Überprüfen Sie, dass die Beschreibung Schlüsselwörter enthält, die Benutzer natürlicherweise sagen würden
  2. Stellen Sie sicher, dass der Skill in What skills are available? angezeigt wird
  3. Versuchen Sie, Ihre Anfrage umzuformulieren, um sie besser an die Beschreibung anzupassen
  4. Rufen Sie ihn direkt mit /skill-name auf, wenn der Skill vom Benutzer aufgerufen werden kann
  5. Wenn auch /skill-name nicht erkannt wird, prüfen Sie, ob Claude Code den Namen des Skills abgelehnt hat
  6. Wenn der Skill paths festlegt, prüfen Sie, ob sich die Dateien, die Claude liest, bearbeitet oder schreibt, im aktuellen Arbeitsverzeichnis von Claude befinden. Für Dateien außerhalb davon wird der Skill nicht aktiviert, etwa für Dateien in einem benachbarten Git-Worktree, selbst wenn Sie diesen mit /add-dir hinzugefügt haben. Damit der Skill für diese Dateien aktiviert wird, starten Sie Claude Code in diesem Worktree oder verschieben Sie die Sitzung mit /cd dorthin.

Wenn die Frontmatter-YAML fehlerhaft ist, lädt Claude Code den Skill-Body mit leeren Metadaten, sodass /skill-name weiterhin funktioniert, aber Claude keine description zum Abgleichen hat. Führen Sie mit --debug aus, um den Parse-Fehler zu sehen.

Wenn der Skill in einem Plugin enthalten ist, können Sie messen, wie oft er bei realistischen Prompts ausgelöst wird, anstatt ihn einzeln zu überprüfen: Schreiben Sie einen Eval-Fall mit einem tool_used: Skill Grader und führen Sie ihn mit claude plugin eval nach jeder Beschreibungsänderung aus.

Um SKILL.md-Dateien zu finden, deren Frontmatter nicht geparst wird, führen Sie claude plugin validate im Skills-Verzeichnis aus, beispielsweise claude plugin validate .claude/skills für Projekt-Skills oder claude plugin validate ~/.claude/skills für persönliche Skills. Erfordert Claude Code v2.1.233 oder später.

Skill wird zu oft ausgelöst

Wenn Claude Ihren Skill verwendet, wenn Sie das nicht möchten:

  1. Machen Sie die Beschreibung spezifischer
  2. Fügen Sie disable-model-invocation: true hinzu, wenn Sie nur manuelle Aufrufe möchten

Claude folgt einem Skill nicht mehr

Wenn Claude einem Skill in seiner ersten Antwort folgt und später damit aufhört, beginnen Sie mit dem Fall, der passt:

  • Claude hat eine Regel übersprungen, die jedes Mal gelten muss: Verschieben Sie die Regel in einen Hook. Claude Code führt einen Hook jedes Mal aus, wenn sein Ereignis auftritt, z. B. vor jeder Dateibearbeitung, unabhängig davon, ob Claude dem Skill folgt oder nicht. Um die Regel mit dem Skill zu behalten, definieren Sie den Hook in der hooks Frontmatter des Skills. Dieser Hook gilt ab dem Zeitpunkt, an dem der Skill aufgerufen wird, bis die Sitzung endet.
  • Claude hat Anleitung übersprungen, die es mit Urteilsvermögen anwenden sollte: Formulieren Sie die Anleitung so, dass sie für die gesamte Aufgabe gilt, z. B. „Tests nach jeder Bearbeitung ausführen“ anstelle von „Tests ausführen“. Claude Code fügt den Inhalt des Skills zum Gespräch hinzu, wenn der Skill aufgerufen wird, und liest die Datei später nicht erneut.
  • Das Gespräch wurde komprimiert: Rufen Sie den Skill erneut auf, um seinen vollständigen Inhalt wiederherzustellen. Nach Komprimierung kann Claude Code nur den Anfang eines aufgerufenen Skills behalten, daher platzieren Sie die wichtigsten Anweisungen oben in SKILL.md.

Skill-Beschreibungen werden gekürzt

Claude Code lädt eine Auflistung von Skill-Namen und Beschreibungen in den Kontext, damit Claude weiß, was verfügbar ist. Die Auflistung enthält immer jeden Skill-Namen, aber wenn Sie viele Skills haben, kürzt Claude Code die Beschreibungen, um in das Zeichenbudget der Auflistung zu passen, was die Schlüsselwörter entfernen kann, die Claude zum Abgleichen Ihrer Anfrage benötigt. Das Budget skaliert mit 1 % des Kontextfensters des Modells. Wenn die Auflistung überläuft, löscht Claude Code Beschreibungen beginnend mit den Skills, die Sie am wenigsten aufrufen, sodass die Skills, die Sie am meisten verwenden, ihren vollständigen Text behalten.

Führen Sie /doctor aus, um eine Schätzung der Kontextkosten der Auflistung und ihrer größten Beitragenden zu erhalten. Um Skills zu finden, die sich lohnen auszuschalten, führen Sie /skill-doctor aus. Wenn die Auflistung ihr Budget überschreitet, schreibt Claude Code auch eine Warnung in das Debug-Protokoll, das mit --debug sichtbar ist.

Die Skills-Zeile in /context meldet die Größe der Auflistung nach Anwendung des Budgets, sodass sie dem entspricht, was das Modell erhält. Vor v2.1.196 zählte die Zeile den vollständigen Text jeder Beschreibung und konnte einen Wert anzeigen, der mehrmals größer als das konfigurierte Budget war.

Um das Budget zu erhöhen, legen Sie die Einstellung skillListingBudgetFraction (z. B. 0.02 = 2 %) oder die Umgebungsvariable SLASH_COMMAND_TOOL_CHAR_BUDGET auf eine feste Zeichenanzahl fest. Um Budget für andere Skills freizugeben, legen Sie Einträge mit niedriger Priorität auf "name-only" in skillOverrides fest, sodass sie ohne Beschreibung aufgelistet werden. Sie können auch den Text description und when_to_use an der Quelle kürzen: Stellen Sie den wichtigsten Anwendungsfall zuerst, da der kombinierte Text jedes Eintrags unabhängig vom Budget auf 1.536 Zeichen begrenzt ist. Die Obergrenze ist mit skillListingMaxDescChars konfigurierbar.

Spitze Klammern in einer Skill-Beschreibung werden als &lt; und &gt; angezeigt

Claude Code zeigt < und > in den Feldern description und when_to_use als &lt; und &gt; an. Um einen Platzhalter wie <branch> anzuzeigen, verwenden Sie eckige Klammern oder argument-hint:

  • Eckige Klammern: Ersetzen Sie <branch> durch [branch], was so angezeigt wird, wie es eingegeben wurde
  • argument-hint: Verschieben Sie den Platzhalter in eine neue Zeile argument-hint: <branch>. Er wird nach dem Befehlsnamen angezeigt. Wenn Sie den Skill auch auf claude.ai oder in die Skills API hochladen, prüfen Sie zuerst, ob argument-hint dort akzeptiert wird.

Persönliche Skills sind verschwunden

Wenn Skill-Ordner, die Sie in ~/.claude/skills/ erstellt haben, weg sind, schauen Sie in ~/.claude/skills/.trash/. Wenn Claude Code Skills von claude.ai synchronisiert, lädt es sie in den separaten synced-Unterordner herunter und verschiebt oder löscht nicht die Ordner, die Sie erstellen.

Vor v2.1.280 führte eine Datei namens manifest.json in ~/.claude/skills/ dazu, dass Claude Code die Skill-Ordner, die diese Datei auflistete, in einen mit Zeitstempel versehenen Ordner unter ~/.claude/skills/.trash/ verschob, und diese Skills wurden nicht mehr geladen.

Um einen Skill wiederherzustellen, verschieben Sie seinen Ordner aus dem mit Zeitstempel versehenen Ordner zurück in ~/.claude/skills/. Tun Sie dies vor dem Aufbewahrungssweep, der Trash-Einträge löscht, standardmäßig 30 Tage nach dem Verschieben in den Papierkorb.

Verwandte Ressourcen

  • Debuggen Sie Ihre Konfiguration: Diagnostizieren Sie, warum ein Skill nicht angezeigt oder ausgelöst wird
  • Evaluating skill output quality: das Eval-Dateiformat und Iterations-Workflow auf agentskills.io
  • Skill authoring best practices: Schreibanleitung, die über Claude-Produkte hinweg gilt
  • Subagenten: Delegieren Sie Aufgaben an spezialisierte Agenten
  • Plugins: Packen und verteilen Sie Skills mit anderen Erweiterungen
  • Hooks: Automatisieren Sie Workflows um Tool-Ereignisse
  • Memory: Verwalten Sie CLAUDE.md-Dateien für persistenten Kontext
  • Befehle: Referenz für integrierte Befehle und gebündelte Skills
  • Berechtigungen: Steuern Sie Tool- und Skill-Zugriff
  • Claude Tag Skills: Projekt-Skills, die in ein Repository übernommen wurden, werden auch geladen, wenn dieses Repository in einem Claude Tag-Kanal verwendet wird