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.
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, die jeden gebündelten Skill außer /doctor deaktiviert.
Die Einrichtungsüberprüfung /doctor bleibt eingabbar, wenn disableBundledSkills aktiviert ist, in Claude Code v2.1.205 und später. Um sie auszublenden, setzen Sie die Umgebungsvariable DISABLE_DOCTOR_COMMAND oder einen skillOverrides-Eintrag von "doctor": "off". Vor v2.1.205 war /doctor ein integrierter Befehl und kein gebündelter Skill.
Gebündelte Skills werden zusammen mit integrierten Befehlen in der Befehlsreferenz aufgelistet, gekennzeichnet mit Skill in der Spalte „Zweck".
Führen Sie Ihre App aus und überprüfen Sie sie
Drei gebündelte 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 das aufgezeichnete Skill den gebündelten /verify. Dies erfordert Claude Code v2.1.200 oder später.
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. Vor v2.1.205 sagte der gebündelte Skill Claude, dass es alles einbeziehen sollte, was ein Lauf gelernt hat, was häufige Merge-Konflikte verursachte.
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.
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
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.
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 Sessions 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-Sessions |
| Projekt | .claude/skills/<skill-name>/SKILL.md |
Sessions in diesem Repository. Committen Sie es, damit Ihr Team es auch erhält |
| Verschachtelt | <subdir>/.claude/skills/<skill-name>/SKILL.md |
Sessions, die in oder unter <subdir> gestartet werden. Eine Session, die darüber gestartet wird, lädt 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 Session. 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 Sie in Ihren claude.ai-Einstellungen aktivieren | Cowork- und Cloud-Sessions. Siehe Skills, die von claude.ai synchronisiert werden für lokale Sessions |
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 liestSKILL.mdaus dem Ziel und lädt den Skill einmal, auch wenn mehrere Speicherorte auf dasselbe Ziel verweisen. Plugin-Skills handhaben Symlinks anders. - Reservierter Name: 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. - Befehlsdateien: Eine Markdown-Datei in
.claude/commands/ist das ältere Format und funktioniert immer noch. Sie unterstützt dieselbe Frontmatter außernameundpaths, und Sie rufen sie nach ihrem Dateinamen auf. Bevorzugen Sie einen Skill für neue Arbeiten, da Skills auch unterstützende Dateien unterstützen. - Skill-Ordner als Plugin: Fügen Sie eine
.claude-plugin/plugin.jsonzu einem Skill-Ordner hinzu und er wird als Plugin mit dem Namen<name>@skills-dirgeladen, sodass er Agents, Hooks und MCP-Server bündeln kann. In einem Projekt's.claude/skills/ist dies erforderlich, um zuerst den Workspace-Trust-Dialog zu akzeptieren.
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 Session mit /cd verschieben auf v2.1.246 oder später, fügt Claude Code die Projekt-Skills des neuen Verzeichnisses hinzu.
Skills in einem .claude/skills/-Verzeichnis unterhalb des Ortes, an dem Sie gestartet haben, werden beim Start nicht geladen. Sie werden beim ersten Mal geladen, wenn Claude eine Datei in diesem Unterverzeichnis liest oder bearbeitet, und bleiben für den Rest der Session 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.
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/:
/deployfü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 inapps/web/angewendet wird./apps/web:deployfü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 permissions.additionalDirectories-Einstellung 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 Bearbeiten Sie einen Skill während einer Session beschreibt. Es überwacht nicht das .claude/commands/ oder .claude/agents/ des hinzugefügten Verzeichnisses, daher starten Sie die Session nach dem Ändern einer Datei dort neu.
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.
Lösen Sie Skills auf, die denselben Namen haben
Wenn zwei Skills denselben Namen haben, entscheidet, woher jeder kommt, welcher /name ausführt. Die Tabelle behandelt die Enterprise-, Personal-, Projekt-, verschachtelte, Plugin- und claude.ai-Speicherorte, gebündelte Skills und Befehlsdateien:
| 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 Ihren Skill nie 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 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 ein von claude.ai synchronisierter Skill | Der andere Skill oder Befehl. Siehe Wenn ein synchronisierter Skill-Name mit einem anderen Befehl übereinstimmt |
Verwenden Sie Skills in Cowork- und Cloud-Sessions
Cowork-Sessions und Cloud-Sessions, einschließlich Routinen, lesen nicht ~/.claude/skills/ auf Ihrer Maschine. Sowohl interaktive als auch geplante Cowork-Sessions laden die Skills, die für Ihr claude.ai-Konto aktiviert sind, synchronisiert beim Session-Start; verwalten Sie sie über Customize in der Desktop-App-Seitenleiste oder in den Skill-Einstellungen auf claude.ai. Cloud-Sessions laden zusätzlich Projekt-Skills, die in .claude/skills/ des geklonten Repositorys committet sind.
Wenn ein Skill nur in ~/.claude/skills/ auf Ihrer Maschine vorhanden ist, meldet Claude Code, dass der Skill nicht gefunden wurde, wenn eine Routine ihn aufruft, da jede Routine-Ausführung als frische Remote-Session startet. Um einen persönlichen Skill in diesen Sessions verfügbar zu machen:
- Für Cowork- und Cloud-Sessions aktivieren Sie den Skill für Ihr claude.ai-Konto.
- Für Cloud-Sessions können Sie den Skill stattdessen in
.claude/skills/des Repositorys committen oder ihn in einem Plugin versenden, das in.claude/settings.jsondes Repositorys deklariert ist. Im Repo deklarierte Plugins installieren beim Session-Start; Plugins, die nur in Ihren Benutzereinstellungen aktiviert sind, werden nicht übertragen.
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 Skills für Ihr claude.ai-Konto aktiviert haben. In Cowork- und Cloud-Sessions lädt Claude Code diese Skills ohne Setup auf Ihrer Maschine. In jeder anderen Session auf Ihrer Maschine lädt Claude Code sie nur, nachdem Sie die Synchronisierung mit CLAUDE_CODE_SYNC_SKILLS in einem nicht-interaktiven Lauf aktivieren, wie Wo synchronisierte Skills geladen werden beschreibt.
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 Session 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-Session lädt Claude Code die Skills, die für Ihr claude.ai-Konto aktiviert sind, und Skills in Cowork- und Cloud-Sessions sagt, wie Sie wählen, welche Skills diese Sessions erhalten.
In jeder anderen Session auf Ihrer Maschine lädt Claude Code sie nur, nachdem Sie sie einmal in einem nicht-interaktiven Lauf heruntergeladen haben:
Aktivieren Sie die Skills für Ihr claude.ai-Konto
Aktivieren Sie jeden Skill, den Sie für Ihr claude.ai-Konto möchten, wie Skills in Cowork- und Cloud-Sessions beschreibt. Claude Code lädt nur die Skills herunter, die Sie aktiviert haben, und benötigt Ihre claude.ai-Anmeldung, um sie herunterzuladen.
Führen Sie Claude Code im nicht-interaktiven Modus mit aktivierter Synchronisierung aus
Claude Code lädt synchronisierte Skills nur, wenn Sie es im nicht-interaktiven Modus mit dem -p-Flag ausführen und CLAUDE_CODE_SYNC_SKILLS auf 1 setzen. Der Prompt, den Sie übergeben, beeinflusst den Download nicht.
CLAUDE_CODE_SYNC_SKILLS=1 claude -p "List the skills you have available"
Claude Code lädt die Skills in ~/.claude/skills/synced/ herunter, beantwortet den Prompt und beendet sich wie jeder andere nicht-interaktive Lauf. Die heruntergeladenen Skills bleiben nach dem Beenden auf der Festplatte, daher müssen Sie den Lauf nicht offen halten. Claude Code lädt Skills nur während eines Laufs mit gesetztem CLAUDE_CODE_SYNC_SKILLS herunter, daher führen Sie den Befehl erneut aus, nachdem Sie einen Skill auf claude.ai aktivieren oder ändern. Um zu ändern, wie lange der Lauf auf die Synchronisierung wartet, bevor er den Prompt beantwortet, setzen Sie CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS.
Bestätigen Sie, dass die Skills in einer lokalen Session geladen werden
Starten Sie eine interaktive Session, ohne CLAUDE_CODE_SYNC_SKILLS gesetzt, und führen Sie /skills aus. Das Menü listet die heruntergeladenen Skills unter claude.ai sync auf. Jede lokale Session, die Sie danach mit derselben claude.ai-Anmeldung starten, lädt sie auch aus ~/.claude/skills/synced/.
Wenn ein synchronisierter Skill-Name mit einem anderen Befehl übereinstimmt
Claude Code überspringt einen synchronisierten Skill, dessen Name mit einem anderen Befehl übereinstimmt, und dieser andere Befehl wird ausgeführt. Der andere Befehl kann ein integrierter Befehl, ein gebündelter Skill, ein Skill auf einer beliebigen lokalen Ebene, ein Plugin-Skill, eine Datei in .claude/commands/ oder ein MCP-Prompt sein. Claude Code reserviert auch die Namen seiner eigenen integrierten Befehle und gebündelten Skills, auch wenn sie in Ihrer Session nicht verfügbar sind, zum Beispiel nachdem Sie gebündelte Skills ausgeschaltet haben, daher überspringt es einen synchronisierten Skill mit einem dieser Namen auch.
Claude Code kennzeichnet synchronisierte Skills, damit Sie sehen können, woher sie kommen. Das /skills-Menü und /context gruppieren synchronisierte Skills unter claude.ai sync, und das /-Befehlsmenü kennzeichnet sie als von claude.ai kommend.
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, daher kann ein synchronisiertes Commit nicht neben einem lokalen commit geladen werden. Ein Name, der sich nur durch einen ähnlich aussehenden Buchstaben aus einem anderen Alphabet unterscheidet, zählt als ein anderer Name, und das claude.ai sync-Label ist, wie Sie die beiden unterscheiden.
Wie Claude Code die Frontmatter eines synchronisierten Skills handhabt
Claude Code wendet zwei Regeln auf die Frontmatter eines synchronisierten Skills an:
- Claude Code respektiert die Frontmatter in jeder Art von Session, daher geht eine
allowed-tools-Gewährung durch den normalen Berechtigungsfluss. - Claude Code bereinigt den Anzeigetext, den der Skill liefert, wie seine Beschreibung. Es entfernt Steuerzeichen, und in Text, der Claude erreicht, wie die Beschreibung, escaped es auch spitzklammern, damit der Text nicht Claude Codes interne Formatierung imitieren kann.
Wie Claude Code den Body eines synchronisierten Skills handhabt
Was Claude Code mit dem Body eines synchronisierten Skills tut, hängt davon ab, wo die Session läuft:
- In einer Cloud-Session behält der Body das Verhalten, das ein lokaler Skill hat, da die Session in einem isolierten Container läuft.
- In einer Cowork-Session auf Ihrem Desktop behält der Body das Verhalten eines lokalen Skills, außer dass Claude Code jede
!-Befehlszeile durch dendisableSkillShellExecution-Platzhalter ersetzt, wie es für jeden Skill tut, den Sie dort liefern. - In jeder anderen Session auf Ihrer Maschine führt Claude Code keine
!-Befehle aus, hängt die Dateien nicht an, die@-Referenzen benennen, wie es für einen lokalen Skill tut, und ersetzt nicht die${CLAUDE_PROJECT_DIR}- und${CLAUDE_SESSION_ID}-Platzhalter, daher erreichen@-Referenzen und beide Platzhalter Claude als Literaltext. Eine!-Befehlszeile erreicht Claude auch als Literaltext oder als dieser Platzhalter, wenndisableSkillShellExecutionaktiviert ist.
Bearbeiten Sie einen Skill während einer Session
Claude Code überwacht Skill-Verzeichnisse auf Dateiänderungen, außer im 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 in der aktuellen Session auf, ohne einen Neustart. Wenn Sie ein Top-Level-Skills-Verzeichnis erstellen, das beim Session-Start nicht vorhanden war, starten Sie Claude Code neu, damit es das neue Verzeichnis überwachen kann.
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.
Entfernen Sie einen Skill
Wie Sie einen Skill entfernen, hängt davon ab, woher er kommt:
- 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/skillsin der aktuellen Session; 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, nachdem Sie/reload-pluginsausführen oder neu starten; siehe Wenden Sie Plugin-Änderungen an, ohne neu zu starten. - Von claude.ai synchronisierter Skill: 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
disableBundledSkillsauftrue, um jeden gebündelten Skill außer/doctorauszuschalten, oder setzen Sie einen Skill auf"off"inskillOverrides, 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 eine Fähigkeit geladen ist, bleibt ihr 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
Über den Markdown-Inhalt hinaus können Sie das Verhalten von Fähigkeiten mithilfe von YAML-Frontmatter-Feldern zwischen ----Markierungen am Anfang Ihrer SKILL.md-Datei konfigurieren:
---
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 die Fähigkeit verwendet werden soll.
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.
Boolesche Felder akzeptieren yes, no, on, off, 1 und 0 in beliebiger Schreibweise, zusätzlich zu true und false. Vor v2.1.218 erkannte Claude Code nur true und false.
| Feld | Erforderlich | Beschreibung |
|---|---|---|
name |
Nein | Anzeigename, der in Fähigkeitsauflistungen 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 die Fähigkeit tut und wann sie verwendet werden soll. Claude verwendet dies, um zu entscheiden, wann die Fähigkeit angewendet werden soll. Wenn weggelassen, wird der erste Absatz des Markdown-Inhalts verwendet. Setzen Sie den wichtigsten Anwendungsfall zuerst: Der kombinierte description- und when_to_use-Text wird in der Fähigkeitsauflistung auf 1.536 Zeichen gekürzt, um die Kontextnutzung zu reduzieren. |
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 diese Fähigkeit automatisch lädt. Verwenden Sie für Workflows, die Sie manuell mit /name auslösen möchten. Verhindert auch, dass die Fähigkeit in Subagents vorgeladen wird. Ab v2.1.196 verhindert dies auch, dass die Fähigkeit ausgeführt wird, wenn eine geplante Aufgabe mit der Fähigkeit als Eingabeaufforderung 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. 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 | Aufwandsstufe, wenn diese Fähigkeit aktiv ist. Überschreibt die Sitzungsaufwandsstufe. Standard: erbt von Sitzung. 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 Subagents im Turn zu warten, der die Fähigkeit aufgerufen hat, anstatt es im Hintergrund auszuführen. Standard: true. Erfordert Claude Code v2.1.218 oder später. |
hooks |
Nein | Hooks, die Claude Code registriert, wenn die Fähigkeit aufgerufen wird, und die für den Rest der Sitzung weiterhin ausgeführt werden. Siehe Hooks in Fähigkeiten und Agenten für das Konfigurationsformat und die once-Option. |
paths |
Nein | Glob-Muster, die einschränken, wann diese Fähigkeit aktiviert wird. Akzeptiert eine durch Komma getrennte Zeichenkette oder eine YAML-Liste. Wenn gesetzt, lädt Claude die Fähigkeit automatisch nur, wenn mit Dateien arbeitet, die den Mustern entsprechen. Verwendet das gleiche Format wie pfadspezifische Regeln. |
shell |
Nein | Shell, die für !`command` und ```! Blöcke in dieser Fähigkeit 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 Amazon Bedrock, Google Cloud's Agent Platform und Microsoft Foundry-Sitzungen 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 eine persönliche Fähigkeit für Cowork- und Cloud-Sitzungen aktivieren, einschließlich Routinen, laden Sie sie auf claude.ai hoch, sodass die gleichen Regeln gelten.
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 Plugin-Fähigkeiten auch vom Frontmatter-Feld name. In einer persönlichen oder Projektfähigkeit setzt name nur das Anzeigelabel, das in Fähigkeitsauflistungen angezeigt wird, und der Befehl kommt immer noch vom Verzeichnisnamen. 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/ |
Verzeichnisname | .claude/skills/deploy-staging/SKILL.md → /deploy-staging |
Verschachteltes .claude/skills/-Verzeichnis, wenn der Name mit einer anderen Fähigkeit kollidiert |
Unterverzzeichnisspfad relativ zum Arbeitsverzeichnis, dann der Fähigkeitsverzeichnisname | apps/web/.claude/skills/deploy/SKILL.md → /apps/web:deploy |
Datei unter .claude/commands/ |
Dateiname ohne Erweiterung | .claude/commands/deploy.md → /deploy |
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 Pfadverhaltenregeln |
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. Eine synchronisierte Fähigkeit namens help oder feedback wird immer noch dort übersprungen, da Claude Code eine synchronisierte Fähigkeit überspringt, deren Name mit einem beliebigen integrierten Befehl übereinstimmt, unabhängig davon, ob dieser Befehl 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.
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. Ultracode ist keine separate Stufe und wird als xhigh gemeldet. 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.
Die ${CLAUDE_PROJECT_DIR}-Substitution erfordert Claude Code v2.1.196 oder später.
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-09-08-2000..2026-09-09-2258/reference/)
- For usage examples, see [examples.md](/anthropic/claude-code/history/docs/de/2026-09-08-2000..2026-09-09-2258/examples/)
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: Nur Sie können die Fähigkeit aufrufen. Verwenden Sie dies für Workflows mit Nebenwirkungen oder die Sie zeitlich kontrollieren möchten, wie/commit,/deployoder/send-slack-message. Sie möchten nicht, dass Claude bereitstellt, weil Ihr Code bereit aussieht. -
user-invocable: false: Nur Claude kann die Fähigkeit aufrufen. Verwenden Sie dies für Hintergrundwissen, das nicht als Befehl umsetzbar ist. Einelegacy-system-context-Fähigkeit erklärt, wie ein altes System funktioniert. Claude sollte dies kennen, wenn relevant, aber/legacy-system-contextist keine aussagekräftige Aktion für Benutzer.
Dieses Beispiel erstellt eine Deploy-Fähigkeit, die nur Sie auslösen können. Wenn Sie disable-model-invocation: true setzen, kann Claude die Fähigkeit 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 | Nein | Beschreibung nicht im Kontext, vollständige Fähigkeit wird beim Aufrufen durch Sie geladen |
user-invocable: false |
Nein | Ja | Beschreibung immer im Kontext, vollständige Fähigkeit wird beim Aufrufen geladen |
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.
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 eine Fähigkeit nach der ersten Antwort zu beeinflussen zu stoppen scheint, ist der Inhalt normalerweise immer noch vorhanden und das Modell wählt andere Tools oder Ansätze. Stärken Sie die description und Anweisungen der Fähigkeit, damit das Modell sie weiterhin bevorzugt, oder verwenden Sie Hooks, um Verhalten deterministisch zu erzwingen. Wenn die Fähigkeit groß ist oder Sie mehrere andere danach aufgerufen haben, rufen Sie sie nach der Komprimierung erneut auf, um den vollständigen Inhalt wiederherzustellen.
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 gatet dieses Feld nicht. Claude Code wendet die allowed-tools einer Projektfähigkeit an, wann immer Sie oder Claude die Fähigkeit aufrufen, einschließlich in einem -p-Lauf in einem Ordner, dem Sie nie vertraut haben. Eine Fähigkeit kann sich selbst breiten Tool-Zugriff gewähren, daher überprüfen Sie die allowed-tools von Fähigkeiten, die in ein Repository eingecheckt sind, bevor Sie Claude Code dort ausführen.
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.
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.
Sie können auch mehrere Fähigkeiten am Anfang einer Nachricht stapeln. Das Eingeben von /write-tests /fix-issue 123 lädt beide Fähigkeiten und übergibt den nachfolgenden Text 123 als $ARGUMENTS an jede von ihnen. Vor v2.1.199 wurde nur die erste Fähigkeit geladen und erhielt /fix-issue 123 als Literalargumenttext.
Claude Code expandiert die erste Fähigkeit plus bis zu fünf weitere, die danach gestapelt sind. Die Expansion stoppt beim ersten Token, das keine Inline-Benutzer-aufgerufene Fähigkeit ist, sodass eine Fähigkeit, die als verzweigter Subagent ausgeführt wird, wie /code-review, oder eine, deren Argumente selbst mit einem Schrägstrich-Befehl beginnen können, wie /loop, auch dort endet. Dieser Token und alles danach werden der Argumenttext für jede expandierte Fähigkeit. /code-review wird ab v2.1.218 als verzweigter Subagent ausgeführt; in früheren Versionen wurde es inline ausgeführt und gestapelt.
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.
Erweiterte Muster
Dynamischen Kontext injizieren
Die Syntax !`<command>` führt Shell-Befehle aus, bevor der Skill-Inhalt an Claude gesendet wird. Die Befehlsausgabe ersetzt den Platzhalter, sodass Claude tatsächliche Daten erhält, nicht den Befehl selbst. Claude Code führt diese Befehle auf Ihrem Computer nicht aus, wenn der Skill von Ihrem claude.ai-Konto synchronisiert wird.
Dieser Skill fasst einen Pull Request zusammen, indem er Live-PR-Daten mit der GitHub CLI abruft. Die Befehle !`gh pr diff` und andere 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 wird einmal über die ursprüngliche Datei ausgeführt. Die Befehlsausgabe wird als Klartext eingefügt und wird nicht erneut nach weiteren !`<command>`-Platzhaltern gescannt, sodass ein Befehl keinen Platzhalter für einen späteren Durchgang ausgeben kann.
Die Inline-Form wird nur erkannt, wenn ! am Anfang einer Zeile oder unmittelbar nach Leerzeichen erscheint. Wenn ! auf ein anderes Zeichen folgt, wie in KEY=!`cmd`, wird der Platzhalter als Literaltext belassen und der Befehl wird nicht ausgeführt.
Verwenden Sie für mehrzeilige Befehle einen eingezäunten Code-Block, der mit ```! statt der Inline-Form 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 Verzeichnisquellen zu deaktivieren, setzen Sie "disableSkillShellExecution": true in settings. Jeder Befehl wird durch [shell command execution disabled by policy] ersetzt, anstatt ausgeführt zu werden. Gebündelte und verwaltete Skills sind nicht betroffen. Diese Einstellung ist am nützlichsten in verwalteten Einstellungen, wo Benutzer sie nicht überschreiben können.
Claude Code führt diese Befehle auf Ihrem Computer niemals aus, wenn sie in Skills von Ihrem claude.ai-Konto synchronisiert werden, unabhängig von dieser Einstellung. Wie Claude Code den Text eines synchronisierten Skills verarbeitet sagt, was Claude anstelle des Befehls in jeder Art von Sitzung erhält.
Um tiefere Überlegungen anzufordern, wenn ein Skill ausgeführt wird, fügen Sie ultrathink irgendwo im Skill-Inhalt ein. Siehe Verwenden Sie ultrathink für einmalige tiefe Überlegungen.
Wie injizierte Befehle ausgeführt werden
Claude Code wählt das Tool, das die injizierte Befehle eines Skills ausführt, aus dem shell-Schlüssel in der Frontmatter des Skills und Ihrer Umgebung aus. Jede Kombination führt die Befehle durch das Bash-Tool oder das PowerShell-Tool aus, mit Ausnahme einer Kombination, die den Aufruf sofort fehlschlagen lässt:
shell: powershell, mit dem PowerShell-Tool aktiviert: Die Befehle werden durch das PowerShell-Tool ausgeführt.shell: bash, wenn bash nicht verfügbar ist: Der Aufruf schlägt fehl, bevor ein Befehl ausgeführt wird. Dies geschieht unter Windows ohne Git Bash. Claude Code zeigtSkill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found.- Jede andere Kombination: Die Befehle werden durch das Bash-Tool ausgeführt, wenn bash verfügbar ist. Wenn nicht, werden sie durch das PowerShell-Tool ausgeführt.
Beide Tools führen die Befehle auf die gleiche Weise aus wie Claudes eigene Shell-Befehle. Sie teilen sich das Arbeitsverzeichnis, das Timeout und die Ausgabeverarbeitung:
- Arbeitsverzeichnis: Claude Code führt jeden Befehl im aktuellen Arbeitsverzeichnis der Session-Shell aus. Dieses Verzeichnis wechselt, wenn Claude
cdausführt. Verwenden Sie${CLAUDE_SKILL_DIR}oder${CLAUDE_PROJECT_DIR}in Pfaden, die sich jedes Mal auf die gleiche Weise auflösen müssen. - stderr: Mit der Standard-
bash-Shell führt Claude Code stderr in stdout zusammen. Alles, was der Befehl in stderr schreibt, erscheint im eingefügten Text. - Timeout: Jeder Befehl wird unter dem Standard-2-Minuten-Timeout des Bash-Tools ausgeführt. Wenn das Bash-Tool einen Befehl mit Timeout in den Hintergrund verschiebt, wird der Skill trotzdem gerendert. Der eingefügte Text meldet die Verschiebung und nennt die Hintergrund-Task und die Datei, die die Ausgabe des Befehls sammelt. Wenn der Befehl einer ist, den das Bash-Tool niemals automatisch in den Hintergrund verschiebt, beendet Claude Code ihn beim Timeout. Dieser Fehler bricht den Aufruf ab.
- Ausgabegröße: Ausgabe, die die Inline-Obergrenze des Bash-Tools überschreitet, kommt als Dateipfad plus kurze Vorschau an, nicht als gekürzter Text. Ausgabegrenzen behandelt die Obergrenze und wie man jede Grenze anpasst.
Das PowerShell-Tool wendet das gleiche Timeout-, Backgrounding- und Output-Ceiling-Verhalten auf die Befehle an, die es ausführt. Siehe den Abschnitt PowerShell-Tool für seine Besonderheiten.
Wenn ein injizierter 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. Der Abbruch zeigt Shell command failed for pattern "...". Die Fehlermeldung enthält die Ausgabe des Befehls unter [stderr].
Mit der Standard-bash-Shell zählt jeder Exit-Code ungleich Null als Fehler. Eine Ausnahme gilt: Claude Code behandelt Exit-Code 1 von Such- und Vergleichsbefehlen als normales Ergebnis und fügt ihre Ausgabe ein. Exit-Codes von 2 oder höher schlagen auch für diese Befehle fehl.
Welche Befehle die Ausnahme erhalten, hängt von der Shell ab:
- Standard-
bash-Shell: Die Befehle, die unter Ausgabegrenzen aufgelistet sind shell: powershell, wenn das PowerShell-Tool aktiviert ist: Ein anderer Satz, dergrepundgit diffenthält, aber nichtfindoderdiff
Mit der Standard-bash-Shell fügen Sie || true an jeden anderen Befehl an, von dem Sie erwarten, dass er mit einem Exit-Code ungleich Null endet. Ein Überprüfungsskript, das 1 beendet, wenn es Probleme findet, ist ein Beispiel.
Injizierte Befehle fordern niemals Genehmigung an. Wenn die Berechtigungsprüfung eines Befehls etwas anderes als Zulassung zurückgibt, bricht Claude Code den Aufruf ab. Dies schließt eine Regel ein, die normalerweise fragen würde. Der Abbruch zeigt Shell command permission check failed for pattern "...".
Um zu verhindern, dass ein nicht übereinstimmender Befehl hier abbricht, genehmigen Sie ihn vorher mit allowed-tools. Eine übereinstimmende Ask- oder Deny-Regel bricht den Aufruf trotzdem ab, unabhängig von allowed-tools. Siehe Berechtigungen verwalten.
Skills in einem Subagenten ausführen
Fügen Sie context: fork zu Ihrer Frontmatter hinzu, wenn Sie möchten, dass ein Skill isoliert ausgeführt wird. Der Skill-Inhalt wird zum Prompt, der den Subagenten antreibt. Er hat keinen Zugriff auf Ihren Gesprächsverlauf.
Der verzweigte Subagent wird im Hintergrund ausgeführt: Sie arbeiten weiter, während er läuft, und sein Ergebnis kommt in Ihr Gespräch, wenn es abgeschlossen ist. Setzen Sie background: false in der Frontmatter, um stattdessen auf das Ergebnis in dem Zug zu warten, der den Skill aufgerufen hat. Vor v2.1.218 blockierten verzweigte Skills den Zug immer, bis sie fertig waren.
Claude Code wartet auch auf das Ergebnis, selbst wenn der Skill background: false nicht setzt, in Fällen wie diesen:
- Im nicht-interaktiven Modus mit dem
-p-Flag oder dem Agent SDK - Wenn Sie
CLAUDE_CODE_DISABLE_BACKGROUND_TASKSauf1setzen, was auch alle anderen Hintergrund-Task-Funktionen ausschaltet - Wenn Sie einen verzweigten Skill aufrufen, während ein früherer Aufruf desselben Skills noch läuft
- Wenn eine geplante Task mit dem Skill als Prompt ausgelöst wird
Ein hintergrund-verzweigter Skill wird auch mit dem engeren Tool-Set ausgeführt, das für Hintergrund-Subagenten gilt: Der Subagent des Skills ist ein regulärer Agent-Typ, daher gilt die Ausnahme für Subagenten, die das Gespräch verzweigen, nicht. Wenn die Schritte Ihres Skills von einem Tool außerhalb dieses Sets abhängen, setzen Sie background: false, um das vollständige Tool-Set beizubehalten.
Ein verzweigter Skill, der im Hintergrund läuft, wendet seine Änderungen außerhalb der Checkpoints Ihrer Session an, sodass /rewind sie nicht rückgängig macht; verwenden Sie git, um sie rückgängig zu machen.
context: fork macht nur Sinn für Skills mit expliziten Anweisungen. Wenn Ihr Skill Richtlinien wie „verwenden Sie diese API-Konventionen" ohne eine Task enthält, erhält der Subagent die Richtlinien, aber keinen umsetzbaren Prompt, und gibt ohne aussagekräftige Ausgabe zurück.
Skills und Subagenten arbeiten in zwei Richtungen zusammen:
| Ansatz | System-Prompt | Task | Lädt auch |
|---|---|---|---|
Skill mit context: fork |
Vom Agent-Typ | SKILL.md-Inhalt | CLAUDE.md, außer wenn der Agent Explore oder Plan ist |
Subagent mit skills-Feld |
Markdown-Text des Subagenten | Claudes Delegationsnachricht | Vorgeladene Skills + CLAUDE.md |
Mit context: fork schreiben Sie die Task in Ihren Skill und wählen einen Agent-Typ aus, um sie auszuführen. Die integrierten Explore- und Plan-Agenten überspringen CLAUDE.md und git status, um ihren Kontext klein zu halten, sodass ein verzweigter Skill mit agent: Explore nur den SKILL.md-Inhalt und den eigenen System-Prompt des Agenten sieht. Für das Gegenteil, bei dem Sie einen benutzerdefinierten Subagenten definieren, der Skills als Referenzmaterial verwendet, siehe Subagenten.
Beispiel: Research-Skill mit Explore-Agent
Dieser Skill führt Recherchen in einem verzweigten Explore-Agent aus. Der Skill-Inhalt wird zur Task, und der Agent bietet schreibgeschützte Tools, die für die Codebase-Exploration 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:
- Ein neuer isolierter Kontext wird erstellt
- Der Subagent erhält den Skill-Inhalt als seinen Prompt („Research $ARGUMENTS thoroughly...")
- Das
agent-Feld bestimmt die Ausführungsumgebung (Modell, Tools und Berechtigungen) - Der Subagent fasst seine Ergebnisse zusammen und gibt sie an Ihr Hauptgespräch zurück, wenn er fertig ist
Das agent-Feld gibt an, welche Subagenten-Konfiguration verwendet werden soll. Optionen sind integrierte Agenten (Explore, Plan, general-purpose) oder ein beliebiger benutzerdefinierter Subagent aus .claude/agents/. Wenn nicht angegeben, wird general-purpose verwendet.
Claudes Skill-Zugriff einschränken
Standardmäßig kann Claude jeden Skill aufrufen, der nicht disable-model-invocation: true gesetzt hat. Skills, die allowed-tools definieren, gewähren Claude Zugriff auf diese Tools ohne Genehmigung pro Verwendung während des Zugs, der den Skill aufruft; die Genehmigung wird gelöscht, wenn Sie Ihre nächste Nachricht senden. Ihre Berechtigungseinstellungen regeln immer noch das Baseline-Genehmigungsverhalten für alle anderen Tools. Einige integrierte Befehle sind auch über das Skill-Tool verfügbar, einschließlich /init und /security-review. Andere integrierte Befehle wie /compact sind nicht verfügbar.
Drei Möglichkeiten, um zu kontrollieren, welche Skills Claude aufrufen kann:
Alle Skills deaktivieren, indem Sie das Skill-Tool in /permissions ablehnen:
# Add to deny rules:
Skill
Spezifische Skills zulassen oder ablehnen mit Berechtigungsregeln:
# Allow only specific skills
Skill(commit)
Skill(review-pr *)
# Deny specific skills
Skill(deploy *)
Berechtigungssyntax: Skill(name) für exakte Übereinstimmung, Skill(name *) für Präfix-Übereinstimmung mit beliebigen Argumenten.
Einzelne Skills ausblenden, indem Sie disable-model-invocation: true zu ihrer Frontmatter hinzufügen. Dies entfernt den Skill vollständig aus Claudes Kontext.
Mit user-invocable: false können Sie den Skill nicht aufrufen, aber Claude kann. Um zu verhindern, dass Claude ihn über das Skill-Tool aufruft, setzen Sie disable-model-invocation: true.
Skill-Sichtbarkeit aus Einstellungen überschreiben
Die skillOverrides-Einstellung steuert die Skill-Sichtbarkeit aus Ihren Einstellungen anstelle der eigenen Frontmatter des Skills. Verwenden Sie sie für Skills, deren SKILL.md Sie nicht bearbeiten möchten, wie z. B. solche, die in ein gemeinsames Projekt-Repo eingecheckt sind. Das /skills-Menü schreibt es für Sie: Markieren Sie einen Skill und drücken Sie Space, um die Zustände zu durchlaufen, dann Esc, um in .claude/settings.local.json zu speichern.
Jeder Schlüssel ist ein Skill-Name und jeder Wert ist einer von vier Zuständen:
| Wert | Aufgelistet für Claude | Im /-Menü |
|---|---|---|
"on" |
Name und Beschreibung | Ja |
"name-only" |
Nur Name | Ja |
"user-invocable-only" |
Versteckt | Ja |
"off" |
Versteckt | Versteckt |
Das /skills-Menü kennzeichnet den "user-invocable-only"-Zustand als user-only.
Ab v2.1.199 versteckt "off" den Skill auch vor den Befehlslisten, die Remote Control-Clients und Agent SDK-Aufrufer erhalten, zusätzlich zum Terminal-/-Menü. Das Aufrufen eines versteckten Skills mit seinem vollständigen Namen gibt stattdessen den skillOverrides-Fehler zurück, anstatt 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 ganz aus:
{
"skillOverrides": {
"legacy-context": "name-only",
"deploy": "off"
}
}
Plugin-Skills sind nicht von skillOverrides betroffen. Verwalten Sie diese stattdessen über /plugin.
Ungenutzte Skills finden
Jeder Skill in der Skill-Auflistung trägt zu Ihrem Kontext bei jedem Zug bei, 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 möchten. In einer interaktiven Sitzung wird der Bericht in der Registerkarte Stats des /plugin-Managers geöffnet. Im nicht-interaktiven Modus mit -p gibt Claude Code ihn als Text aus.
Der Bericht behandelt die Skills in Ihrer Sitzung außer gebündelten Skills und Enterprise-Skills. Er kennzeichnet Skills in der Auflistung, die nie aufgerufen wurden, und sagt, wo man sie ausschalten kann. Von den Skills, bei denen er sagt, wo man sie ausschalten kann, beginnen Sie mit denen, die die höchsten Kontextkosten haben. Der Bericht listet auch Plugins auf, die Sie kürzlich nicht verwendet haben.
/skill-doctor erfordert Claude Code v2.1.252 oder später und ist nicht in Sitzungen verfügbar, die Feature-Flag-Abruf überspringen. Wenn Sie /skill-doctor über Remote Control von Ihrem Telefon oder Browser aus ausführen, antwortet Claude Code stattdessen Skill usage reports are not available on this connection.. Führen Sie /skill-doctor im Terminal auf dem Computer 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.
Evals mit skill-creator ausführen
Das skill-creator Plugin automatisiert die Vergleichsschleife in Claude Code. Installiere es vom offiziellen Marketplace:
/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-officialhinzu und versuche dann die Installation erneut.- Das Plugin wird nicht im Marketplace gefunden: Überprüfe den Plugin-Namen.
Wenn die Installationszusammenfassung Run /reload-plugins to activate. meldet, führe diesen Befehl aus, um die Skills des Plugins in der aktuellen Sitzung verfügbar zu machen. Bitte dann Claude, einen vorhandenen Skill zu evaluieren, zum Beispiel evaluate my summarize-changes skill with skill-creator. Das Plugin führt dich durch das Schreiben von Testfällen und führt die Schleife aus:
- Testfälle: speichert Prompts, Eingabedateien und erwartetes Verhalten in
evals/evals.jsonim 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:
- Überprüfen Sie, dass die Beschreibung Schlüsselwörter enthält, die Benutzer natürlicherweise sagen würden
- Stellen Sie sicher, dass der Skill in
What skills are available?angezeigt wird - Versuchen Sie, Ihre Anfrage umzuformulieren, um sie besser an die Beschreibung anzupassen
- Rufen Sie ihn direkt mit
/skill-nameauf, wenn der Skill vom Benutzer aufgerufen werden kann
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.
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:
- Machen Sie die Beschreibung spezifischer
- Fügen Sie
disable-model-invocation: truehinzu, wenn Sie nur manuelle Aufrufe möchten
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.
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