Automatyzacja skryptów
Masz workflow Claude Code, który działa za każdym razem: przekieruj diff z git, poproś o wpis do changelogu, sformatuj go, dodaj do CHANGELOG.md. Uruchamiasz go przed każdym wydaniem. Ale wymaga pięciu ręcznych kroków i za każdym razem zapominasz dokładnego promptu. Skryptowanie zamienia to z ręcznego workflow w pojedynczą komendę.
Co wyniesiesz z tego artykułu
Dział zatytułowany „Co wyniesiesz z tego artykułu”- Wzorce trybu print do skryptowania Claude Code w pipeline’ach
- Hooki pre-commit uruchamiające Claude Code przed każdym commitem
- Zadania cron do zaplanowanej konserwacji bazy kodu
- Wzorce obsługi błędów i ponawiania prób dla skryptów produkcyjnych
Podstawy trybu print
Dział zatytułowany „Podstawy trybu print”Flaga -p sprawia, że Claude Code staje się skryptowalny. Przyjmuje prompt, przetwarza go, drukuje wynik i kończy:
# Basic usageclaude -p "What does this project do?"
# With piped inputcat error.log | claude -p "What caused this error?"
# With output formatclaude -p "List all TODO comments in the codebase" --output-format json
# With budget limitsclaude -p "Refactor src/utils.ts" --max-turns 5 --max-budget-usd 1.00Formaty wyjścia
Dział zatytułowany „Formaty wyjścia”| Format | Przypadek użycia | Przykład |
|---|---|---|
text (domyślny) | Wyjście czytelne dla człowieka | --output-format text |
json | Konsumpcja przez skrypty | --output-format json |
stream-json | Strumieniowanie w czasie rzeczywistym | --output-format stream-json |
Hooki pre-commit
Dział zatytułowany „Hooki pre-commit”Uruchom Claude Code jako sprawdzenie pre-commit. To wyłapuje problemy zanim kod trafi do repozytorium:
Podstawowy przegląd pre-commit
Dział zatytułowany „Podstawowy przegląd pre-commit”#!/bin/bash# Quick review of staged changes
STAGED_DIFF=$(git diff --cached --no-color)
if [ -z "$STAGED_DIFF" ]; then exit 0fi
RESULT=$(echo "$STAGED_DIFF" | claude -p "Review this diff for critical issues only: \ security vulnerabilities, obvious bugs, and broken error handling. \ If you find CRITICAL issues, output 'BLOCK: [reason]'. \ If the code looks safe, output 'PASS'." \ --max-turns 3 --output-format text 2>&1)
if echo "$RESULT" | grep -q "BLOCK:"; then echo "Pre-commit review found issues:" echo "$RESULT" exit 1fi
exit 0Zadania cron
Dział zatytułowany „Zadania cron”Codzienne sprawdzenie zdrowia kodu
Dział zatytułowany „Codzienne sprawdzenie zdrowia kodu”#!/bin/bash# cron-health-check.sh -- Run daily at 6 AM# Crontab: 0 6 * * * /path/to/cron-health-check.sh
cd /path/to/project
REPORT=$(claude -p "Run a health check on this project: \ 1. Check for TypeScript errors: npx tsc --noEmit \ 2. Run the linter: npm run lint \ 3. Check for outdated dependencies: npm outdated \ 4. Summarize findings in a brief report" \ --max-turns 10 \ --dangerously-skip-permissions \ --output-format text 2>&1)
# Send via notification (adjust for your team's channel)echo "$REPORT" | mail -s "Daily Code Health: $(date +%Y-%m-%d)" team@company.comTygodniowy audyt zależności
Dział zatytułowany „Tygodniowy audyt zależności”#!/bin/bashcd /path/to/project
claude -p "Run npm audit and analyze the results. \ For each vulnerability: \ 1. Assess if it affects us (check if the vulnerable code path is used) \ 2. Check if an upgrade is available \ 3. Note any breaking changes in the upgrade \ Output a prioritized action list." \ --max-turns 8 \ --dangerously-skip-permissions \ --output-format text > /tmp/audit-report.txt
# Only notify if there are actionable findingsif grep -q "CRITICAL\|HIGH" /tmp/audit-report.txt; then cat /tmp/audit-report.txt # Send to your notification systemfiWzorce obsługi błędów i ponawiania prób
Dział zatytułowany „Wzorce obsługi błędów i ponawiania prób”Solidny szablon skryptu
Dział zatytułowany „Solidny szablon skryptu”#!/bin/bashset -euo pipefail
MAX_RETRIES=3RETRY_DELAY=5
run_claude() { local prompt="$1" local retries=0
while [ $retries -lt $MAX_RETRIES ]; do result=$(claude -p "$prompt" --max-turns 5 --output-format text 2>&1) exit_code=$?
if [ $exit_code -eq 0 ]; then echo "$result" return 0 fi
retries=$((retries + 1)) echo "Attempt $retries failed. Retrying in ${RETRY_DELAY}s..." >&2 sleep $RETRY_DELAY done
echo "Failed after $MAX_RETRIES attempts" >&2 return 1}
# Usagerun_claude "Analyze the test coverage report and identify untested code paths"Kiedy coś idzie nie tak
Dział zatytułowany „Kiedy coś idzie nie tak”Skrypt zawiesza się czekając na uprawnienia: W trybie print Claude Code zatrzymuje się, gdy potrzebuje pozwolenia na niebezpieczną operację. Użyj --dangerously-skip-permissions dla zaufanych środowisk lub --allowedTools, aby wcześniej zatwierdzić określone operacje.
Niespójność formatu wyjścia: Tekstowe wyjście Claude Code może się różnić między uruchomieniami. Przy programistycznym parsowaniu wyjścia użyj --output-format json i parsuj za pomocą jq. Nie polegaj na konkretnym formatowaniu tekstu.
Przekroczenie budżetu w trakcie zadania: Flaga --max-budget-usd zatrzymuje wykonanie po osiągnięciu budżetu. Dla krytycznych zadań ustaw hojny budżet i monitoruj koszty przez /cost lub OpenTelemetry.
Środowisko zadania cron różni się od shell: Zadania cron działają z minimalnym środowiskiem. Upewnij się, że twój PATH zawiera node i claude, oraz że wszystkie wymagane zmienne środowiskowe (klucze API, ustawienia proxy) są ustawione w crontabie.
Co dalej
Dział zatytułowany „Co dalej”- Operacje wsadowe — Połącz skryptowanie z wzorcami wsadowymi do automatyzacji na dużą skalę
- GitHub Actions — Przenieś swoje skrypty do CI/CD
- Hooki i automatyzacja — Uruchamiaj skrypty automatycznie przez hooki