Moduł 4 35 min Zaawansowany

Hooks, Skills i Permissions

Czego się nauczysz
  • 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

EventKiedy się odpala
PreToolUsePRZED wykonaniem narzędzia (Write, Bash, Edit...)
PostToolUsePO wykonaniu narzędzia
NotificationGdy Claude wysyła notyfikację
StopGdy Claude kończy odpowiedź
SubagentStopGdy subagent kończy pracę
PreCompactPrzed kompaktowaniem kontekstu
PostCompactPo kompaktowaniu kontekstu
SessionStartNa początku sesji
SessionEndNa 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żkaZakresGit?
.claude/skills/<nazwa>/SKILL.mdProjekt (zespół)TAK
~/.claude/skills/<nazwa>/SKILL.mdGlobalny (osobisty)NIE

Wywoływanie

  • Ręcznie: wpisz /review w 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

TrybOpis
DefaultPyta o pozwolenie na każdą operację
allowedToolsPre-approve wybrane narzędzia
bypassPermissionsPomiń pytania (CI/CD)
deny rulesZablokuj 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:

  1. Utwórz hook PostToolUse(Write), który automatycznie formatuje kod po zapisie
  2. Stwórz custom skill /deploy z instrukcjami deploy dla Twojego projektu
  3. 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.