Hooks, Skills i Permissions
- Znasz system hooks i potrafisz skonfigurować automatyzacje
- Umiesz tworzyć custom skills (slash commands)
- Rozumiesz system uprawnień i bezpieczeństwa
- Wiesz, jak skonfigurować settings.json i sandbox
Hooks - automatyzacja lifecycle
Hooks to zdarzenia, które pozwalają automatycznie uruchamiać komendy w określonych momentach pracy Claude Code.
9 hook events
| Event | Kiedy się odpala |
|---|---|
| PreToolUse | PRZED wykonaniem narzędzia (Write, Bash, Edit...) |
| PostToolUse | PO wykonaniu narzędzia |
| Notification | Gdy Claude wysyła notyfikację |
| Stop | Gdy Claude kończy odpowiedź |
| SubagentStop | Gdy subagent kończy pracę |
| PreCompact | Przed kompaktowaniem kontekstu |
| PostCompact | Po kompaktowaniu kontekstu |
| SessionStart | Na początku sesji |
| SessionEnd | Na końcu sesji |
Przykład: Auto-formatowanie po zapisie pliku
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"command": "npx prettier --write $CLAUDE_FILE_PATH",
"type": "command"
}
]
}
}
Przykład: Blokowanie niebezpiecznych operacji
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"command": "python3 check_safety.py",
"type": "command"
}
]
}
}
Jeśli skrypt zwróci kod błędu (exit ≠ 0), operacja zostanie zablokowana.
Interaktywne tworzenie: /hooks w sesji Claude Code.
Skills - custom slash commands
Skills to zdefiniowane przez użytkownika umiejętności - custom slash commands zapisane jako pliki Markdown z YAML frontmatter.
Struktura SKILL.md
---
name: "review"
description: "Robisz code review aktualnych zmian"
---
## Instrukcje Code Review
1. Użyj `git diff` aby zobaczyć zmiany
2. Sprawdź: błędy logiczne, brakujące testy,
problemy z bezpieczeństwem
3. Wygeneruj raport: krytyczne → sugestie → pozytywy
Lokalizacja
| Ścieżka | Zakres | Git? |
|---|---|---|
.claude/skills/<nazwa>/SKILL.md | Projekt (zespół) | TAK |
~/.claude/skills/<nazwa>/SKILL.md | Globalny (osobisty) | NIE |
Wywoływanie
- Ręcznie: wpisz
/revieww sesji - Automatycznie: Claude sam wywoła skill, jeśli uzna, że pasuje (na podstawie
description)
Przykład: Skill do tworzenia komponentów React
---
name: "component"
description: "Tworzysz nowy komponent React"
---
Użytkownik poda nazwę komponentu. Stwórz:
1. src/components/<Nazwa>/<Nazwa>.tsx
2. src/components/<Nazwa>/<Nazwa>.test.tsx
3. src/components/<Nazwa>/index.ts
Użyj konwencji z CLAUDE.md projektu.
Permissions - system uprawnień
Claude Code pyta o pozwolenie PRZED każdą operacją z efektami ubocznymi (zapis pliku, wykonanie komendy, commit).
4 tryby
| Tryb | Opis |
|---|---|
| Default | Pyta o pozwolenie na każdą operację |
| allowedTools | Pre-approve wybrane narzędzia |
| bypassPermissions | Pomiń pytania (CI/CD) |
| deny rules | Zablokuj konkretne narzędzia |
Konfiguracja w settings.json
Projektowe (.claude/settings.json):
{
"permissions": {
"allowedTools": ["Read", "Glob", "Grep"],
"disallowedTools": ["Bash(rm -rf *)"]
}
}
Osobiste (.claude/settings.local.json):
{
"permissions": {
"allowedTools": ["Write", "Edit", "Bash"]
}
}
Sandbox
Claude Code domyślnie działa w sandboxie:
- macOS: Seatbelt - ogranicza dostęp do systemu plików
- Linux: bubblewrap - izolacja procesów
Ćwiczenie praktyczne: Skonfiguruj hooks i skills:
- Utwórz hook PostToolUse(Write), który automatycznie formatuje kod po zapisie
- Stwórz custom skill
/deployz instrukcjami deploy dla Twojego projektu- Skonfiguruj permissions: dozwól Read/Grep/Glob bez pytania, zablokuj
rm -rf
Co dalej
W następnej lekcji podłączysz Claude Code do zewnętrznych usług przez MCP Servers.