Przejdź do głównej zawartości

Tworzenie poleceń niestandardowych

Każdy zespół ma tego jednego starszego programistę, który zawsze zadaje właściwe pytania podczas przeglądu kodu. Sprawdza przypadki brzegowe obsługi błędów, weryfikuje, że zapytania do bazy danych używają indeksów, i wychwytuje zapytanie N+1, zanim trafi na produkcję. Polecenia niestandardowe pozwalają zapisać osąd tego programisty w wielokrotnego użytku polecenie /review, które może uruchomić każdy członek zespołu.

  • Jak tworzyć niestandardowe polecenia slash — od prostych szablonów promptów po pełne przepływy pracy agentów
  • Wzorce konfiguracji subagentów do przeglądu kodu, audytu bezpieczeństwa i testowania
  • Techniki dzielenia się poleceniami w zespole przez kontrolę wersji
  • Strategie budowania biblioteki poleceń specyficznych dla domeny

Polecenia niestandardowe w Claude Code to pliki markdown, które znajdują się w określonych katalogach. Gdy wpiszesz / w REPL, pojawiają się obok poleceń wbudowanych.

Polecenia to pliki .md w tych lokalizacjach:

LokalizacjaZakresDostępne jako
.claude/commands/review.mdProjekt, współdzielone z zespołem/review
~/.claude/commands/standup.mdOsobiste, wszystkie projekty/standup

Nazwa pliku staje się nazwą polecenia — bez prefiksu project: ani user:. Podkatalogi tworzą przestrzeń nazw w nazwie polecenia za pomocą dwukropka: .claude/commands/test/integration.md wywołuje się jako /test:integration, a nie samo /integration.

Utwórz .claude/commands/review.md:

Przejrzyj zmiany w aktualnym git diff. Dla każdego pliku:
1. Sprawdź obsługę błędów: Czy wszystkie operacje async są opakowane w try/catch? Czy odpowiedzi błędów zawierają znaczące komunikaty?
2. Sprawdź wydajność: Czy są zapytania N+1? Niepotrzebne re-renderowania? Brakujące indeksy dla nowych zapytań?
3. Sprawdź bezpieczeństwo: Czy dane wejściowe użytkownika są walidowane? Czy zapytania SQL są sparametryzowane? Czy sekrety są prawidłowo obsługiwane?
4. Sprawdź testy: Czy zmiany mają odpowiednie pokrycie testami? Czy przypadki brzegowe są przetestowane?
Format wyjścia:
- Zacznij od podsumowania jednoliniowego: PASS, NEEDS CHANGES lub BLOCKING
- Wypisz ustalenia pogrupowane według pliku
- Dla każdego ustalenia wyjaśnij DLACZEGO to ważne i zasugeruj konkretną poprawkę

Teraz każdy członek zespołu może uruchomić /review i otrzymać spójny, dokładny przegląd kodu.

Polecenia mogą zawierać $ARGUMENTS, aby przyjmować dane wejściowe podczas wywoływania:

.claude/commands/explain.md
Wyjaśnij następujący kod lub koncept w kontekście tego projektu: $ARGUMENTS
Skup się na:
- Co robi i dlaczego istnieje
- Jak łączy się z otaczającym kodem
- Wszelkich nieoczywistych decyzjach projektowych
- Potencjalnych pułapkach dla przyszłych maintainerów

Użycie: /explain logika ponownego połączenia WebSocket w src/realtime/

Subagenty to wyspecjalizowane instancje Claude Code z własnym oknem kontekstu, narzędziami i instrukcjami. Są idealne do zadań wymagających skoncentrowanej analizy bez zanieczyszczania kontekstu głównej sesji.

Utwórz .claude/agents/reviewer.md:

---
name: reviewer
description: "Ekspertowy recenzent kodu. Wyzwala się automatycznie po zmianach w kodzie lub gdy wymagany jest przegląd."
tools:
- Read
- Grep
- Glob
- Bash
model: sonnet
---
Jesteś starszym recenzentem kodu z ekspertyzą w TypeScript i Node.js.
Podczas przeglądania kodu:
1. Najpierw przeczytaj git diff, aby zrozumieć zakres zmian
2. Sprawdź każdy zmodyfikowany plik pod kątem:
- Problemów z bezpieczeństwem typów (typy any, brakujące sprawdzenia null)
- Luk w obsłudze błędów
- Problemów wydajnościowych (niepotrzebne iteracje, brakująca memoizacja)
- Pokrycia testami
3. Bądź konkretny: odwołuj się do dokładnych ścieżek plików i zakresów linii
4. Sugeruj konkretne poprawki, nie niejasne ulepszenia
5. Doceniaj dobre wzorce, gdy je widzisz
Wyprodukuj strukturalizowany przegląd z werdyktem APPROVE, REQUEST_CHANGES lub COMMENT.

To są pola, które ustawiasz w YAML frontmatter pliku subagenta. Wymagane są tylko name i description; prompt systemowy to treść markdown pliku.

