Ich ertappte mich dabei, wie ich zum vierten Mal in einer Woche denselben 200-Wörter-Prompt eintippte. „Schreib eine Commit-Message nach den Konventionen für die gestagten Änderungen, halte die erste Zeile unter 72 Zeichen, referenziere das Issue, falls die Branch einen Issue-Nummer enthält..." Jedes. Einzige. Mal. Das ist der Moment, in dem du aufhören und einen Slash-Befehl erstellen solltest. Also lass uns Slash-Befehle und Skills für Claude Code einrichten und das nie wieder eintippen.
Beide Funktionen tun im Wesentlichen dasselbe – Anweisungen verpacken, damit sie wiederverwendet werden können –, aber sie sind für unterschiedliche Zwecke gedacht. Slash-Befehle sind für Dinge, die du auslöst. Skills sind für Dinge, die Claude auslöst, wenn eine Aufgabe es erfordert. Versteh diesen Unterschied, und der Rest ist einfach.
Slash-Befehle: deine Abkürzungen
Ein Slash-Befehl ist ein gespeicherter Prompt, den du mit /name aufrufst. Du erstellst ihn, indem du eine Markdown-Datei in .claude/commands/ in deinem Projekt ablegst. Der Dateiname wird zum Befehl.
Lass uns diesen Commit-Message-Prompt ein für alle Mal erledigen. Erstelle .claude/commands/commit.md:
Schreibe eine Commit-Message nach den Konventionen für die aktuell gestagten Änderungen.
Regeln:
- Erste Zeile unter 72 Zeichen, imperativische Stimmung ("Add", nicht "Added").
- Typ-Präfix: feat, fix, refactor, docs, test oder chore.
- Wenn der Branch-Name eine Issue-Nummer enthält, referenziere sie im Body.
- Zeig mir die Nachricht. Führe git commit nicht selbst aus.
Führe zuerst `git diff --staged` aus, um zu sehen, was sich geändert hat.
Jetzt tippe ich in jeder Sitzung /commit und Claude erledigt alles. Vier Zeichen statt zweihundert Wörter. Die Datei ist der Befehl – alles darin wird als mein Prompt gesendet, wenn ich ihn aufrufe.
Argumente übergeben
Befehle werden nützlicher, wenn sie Eingaben akzeptieren. Verwende $ARGUMENTS als Platzhalter. Hier ist .claude/commands/explain.md:
Erkläre, wie $ARGUMENTS in dieser Codebasis funktioniert.
Finde heraus, wo es definiert ist, verfolge, wie es verwendet wird, und gib
mir eine kurze Zusammenfassung in einfacher Sprache. Verwende einen Subagenten
für die Suche, damit unser Gespräch nicht mit Datei-Dumps gefüllt wird.
Dann platziert /explain den Authentifizierungsflow „den Authentifizierungsflow" an dieser Stelle. Ein Befehl, unendlich viele Verwendungen. Ich habe jetzt ein Dutzend davon – /test, /review, /changelog –, und sie haben still und heimlich den größten Teil der Routinearbeit aus meinem Alltag entfernt.
Skills: Anweisungen, die Claude selbst abruft
Slash-Befehle sind großartig, wenn du weißt, was du willst. Aber manchmal möchtest du, dass Claude Spezialwissen automatisch anwendet, mitten in einer Aufgabe, ohne dass du dir merken musst, etwas aufzurufen. Das ist eine Skill.
Eine Skill ist ein Ordner mit einer SKILL.md-Datei. Der Anfang dieser Datei beschreibt, wann die Skill zutrifft. Claude behält diese Beschreibung im Kopf, und wenn eine Aufgabe passt, lädt er die vollständigen Anweisungen selbstständig. Du tippst keinen Befehl. Es passiert einfach.
Angenommen, dein Team hat eine strenge Methode zum Schreiben von Datenbank-Migrationen. Erstelle .claude/skills/migrations/SKILL.md:
---
name: migrations
description: Wie Datenbank-Migrationen in diesem Projekt geschrieben werden.
Verwenden, wenn eine Migrationsdatei erstellt, bearbeitet oder überprüft wird.
---
Migrationen liegen in db/migrations, benannt mit einem UTC-Zeitstempel-Präfix.
Jede Migration muss:
- Umkehrbar sein – sowohl up als auch down enthalten.
- Eine Spalte nie in derselben Migration löschen, in der das Schreiben dorthin aufgehört wird.
Auf zwei Deploys aufteilen.
- Schema-Änderungen in einer Transaktion einschließen.
Lies vor dem Schreiben die drei aktuellsten Migrationen, um den Stil zu übernehmen.
Wenn ich Claude jetzt bitte, „eine Migration für die neue Spalte archived_at hinzuzufügen", stellt er fest, dass die Aufgabe zur Beschreibung der Skill passt, lädt diese Regeln und befolgt sie – ohne dass ich das Wort „Skill" ausspreche. Das ist die Magie davon. Das Wissen erscheint genau dann, wenn es relevant ist, und bleibt sonst aus dem Weg.
Was soll ich bauen?
Hier ist die einfache Regel, die ich verwende.
Baue einen Slash-Befehl, wenn du entscheidest, ihn auszuführen. Commit-Messages, Changelogs erstellen, eine bestimmte Überprüfung starten – das sind bewusste Handlungen. Du rufst sie auf.
Baue eine Skill, wenn Claude entscheiden soll. Coding-Konventionen, Domänenregeln, Formatierungsstandards – alles, was automatisch angewendet werden soll, wenn eine passende Aufgabe auftaucht. Du möchtest nicht jedes Mal daran denken müssen, /migrations einzutippen, wenn du die Datenbank anfasst. Du möchtest, dass die Regeln einfach da sind.
Eine gute Faustregel: Wenn der Satz mit „immer wenn Claude X macht, sollte er..." beginnt – das ist eine Skill. Wenn er mit „manchmal möchte ich..." beginnt – das ist ein Befehl.
Die Beschreibung ist der tragende Teil
Für Skills ist die description-Zeile besonders entscheidend. So entscheidet Claude, ob die Skill zutrifft. Vage Beschreibung, Skill wird nie ausgelöst. Sei konkret beim Auslöser: „Verwenden, wenn eine Migrationsdatei erstellt, bearbeitet oder überprüft wird" sagt Claude genau, wann er sie aktivieren soll. „Datenbankzeug" reicht nicht.
Es ist dieselbe Energie wie bei einer guten Werkzeugbeschreibung. Du schreibst für einen Agenten, der im Moment entscheiden muss, ob das relevant ist. Gib ihm ein klares Ja oder Nein.
Fang mit dem an, was dich am meisten nervt
Setz dich nicht hin und baue zwanzig auf einmal. Du wirst falsch raten, was du wirklich brauchst. Warte stattdessen, bis du die Reibung spürst – dieses vierte Eintippen, diese Regel, die du immer wieder erklärst –, und baue genau diese. Genau dann. Es dauert zwei Minuten, und der Gewinn ist sofort spürbar.
Meine gesamte Sammlung wuchs so, eine Unannehmlichkeit nach der anderen. Der Commit-Befehl entstand aus dem Wiedereintippen von Commit-Prompts. Die Migrations-Skill entstand daraus, zweimal denselben Migrationsfehler gemacht zu haben. Jeder löste eine echte, spezifische Reizung, die ich benennen konnte.
Also hier ist deine Hausaufgabe. Wenn du dich das nächste Mal dabei erwischst, einen Prompt einzutippen, den du schon einmal eingetippt hast, hör auf. Öffne .claude/commands/, erstelle eine Datei, füge den Prompt ein. Du hast dir gerade jede zukünftige Kopie dieser zwei Minuten zurückgeholt. Mach das zehnmal, und dein Claude Code-Setup hört auf, generisch zu wirken, und fängt an, sich wie deins anzufühlen.
