PreToolUse
Uruchamia się przed wykonaniem jakiegokolwiek narzędzia przez Claude’a. Idealne do walidacji, kontroli bezpieczeństwa lub przygotowania środowiska.
Automatyzacja to miejsce, gdzie Claude Code przekształca się z pomocnego asystenta w multiplikator siły. Ta lekcja pokazuje, jak tworzyć samoobsługowe przepływy pracy, automatyzować powtarzalne zadania i budować inteligentne pipeline’y, które obsługują złożone operacje przy minimalnej interwencji człowieka.
Scenariusz: Twój zespół utrzymuje 50 mikrousług. Aktualizacja bezpieczeństwa wymaga zmiany middleware autentykacji we wszystkich usługach, aktualizacji testów i tworzenia pull requestów. Robienie tego ręcznie zajęłoby dni. Z automatyzacją Claude Code to jedno popołudnie.
Możliwości automatyzacji Claude Code wykraczają daleko poza proste skrypty. Może organizować złożone, wieloetapowe operacje w całej bazie kodu, obsługiwać logikę warunkową, a nawet samodzielnie korygować błędy.
Hooki są fundamentem automatyzacji Claude Code. To polecenia powłoki, które wykonują się automatycznie w określonych punktach cyklu życia Claude’a, przekształcając sugestie w wymuszane wzorce.
Claude Code udostępnia kilka punktów zaczepienia:
PreToolUse
Uruchamia się przed wykonaniem jakiegokolwiek narzędzia przez Claude’a. Idealne do walidacji, kontroli bezpieczeństwa lub przygotowania środowiska.
PostToolUse
Wykonuje się po pomyślnym zakończeniu narzędzia. Idealne do formatowania, testowania lub operacji czyszczenia.
Notification
Wyzwala się, gdy Claude potrzebuje twojej uwagi. Dostosuj alerty dla różnych platform lub poziomów pilności.
Stop
Uruchamia się, gdy Claude kończy odpowiadanie. Świetne do końcowych kontroli, podsumowań lub wyzwalania kolejnych akcji.
Stwórzmy hook, który automatycznie formatuje kod po każdej edycji:
Utwórz konfigurację hooków
{ "hooks": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "prettier --write \"$CLAUDE_FILE_PATHS\"" } ] } ]}
Dodaj formatowanie specyficzne dla języka
{ "matcher": "Edit", "hooks": [ { "type": "command", "command": "if [[ \"$CLAUDE_FILE_PATHS\" =~ \\.py$ ]]; then black \"$CLAUDE_FILE_PATHS\"; fi" }, { "type": "command", "command": "if [[ \"$CLAUDE_FILE_PATHS\" =~ \\.go$ ]]; then gofmt -w \"$CLAUDE_FILE_PATHS\"; fi" } ]}
Przetestuj hook
> Utwórz nową funkcję Python do obliczania liczb Fibonacciego# Claude tworzy plik, następnie Black automatycznie go formatuje
Hooki walidacyjne: Zapobiegaj niebezpiecznym operacjom
{ "matcher": "Edit", "hooks": [ { "type": "command", "command": "if [[ \"$CLAUDE_FILE_PATHS\" =~ production|secret ]]; then echo 'BLOKADA: Nie można edytować wrażliwych plików' && exit 1; fi" } ]}
Hooki testowe: Uruchamiaj testy po zmianach
{ "matcher": "Edit", "hooks": [ { "type": "command", "command": "if [[ \"$CLAUDE_FILE_PATHS\" =~ \\.spec\\.|test\\. ]]; then npm test -- \"$CLAUDE_FILE_PATHS\"; fi" } ]}
Hooki compliance: Wymuszanie standardów
{ "matcher": "Edit", "hooks": [ { "type": "command", "command": "/path/to/security-scanner.sh \"$CLAUDE_FILE_PATHS\" || (echo 'Kontrola bezpieczeństwa nieudana' && exit 1)" } ]}
Tryb headless (claude -p
) umożliwia programowe użycie Claude Code w skryptach, pipeline’ach CI/CD i zautomatyzowanych przepływach pracy.
# Proste jednorazowe zadanieclaude -p "Zaktualizuj wszystkie nagłówki praw autorskich na 2025"
# Z określonymi dozwolonymi narzędziamiclaude -p "Napraw wszystkie błędy ESLint" --allowedTools Edit,Bash
# Wyjście JSON do parsowaniaclaude -p "Wylistuj wszystkie komentarze TODO" --output-format json
Wzorzec przetwarzania wsadowego: Obsługa wielu plików lub zadań
#!/bin/bash# Wygeneruj listę komponentów do migracjiclaude -p "Wylistuj wszystkie komponenty klasowe wymagające konwersji na hooki" \ --output-format json > components.json
# Przetwórz każdy komponentwhile read -r file; do claude -p "Konwertuj $file na użycie React hooks" \ --allowedTools Edit \ --max-turns 10done < <(jq -r '.files[]' components.json)
# Zweryfikuj migracjeclaude -p "Uruchom testy dla wszystkich zmigrowanych komponentów"
Integracja pipeline: Przekazuj wynik Claude’a do innych narzędzi
# Wygeneruj dokumentację API i przekaż do generatora strony statycznejclaude -p "Wygeneruj specyfikację OpenAPI z naszych tras FastAPI" --json | \ npx swagger-to-markdown | \ hugo new content/api/reference.md
# Przetwarzaj wiele zadań równolegleTASKS=( "service-auth:Zaktualizuj autentykację na JWT" "service-user:Dodaj rate limiting do endpointów API" "service-payment:Zaimplementuj logikę ponawiania webhook")
for task in "${TASKS[@]}"; do IFS=':' read -r service description <<< "$task" ( cd "../$service" claude -p "$description" \ --allowedTools Edit,Write,Bash \ --max-retries 3 ) &done
wait # Czekaj na wszystkie zadania równoległe
# Kontynuuj tylko jeśli warunki są spełnioneif claude -p "Czy są jakieś nieprzechodzące testy?" --json | jq -e '.failing_tests > 0'; then claude -p "Napraw nieprzechodzące testy" --allowedTools Edit,Bash
if claude -p "Czy testy przechodzą teraz?" --json | jq -e '.all_passing'; then git add -A git commit -m "fix: rozwiązane nieprzechodzące testy (automatycznie)" fifi
Twórz wzorce automatyzacji wielokrotnego użytku z niestandardowymi slash commands:
Migruj schemat bazy danych z wersji $ARGUMENTS. Wykonaj te kroki:
1. Utwórz nowy plik migracji z timestamp2. Przeanalizuj różnice między bieżącym a docelowym schematem3. Wygeneruj SQL migracji do przodu4. Wygeneruj SQL rollback5. Utwórz test migracji6. Zaktualizuj dokumentację migracji
Upewnij się:- Kompatybilność z wdrożeniem zero downtime- Zachowanie integralności danych- Optymalizacja wydajności dla dużych tabel
Użycie: /migrate-database v2.3.0
Zbuduj bibliotekę poleceń automatyzacji:
.claude/commands/├── security/│ ├── audit.md # Workflow audytu bezpieczeństwa│ ├── update-deps.md # Aktualizacje zależności│ └── rotate-keys.md # Proces rotacji kluczy├── deployment/│ ├── release.md # Automatyzacja wydań│ ├── rollback.md # Procedury rollback│ └── hotfix.md # Workflow nagłych poprawek└── maintenance/ ├── cleanup.md # Zadania czyszczenia kodu ├── optimize.md # Optymalizacja wydajności └── refactor.md # Wzorce refaktoryzacji
Automatyczne przeglądy PR
name: Claude Code Reviewon: pull_request: types: [opened, synchronize]
jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: anthropics/claude-code-action@v1 with: api-key: ${{ secrets.ANTHROPIC_API_KEY }} prompt: | Przejrzyj ten PR pod kątem: - Luk bezpieczeństwa - Problemów wydajności - Brakujących przypadków brzegowych - Problemów jakości kodu
Komentuj tylko znaczące problemy.
name: Auto-fix Issueson: issues: types: [labeled]
jobs: auto-fix: if: github.event.label.name == 'auto-fix' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Create fix branch run: | git checkout -b fix/issue-${{ github.event.issue.number }}
- name: Claude fix run: | claude -p "Napraw problem: ${{ github.event.issue.title }}
Opis: ${{ github.event.issue.body }}
Utwórz kompletną poprawkę z testami" \ --allowedTools Edit,Write,Bash \ --dangerously-skip-permissions
- name: Create PR uses: peter-evans/create-pull-request@v5 with: title: "fix: ${{ github.event.issue.title }}" body: "Naprawia #${{ github.event.issue.number }}"
Wykorzystaj wiele instancji Claude’a do złożonych przepływów pracy:
#!/bin/bash# System równoległego przeglądu kodu
review_branch() { local branch=$1 local reviewer_focus=$2
git worktree add "../review-$branch" "$branch" cd "../review-$branch"
claude -p "Przejrzyj tę gałąź skupiając się na: $reviewer_focus Dostarcz szczegółową opinię i sugestie" \ --output-format json > "review-$reviewer_focus.json"}
# Uruchom specjalistyczne przeglądy równoleglereview_branch "feature/auth" "bezpieczeństwo" &review_branch "feature/auth" "wydajność" &review_branch "feature/auth" "pokrycie testami" &
wait
# Agreguj przeglądyclaude -p "Podsumuj te przeglądy kodu i utwórz ujednolicony raport" \ --attach review-*.json
Skonfiguruj skrypt automatyzacji
#!/bin/bash# Sprawdź przestarzałe zależnościOUTDATED=$(npm outdated --json)
if [ -n "$OUTDATED" ]; then # Utwórz gałąź aktualizacji git checkout -b chore/dependency-updates-$(date +%Y%m%d)
# Aktualizuj zależności inteligentnie claude -p "Zaktualizuj zależności NPM na podstawie tej listy przestarzałych: $OUTDATED
Dla każdej aktualizacji: 1. Sprawdź breaking changes 2. Zaktualizuj kod jeśli potrzeba 3. Uruchom testy 4. Zaktualizuj dokumentację" \ --allowedTools Edit,Bash
# Jeśli sukces, utwórz PR if npm test; then gh pr create --title "chore: aktualizacja zależności" \ --body "Automatyczne aktualizacje zależności z niezbędnymi zmianami w kodzie" fifi
Zaplanuj przez cron lub CI
on: schedule: - cron: '0 0 * * 1' # Tygodniowo w poniedziałek
# Refaktoryzacja autentykacji w 100+ plikachclaude -p "Utwórz plan refaktoryzacji migracji z cookies na tokeny JWT" \ --output-format json > refactor-plan.json
# Wykonaj plan ze śledzeniem postęputotal=$(jq '.steps | length' refactor-plan.json)current=0
jq -r '.steps[] | @json' refactor-plan.json | while read -r step; do current=$((current + 1)) echo "[$current/$total] Przetwarzanie..."
task=$(echo "$step" | jq -r '.task') files=$(echo "$step" | jq -r '.files[]')
claude -p "$task" \ --attach $files \ --allowedTools Edit,Write \ --max-turns 20
# Checkpoint po każdym głównym kroku git add -A git commit -m "refactor: $task (krok $current/$total)"done
# Solidna automatyzacja z obsługą błędówrun_with_retry() { local max_attempts=3 local attempt=1
while [ $attempt -le $max_attempts ]; do if "$@"; then return 0 fi
echo "Próba $attempt nieudana. Ponawiam..." attempt=$((attempt + 1)) sleep 5 done
return 1}
# Użyj z Clauderun_with_retry claude -p "Złożone zadanie refaktoryzacji" --max-turns 30
Śledź efektywność swojej automatyzacji:
# Śledź metryki automatyzacjiclaude -p "Przeanalizuj naszą historię git i oblicz:- Czas zaoszczędzony przez automatyczne commity- Wskaźnik błędów w zmianach automatycznych vs ręcznych- Poprawa pokrycia testami przez automatyczne generowanie testów- Wyniki kompletności dokumentacji
Wynik jako raport markdown" > automation-metrics.md
Automatyzacja z Claude Code to podróż od prostych skryptów do wyrafinowanych przepływów pracy. Zacznij od podstawowych hooków, eksperymentuj z trybem headless dla powtarzalnych zadań, następnie stopniowo buduj bardziej złożone wzorce automatyzacji.
Kluczem jest identyfikacja powtarzalnych, podatnych na błędy zadań w twoim przepływie pracy i systematyczna ich automatyzacja. Każda automatyzacja, którą tworzysz, staje się klockiem konstrukcyjnym dla bardziej złożonych przepływów pracy.
Gotowy do obsługi transformacji kodu na dużą skalę? Przejdź do Refaktoryzacja, aby nauczyć się, jak Claude Code może pomóc bezpiecznie restrukturyzować całe bazy kodu.