PoleWymaganeOpis
nameTakUnikalny identyfikator z małych liter i myślników
descriptionTakKiedy agent powinien być wyzwalany (Claude czyta to, aby zdecydować)
toolsNieLista dozwolonych narzędzi, których agent może używać. Domyślnie dziedziczy wszystkie narzędzia
disallowedToolsNieNarzędzia do jawnego zablokowania, usuwane z listy dziedziczonej lub dozwolonej
modelNiesonnet, opus, haiku, fable lub inherit (domyślnie inherit)
permissionModeNiedefault, acceptEdits, dontAsk, bypassPermissions lub plan
skillsNieSkille do wstępnego załadowania do kontekstu agenta przy starcie
hooksNieHooki cyklu życia ograniczone do tego subagenta
memoryNieZakres trwałej pamięci: user, project lub local

Pola prompt i maxTurns nie są kluczami frontmatter pliku — istnieją tylko w inline’owej formie JSON --agents pokazanej poniżej, gdzie prompt niesie prompt systemowy (ponieważ nie ma tam treści markdown).

Subagenty wyzwalają się na dwa sposoby:

  1. Automatycznie: Claude czyta pole description i decyduje, kiedy subagent byłby pomocny. Dobre opisy poprawiają automatyczne wyzwalanie.
  2. Jawnie: Poproś Claude, aby „uruchomił agenta reviewer” lub „użył test-writer do dodania testów dla auth.ts”.

Dla tymczasowych lub eksperymentalnych agentów zdefiniuj je w linii poleceń:

Okno terminala
claude --agents '{
"performance": {
"description": "Analyzes code for performance bottlenecks",
"prompt": "You are a performance engineer. Profile and analyze code for bottlenecks. Focus on algorithmic complexity, memory allocation, and I/O patterns.",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
}
}'
.claude/
commands/
review.md # /review -- Ogólny przegląd kodu
security-audit.md # /security-audit -- Przegląd skupiony na bezpieczeństwie
explain.md # /explain -- Wyjaśnienie kodu z kontekstem
refactor.md # /refactor -- Przepływ pracy refaktoryzacji z przewodnikiem
test/
unit.md # /test:unit -- Generuj testy jednostkowe
integration.md # /test:integration -- Generuj testy integracyjne
e2e.md # /test:e2e -- Generuj testy end-to-end
deploy/
checklist.md # /deploy:checklist -- Weryfikacja przed wdrożeniem
rollback.md # /deploy:rollback -- Asystent wycofania
agents/
reviewer.md # Subagent przeglądu kodu
test-writer.md # Subagent generowania testów
debugger.md # Specjalista od debugowania

Podkatalog staje się prefiksem w przestrzeni nazw oddzielonym dwukropkiem, więc commands/test/unit.md wywołuje się jako /test:unit. Równoważny układ ze skillami umieszcza każdy przepływ pracy we własnym katalogu — .claude/skills/test-unit/SKILL.md — co daje pliki pomocnicze i automatyczne wywoływanie.

Ponieważ .claude/commands/ i .claude/agents/ to zwykłe pliki w twoim repozytorium, są automatycznie współdzielone, gdy je commitujesz:

Okno terminala
git add .claude/commands/ .claude/agents/
git commit -m "Add team review and test-writing commands"

Nowi członkowie zespołu otrzymują całą bibliotekę poleceń, gdy klonują repo.

Subagent nie wyzwala się automatycznie: Popraw pole description. Claude potrzebuje jasnych wskazówek, kiedy używać każdego agenta. Dodaj frazy jak „Use proactively after code changes” lub „Triggers when testing is discussed”.

Polecenie jest za długie i zostaje obcięte: Claude Code ładuje pełny plik polecenia do kontekstu. Bardzo długie polecenia (więcej niż 500 linii) mogą wyprzeć inny ważny kontekst. Utrzymuj polecenia skoncentrowane i deleguj złożoną logikę do subagentów.

Agent dziedziczy zbyt wiele narzędzi: Domyślnie subagenty dziedziczą wszystkie narzędzia z sesji nadrzędnej. Jeśli twój agent nie powinien modyfikować plików, jawnie ogranicz jego narzędzia do ["Read", "Grep", "Glob", "Bash"].

Polecenia zespołowe kolidują z poleceniami osobistymi: Polecenia wywołuje się samą nazwą (/review), więc polecenie projektowe i polecenie osobiste o tej samej nazwie kolidują ze sobą. Wygrywa zakres o wyższym priorytecie: polecenie projektowe w .claude/commands/ nadpisuje osobiste w ~/.claude/commands/. Zwróć uwagę, że skille i polecenia dzielą tę samą przestrzeń nazw — jeśli skill i polecenie mają tę samą nazwę, pierwszeństwo ma skill, więc unikaj ponownego użycia nazwy skilla dla polecenia. Ta sama zasada pierwszeństwa projektu nad użytkownikiem dotyczy subagentów zdefiniowanych zarówno w .claude/agents/, jak i w ~/.claude/agents/.

  • Hooks i automatyzacja — Połącz hooks z poleceniami dla w pełni zautomatyzowanych przepływów pracy
  • System pamięci — Spraw, aby twoje polecenia były świadome kontekstu dzięki pamięci projektu
  • Inżynieria promptów — Pisz lepsze prompty wewnątrz swoich niestandardowych poleceń