Własne slash commands w Claude Code
Własne komendy to zwykłe pliki .md:
- Projektowe:
.claude/commands/- współdzielone przez git. - Użytkownika:
~/.claude/commands/- dostępne we wszystkich projektach.
Nazwa pliku staje się nazwą komendy (deploy.md → /deploy). Podkatalogi tworzą namespacing.
Frontmatter
Dział zatytułowany „Frontmatter”---description: Krótki opis (pokazywany w /help)argument-hint: [message]allowed-tools: Bash(git add:*), Bash(git commit:*)model: haikudisable-model-invocation: false---Treść promptu. $ARGUMENTS = wszystko po nazwie; $1, $2 = pozycyjne.Wstaw plik przez @ścieżka; uruchom bash i wstaw wynik przez !`komenda`.$ARGUMENTS- cały tekst.$1,$2i kolejne - argumenty pozycyjne.!`komenda`- wykona bash i wstawi wynik (wymagaallowed-tools).@ścieżka- wstawia zawartość pliku.disable-model-invocation: true- tylko Ty możesz uruchomić komendę. Warto dla komend z efektami ubocznymi, jak/commitczy/deploy.
Przykład 1: /commit
Dział zatytułowany „Przykład 1: /commit”Plik .claude/commands/commit.md:
---description: Utwórz git commit wg Conventional Commitsallowed-tools: Bash(git add:*), Bash(git commit:*), Bash(git status:*), Bash(git diff:*)argument-hint: [message]model: haiku---# Kontekst- Status: !`git status`- Diff (staged): !`git diff --cached`
Utwórz commit wg Conventional Commits. Jeśli podano $ARGUMENTS, użyj jako wiadomości.Przykład 2: /fix-issue
Dział zatytułowany „Przykład 2: /fix-issue”---description: Napraw issue z GitHubargument-hint: <issue-number> [priority]allowed-tools: Bash(gh issue:*), Read, Edit---Napraw issue #$1 z priorytetem $2. Najpierw pobierz szczegóły przez `gh issue view $1`,przeczytaj CONTRIBUTING.md, potem zaproponuj plan i wprowadź poprawkę.Przykład 3: /explain-diff
Dział zatytułowany „Przykład 3: /explain-diff”---description: Wyjaśnij bieżący git diffallowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git log:*)---# Kontekst- Status: !`git status`- Diff: !`git diff HEAD`
Wyjaśnij po polsku, co się zmieniło i dlaczego.Przykład 4: /generate-tests
Dział zatytułowany „Przykład 4: /generate-tests”---description: Wygeneruj testy dla wskazanego plikuargument-hint: [ścieżka]allowed-tools: Read, Write, Bash---Wygeneruj testy jednostkowe dla @$ARGUMENTS. Wykryj framework,dopasuj konwencje repo, uruchom testy.Przykład 5: /review-pr
Dział zatytułowany „Przykład 5: /review-pr”---description: Przegląd PR pod kątem jakościallowed-tools: Read, Grep, Glob, Bash(git diff:*)model: opus---Przejrzyj zmiany w PR #$1: poprawność, bezpieczeństwo, wydajność, pokrycie testami.Ćwiczenie: 10 minut
Dział zatytułowany „Ćwiczenie: 10 minut”- Utwórz plik
~/.claude/commands/ship.md. - Wpisz w nim treść: “Przejrzyj bieżący diff, uruchom testy, jeśli przechodzą - zrób commit”.
- Wywołaj
/shipw dowolnym projekcie.
Zaliczenie: komenda /ship pojawia się na liście po wpisaniu / i uruchamia się. Masz pierwszy własny skrót do powtarzalnej pracy.
Jeśli nic nie zgrzyta i zostaje czas: dopisz do niej frontmatter z description i allowed-tools, potem porównaj, jak wygląda w /help przed i po.
Teraz wiesz
Dział zatytułowany „Teraz wiesz”- Własna komenda to plik Markdown, a jego nazwa to nazwa komendy.
- Frontmatter steruje opisem, narzędziami, modelem i tym, czy Claude może ją wywołać sam.
- Do promptu wstawisz argumenty, zawartość pliku i wynik komendy shell.
Następny krok: CLAUDE.md i pamięć - plik, w którym zapisujesz reguły projektu raz, zamiast powtarzać je w każdej rozmowie.
Częste pytania
Gdzie zapisać własną komendę?
W katalogu .claude/commands/ wewnątrz projektu, jeśli ma być współdzielona przez repozytorium, albo w ~/.claude/commands/, jeśli ma działać we wszystkich projektach. Nazwa pliku staje się nazwą komendy.
Jak przekazać komendzie argumenty?
Zmienna $ARGUMENTS wstawia cały tekst po nazwie komendy, a $1, $2 i kolejne wstawiają argumenty pozycyjne. Podpowiedź dla użytkownika ustawiasz polem argument-hint we frontmatterze.
Czy Claude może sam wywołać moją komendę?
Domyślnie tak. Jeśli komenda ma efekty uboczne, na przykład commituje albo wdraża, ustaw disable-model-invocation na true - wtedy uruchomisz ją tylko Ty.
made with ❤️ by aitomate.pl - Łukasz Podgórski