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 automatyczne reakcje na zdarzenia w pracy Claude Code. Gdy zdarzenie zajdzie (np. Claude ma zapisać plik), Claude Code sam uruchamia to, co skonfigurowałeś: komendę, zapytanie HTTP, narzędzie MCP, prompt do modelu albo agenta.

Hook events - pełna lista

Stan na 1 października 2026: dokumentacja (hooks reference na code.claude.com/docs) wymienia 33 zdarzenia - tyle samo co we wrześniu. Lista rośnie z kolejnymi wersjami, więc przy własnej konfiguracji zawsze sprawdzaj aktualny spis w docs. W codziennej pracy najczęściej użyjesz czterech: PreToolUse, PostToolUse, UserPromptSubmit i Stop.

EventKiedy się odpala
SessionStartPoczątek lub wznowienie sesji
SetupStart z --init-only, albo --init/--maintenance w trybie -p (przygotowanie w CI)
UserPromptSubmitPo wysłaniu promptu, zanim Claude go przetworzy
UserPromptExpansionGdy wpisana komenda rozwija się w prompt (może zablokować rozwinięcie)
PreToolUsePRZED wykonaniem narzędzia (Write, Bash, Edit...) - może zablokować
PermissionRequestGdy pojawia się dialog uprawnień
PermissionDeniedGdy klasyfikator auto mode odrzuca wywołanie narzędzia
PostToolUsePO udanym wykonaniu narzędzia
PostToolUseFailurePo nieudanym wywołaniu narzędzia
PostToolBatchPo rozwiązaniu całej paczki równoległych wywołań
NotificationGdy Claude Code wysyła notyfikację
MessageDisplayPrzy wyświetlaniu tekstu odpowiedzi asystenta
SubagentStartGdy startuje subagent
SubagentStopGdy subagent kończy pracę
TaskCreatedPrzy tworzeniu zadania na liście zadań
TaskCompletedPrzy oznaczaniu zadania jako ukończone
StopGdy Claude kończy odpowiedź
StopFailureGdy tura kończy się błędem API
TeammateIdleGdy członek agent teamu przechodzi w bezczynność
InstructionsLoadedGdy CLAUDE.md lub plik rules ładuje się do kontekstu
ConfigChangeGdy plik konfiguracji zmienia się w trakcie sesji
CwdChangedGdy zmienia się katalog roboczy (np. cd)
DirectoryAddedGdy do sesji dochodzi nowy katalog roboczy (od 2.1.219)
FileChangedGdy obserwowany plik zmienia się na dysku
WorktreeCreatePrzy tworzeniu git worktree
WorktreeRemovePrzy usuwaniu git worktree
PreCompactPrzed kompaktowaniem kontekstu
PostCompactPo zakończeniu kompaktowania kontekstu
PreModelSwitchPrzed zmianą modelu w sesji - może ją zablokować (od 2.1.251)
PostModelSwitchPo zmianie modelu w sesji (od 2.1.251)
ElicitationGdy serwer MCP prosi o input użytkownika
ElicitationResultPo odpowiedzi użytkownika na prośbę serwera MCP
SessionEndNa końcu sesji

Pięć typów hooków

Hook nie musi być skryptem. Dokumentacja (stan na 1 października 2026) opisuje pięć typów, które wybierasz polem type:

TypCo uruchamia
commandKomendę powłoki. Dostaje JSON zdarzenia na stdin, odpowiada kodem wyjścia i tekstem na standardowym wyjściu (stdout). Najczęstszy wybór
httpWysyła JSON zdarzenia jako żądanie POST pod wskazany adres URL. Serwer odpowiada w tym samym formacie co komenda
mcp_toolNarzędzie z podłączonego serwera MCP. Jego odpowiedź Claude Code czyta jak stdout komendy
promptJednorazowe pytanie do modelu Claude, czy przepuścić akcję, czy ją zablokować. Model zwraca decyzję w JSON
agentSubagenta, który przed decyzją czyta pliki i przeszukuje kod, żeby sprawdzić warunki. Typ eksperymentalny

Wszystkie hooki pasujące do zdarzenia uruchamiają się równolegle. Nie każde zdarzenie obsługuje wszystkie pięć typów - komplet mają m.in. PreToolUse, PostToolUse i Stop.

Jak hook dostaje dane

Hook typu command to komenda, która na stdin dostaje JSON z kontekstem zdarzenia: session_id, tool_name, tool_input (np. tool_input.file_path przy Write/Edit, tool_input.command przy Bash). Pola wyciągasz np. przez jq. Do dyspozycji masz też zmienną $CLAUDE_PROJECT_DIR - wskazuje root projektu, więc skrypty hooków trzymasz w repo niezależnie od bieżącego katalogu.

Przykład: Auto-formatowanie po zapisie pliku

Konfiguracja w settings.json - zwróć uwagę na schemat: matcher + zagnieżdżona tablica hooks:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

Komenda czyta JSON ze stdin, jq wyciąga ścieżkę zapisanego pliku, prettier formatuje.

Przykład: Blokowanie niebezpiecznych operacji

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/check-safety.sh"
          }
        ]
      }
    ]
  }
}

Skrypt blokujący:

#!/bin/bash
# .claude/hooks/check-safety.sh
COMMAND=$(jq -r '.tool_input.command')

if echo "$COMMAND" | grep -q 'rm -rf'; then
  echo "Zablokowane: destrukcyjna komenda" >&2
  exit 2
fi
exit 0

Kody wyjścia mają ścisłą semantykę: blokuje wyłącznie exit 2 - wtedy stderr wraca do Claude jako komunikat błędu i model wie, dlaczego operacja nie przeszła. Inne niezerowe kody NIE blokują (pokazują tylko notkę o błędzie hooka), a exit 0 to sukces. Zasada „blokuje tylko exit 2” obowiązuje bez zmian (stan na 1 października 2026). Co dokładnie znaczy „blokada”, zależy od zdarzenia: przy PreToolUse to odrzucenie wywołania narzędzia, przy PreModelSwitch to zatrzymanie zmiany modelu. Blokada z hooka działa nawet wtedy, gdy reguła allow przepuściłaby komendę: hook z exit 2 zatrzymuje wywołanie, zanim Claude Code w ogóle sprawdzi uprawnienia.

Podgląd: /hooks otwiera przeglądarkę skonfigurowanych hooków, tylko do odczytu. Przy każdym hooku widać, skąd pochodzi, np. z ustawień użytkownika, projektu, lokalnych, z pluginu albo z bieżącej sesji. Hooki dodajesz i usuwasz w plikach settings.json albo prosisz o to Claude.

Mody (mods) - hooki działające wewnątrz Claude Code

Nowość z 1 października 2026, wymaga wersji 2.1.287 lub nowszej. Mod to plugin, czyli paczka rozszerzeń do Claude Code, z funkcjami w JavaScripcie lub TypeScripcie. Claude Code wywołuje je przy zdarzeniach: wywołaniu narzędzia, wysłaniu promptu, rysowaniu interfejsu. Funkcja może zdarzenie obserwować, zmienić albo przejąć. Różnica wobec hooków z settings.json: te uruchamiają coś na zewnątrz, a mod działa w środku programu. Dzięki temu doda panel obok rozmowy, pasek nad promptem, własną komendę albo zmieni wygląd interfejsu.

Kilka funkcji Claude Code to już mody, np. /diff. Własny mod napisze Ci Claude - wystarczy opisać, czego potrzebujesz. Mody są domyślnie włączone i działają w terminalu oraz w zakładce Code aplikacji desktopowej.

ChceszWybierz
Zablokować, przepuścić albo zalogować zdarzenie skryptemhook w settings.json
Przestać wklejać do czatu te same instrukcjeskill (opis niżej)
Dać Claude dostęp do zewnętrznego systemuserwer MCP (następna lekcja)
Panel, pasek nad promptem, własną komendę albo przeróbkę zdarzeniamod

Uwaga na bezpieczeństwo: mod działa z Twoimi uprawnieniami i bez sandboxa, czyli izolacji opisanej na końcu lekcji. Może czytać i zapisywać pliki, uruchamiać programy, wysyłać dane w sieć, a nawet zatwierdzić wywołanie, o które reguła ask kazałaby pytać. Instaluj mody tylko od autorów i z marketplace'ów (katalogów pluginów), którym ufasz. Na jedną sesję wyłączysz wszystkie zainstalowane mody flagą --safe-mode, która wyłącza też inne Twoje dodatki.

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: "przeglad"
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

Poza tymi dwoma miejscami skille trafiają do sesji m.in. z ustawień zarządzanych, które wdraża administrator firmy (Enterprise), z pluginów (wywołujesz je jako /nazwa-pluginu:nazwa-skilla) i z konta claude.ai. Skille włączone na koncie synchronizują się do terminala, gdy logujesz się tym kontem (wymaga 2.1.275 lub nowszej). Synchronizacja nie działa przy logowaniu kluczem API ani na Amazon Bedrock. Wyłączysz ją ustawieniem syncClaudeAiSkills: false.

Wywoływanie

  • Ręcznie: wpisz /przeglad w sesji
  • Automatycznie: Claude sam wywoła skill, jeśli uzna, że pasuje (na podstawie description)

Jedna definicja, dwa wejścia - to celowe. Skill piszesz raz, a korzystasz z niego i Ty (slash command), i Claude (auto-inwokacja przy pasującym zadaniu).

Dlaczego przykład nie nazywa się review? /review to alias wbudowanego skilla /code-review. Własny skill o nazwie wbudowanego skilla (w spisie komend w dokumentacji ma oznaczenie Skill) zastąpi go, ale nie jego aliasy: skill code-review przejmie /code-review, a /review dalej uruchomi wersję wbudowaną. Wybieraj nazwy, które nie kolidują z komendami z /help.

Co ze starymi custom commands? Zostały scalone ze skillami: plik .claude/commands/deploy.md i skill .claude/skills/deploy/SKILL.md tworzą to samo /deploy i działają tak samo. Istniejące pliki w .claude/commands/ dalej działają - skille dodają folder na pliki pomocnicze i automatyczne wywoływanie.

Komendy do skilli: /skills pokazuje listę dostępnych skilli (klawisz t sortuje je po liczbie tokenów). /skill-doctor (wymaga 2.1.261 lub nowszej) pokazuje, ile kontekstu kosztuje każdy skill i jak często go używasz, i wskazuje skille, których nigdy nie wywołałeś. To ma znaczenie: opisy wszystkich skilli siedzą w kontekście, a lista ma budżet równy 1% okna kontekstu. Przy wielu skillach Claude Code pomija opisy części z nich, zaczynając od tych, których używasz najrzadziej, a skill bez opisu trudniej dopasować do Twojej prośby. Czy instrukcje w skillach i CLAUDE.md są aktualne i niesprzeczne, sprawdzi /doctor prompt-audit (wymaga 2.1.283 lub nowszej).

Aktualizacja (stan na 1 października 2026): od 6 sierpnia 2026 plan Enterprise ma skanowanie skilli i pluginów. Claude sprawdza cudzy skill albo plugin przy wgraniu lub edycji w organizacji (w Claude, Cowork i firmowym marketplace'ie) i zwraca wynik pass, warn (ostrzeżenie) albo fail (blokada). Do 2 października 2026 skanowanie było domyślnie wyłączone. Od tego dnia włącza się w organizacjach Enterprise, które same go nie ustawiły. Serwerów MCP i hooków nie obejmuje. Skill to kod uruchamiany w Twoim środowisku - traktuj cudze skille tak samo ostrożnie jak cudze paczki npm.

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ń

Klasyczne zachowanie Claude Code: pytanie o pozwolenie PRZED każdą operacją z efektami ubocznymi (zapis pliku, wykonanie komendy, commit). Od sierpnia 2026 to już nie jest jedyny scenariusz. Od wersji 2.1.284 (28 września 2026) interaktywne sesje w terminalu i VS Code startują w trybie auto na każdym planie i u każdego dostawcy. Szczegóły i zastrzeżenia niżej.

Sześć trybów uprawnień

Stan na 1 października 2026 - dokumentacja wymienia sześć trybów, bez zmian od września:

TrybOpis
defaultPyta o pozwolenie przy każdej operacji z efektami ubocznymi (w interfejsie: Manual)
acceptEditsAuto-akceptuje edycje plików w katalogu roboczym; o resztę pyta
planPlan Mode - Claude tylko czyta i analizuje, potem przedstawia plan do zatwierdzenia. Zero zmian bez Twojego „go”
autoKlasyfikator w tle ocenia każdą akcję: bezpieczne przepuszcza bez pytania, ryzykowne blokuje albo kieruje do Ciebie
dontAskZamiast pytać - odmawia. Przechodzi to, co w trybie Manual nie wymaga zgody (np. odczyty w projekcie), to, na co pozwalają reguły allow, i to, co zatwierdzi hook PreToolUse. Przydaje się w CI, gdzie nikt nie odpowie na pytanie o zgodę
bypassPermissionsWyłącza pytania o zgodę i kontrole bezpieczeństwa, więc wywołania idą od razu. Nie wyłącza wszystkiego: reguły deny dalej blokują, a reguły ask i usuwanie krytycznych ścieżek (np. rm -rf ~) dalej wymagają zgody. Tylko izolowane środowiska, np. kontenery i maszyny wirtualne bez dostępu do internetu (CI/CD). W terminalu to flaga --dangerously-skip-permissions, równoważna --permission-mode bypassPermissions

Aktualizacja (stan na 1 października 2026): auto jest domyślne wszędzie. Od 14 sierpnia 2026 w trybie auto startowały nowe sesje na planach Pro, Max i Team. Od wersji 2.1.284 (28 września 2026) interaktywne sesje w terminalu i VS Code startują w auto na każdym planie i u każdego dostawcy, także na Enterprise, z kluczem API oraz na Bedrock, Google Cloud i Foundry. Cztery zastrzeżenia, bez których ta informacja wprowadza w błąd:

  1. Wersja. Start w auto na każdym planie wymaga Claude Code 2.1.284 lub nowszej. Na wersjach starszych niż 2.1.228 (macOS, Linux, WSL) albo 2.1.233 (natywny Windows) sesje startują w Manual.
  2. Pierwsza sesja. Pierwsza sesja po instalacji lub aktualizacji może wystartować w innym trybie niż zwykle, bo Claude Code wybiera tryb, zanim pobierze ustawienia z serwera. Kolejna sesja wraca do normy.
  3. Wyjątki. claude -p (tryb jednorazowy) i Agent SDK startują w default, a w auto tylko u zewnętrznych dostawców albo przy wyłączonej telemetrii (2.1.285 lub nowsza). Organizacja może wyłączyć auto w ustawieniach zarządzanych. Ustawiony przez Ciebie permissions.defaultMode ma pierwszeństwo przed wbudowanym auto - Claude Code go nie nadpisze.
  4. Model. Na API Anthropic auto działa z Opus 4.6 lub nowszym, Sonnet 4.6 lub nowszym i z modelami Fable. Na Bedrock, Google Cloud i Foundry potrzebujesz Sonnet 5 lub nowszego, Opus 4.7 lub nowszego albo modelu Fable, a z innym modelem sesja startuje w Manual. Z Haiku i starszymi modelami trybu auto nie ma u żadnego dostawcy.

Co robi auto w praktyce: klasyfikator w tle przepuszcza akcje, które uznaje za bezpieczne (odczyty, edycje w projekcie, typowe komendy), a blokuje ryzykowne. Reguły auto mode podejrzysz i zmienisz w zakładce Auto mode w /permissions. Komenda /auto-mode-setup (Pro, Max, Team) szkicuje z projektu i ostatnich sesji opis Twojego środowiska dla klasyfikatora, a Ty go zatwierdzasz. Dokumentacja uczciwie zastrzega: auto zmniejsza liczbę pytań, ale nie gwarantuje bezpieczeństwa i przy wrażliwych operacjach nie zastąpi Twojego przeglądu. Pełny opis auto mode, dynamic workflows i agent teams znajdziesz w lekcji Tryb auto, dynamic workflows i agent teams.

Tryby przełączasz w sesji skrótem Shift+Tab: default → acceptEdits → plan → auto. bypassPermissions wchodzi do cyklu tylko po starcie z odpowiednią flagą albo z permissions.defaultMode ustawionym na bypassPermissions w ustawieniach użytkownika lub zarządzanych, a dontAsk nigdy (ustawiasz go flagą --permission-mode dontAsk). Bieżący tryb pokazuje pasek stanu, np. ⏵⏵ auto mode on albo ⏸ plan mode on. /permissions służy do reguł allow, ask i deny oraz ma zakładkę Auto mode. Plan Mode to najbezpieczniejszy sposób pracy z nieznanym codebase: najpierw analiza i plan, dopiero po akceptacji edycje. Domyślny tryb ustawisz kluczem permissions.defaultMode. Uwaga: z ustawień projektu (.claude/settings.json i .claude/settings.local.json) terminal nie przyjmie wartości auto ani bypassPermissions.

Reguły w settings.json

Reguły uprawnień zapisujesz w trzech tablicach: allow (bez pytania), deny (zawsze blokuj), ask (zawsze pytaj). Wpis to wzorzec Narzędzie(argumenty). Reguły obowiązują w każdym trybie, także w auto: deny blokuje niezależnie od tego, co uznał klasyfikator, a ask wymusza pytanie do Ciebie. W trybie bypassPermissions reguły allow nic nie zmieniają, ale deny i ask działają dalej. Reguły egzekwuje Claude Code, nie model: polecenie w prompcie albo w CLAUDE.md nie zmieni tego, na co program pozwala.

Projektowe (.claude/settings.json):

{
  "permissions": {
    "allow": [
      "Read",
      "Bash(npm run test *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(curl *)",
      "Read(./.env)"
    ],
    "ask": [
      "Bash(git push *)"
    ]
  }
}

Osobiste (.claude/settings.local.json - poza gitem):

{
  "permissions": {
    "allow": ["Write", "Edit", "Bash(npm run lint)"]
  }
}

Zasada rozstrzygania: deny z dowolnego pliku wygrywa z allow z każdego innego. Blokada w repo zatrzyma Twoje osobiste zezwolenie, a Twoja osobista blokada (w ~/.claude/settings.json albo .claude/settings.local.json) zatrzyma zezwolenie z repo. Blokady z ustawień zarządzanych (managed, czyli narzuconych przez administratora firmy) nie zdejmie żaden inny plik ani flaga, nawet --allowedTools.

Trzy pułapki przy pisaniu takich reguł (stan na 1 października 2026):

  • Glob i Grep. Na macOS, Linuksie i WSL Claude Code domyślnie nie ma tych narzędzi. Szuka przez find i grep w Bashu, a te komendy nie wymagają zgody. Reguła allow ich nie przywróci, więc Glob i Grep wpisuj do reguł tylko na natywnym Windows.
  • Składnia :*. Forma Bash(npm run test:*) działa tak samo jak Bash(npm run test *), ale okno uprawnień zapisuje wersję ze spacją. Spacja przed gwiazdką jest częścią reguły, więc żadna z tych form nie złapie npm run test:unit. Do tego potrzebujesz Bash(npm run test*) bez spacji, która złapie też np. npm run testowy.
  • Deny to nie mur. Reguła Bash porównuje tekst komendy, więc /bin/rm -rf albo sh -c 'curl …' ją ominą. Granicę dla plików i sieci niezależną od zapisu komendy daje sandbox (opis niżej). Własną logikę sprawdzania pełnej komendy dodasz hookiem PreToolUse z początku lekcji.

Granice auto mode: Containment Escape i odczyty poza projektem

Dwa bezpieczniki, które warto znać przed pracą w trybie auto (stan na 1 października 2026):

  • Reguła Containment Escape (od 2.1.257): akcje, które wyprowadzają Claude poza granice środowiska, w którym pracuje, nie dostają automatycznej zgody klasyfikatora. Przykłady: pobranie poświadczeń z serwera metadanych chmury, tunel na zewnątrz albo skanowanie sąsiednich kontenerów. Auto mode ma przyspieszać pracę w projekcie, nie otwierać drzwi na zewnątrz.
  • permissions.blockReadsOutsideWorkingDirectories (od 2.1.257): ustawienie w settings.json, przy którym narzędzia plikowe Claude odmawiają odczytu spoza katalogów roboczych sesji w każdym trybie, także bypassPermissions. Komendy powłoki czytające takie pliki pytają wtedy o zgodę. Włącz je, jeśli w katalogu domowym trzymasz klucze, konfiguracje albo dane klientów.

Sandbox

Sandbox to dodatkowa warstwa izolacji: system operacyjny wymusza granice na plikach i sieci dla komend powłoki, które uruchamia Claude (Bash, PowerShell), i dla procesów, które te komendy startują. Włączasz go komendą /sandbox albo ustawieniem sandbox.enabled - to opcja, nie zachowanie domyślne:

  • macOS: Seatbelt (wbudowany w system, nic nie instalujesz)
  • Linux i WSL2: bubblewrap + socat (doinstalowujesz pakiety)
  • Windows natywnie: brak wsparcia - na Windows sandbox uruchomisz tylko w WSL2

W sandboxie komendy piszą domyślnie tylko w katalogu roboczym, w prywatnym katalogu tymczasowym i w katalogach dodanych przez --add-dir. Czytać mogą za to większość dysku, łącznie z ~/.ssh i ~/.aws/credentials, więc wrażliwe ścieżki blokujesz ustawieniem sandbox.filesystem.denyRead. Ruch sieciowy idzie przez pośrednika (proxy) na Twoim komputerze z listą dozwolonych domen, na starcie pustą. Przy nowej domenie Claude Code pyta o zgodę, a w trybie auto (dziś domyślnym) domeny ocenia klasyfikator.

Granica sandboxa: obejmuje tylko komendy powłoki. Narzędzia plikowe Claude (Read, Edit, Write), WebFetch, serwery MCP i hooki działają poza nim, więc denyRead nie zatrzyma narzędzia Read. Do tego służą reguły deny z sekcji wyżej. Procesy uruchomione przez mody też działają poza sandboxem.

Ćwiczenie praktyczne: Skonfiguruj hooks i skills:

  1. Utwórz hook PostToolUse z matcherem Write|Edit, który automatycznie formatuje kod po zapisie. Potem otwórz /hooks i sprawdź, czy hook jest na liście
  2. Stwórz custom skill /deploy z instrukcjami deploy dla Twojego projektu
  3. Skonfiguruj permissions: Read i Bash(npm run test *) do permissions.allow, a Bash(rm -rf *) do permissions.deny
  4. Przełącz się Shift+Tab w Plan Mode i poproś o plan refaktoringu - zobacz, jak Claude analizuje bez dotykania plików
  5. Spójrz na pasek stanu i sprawdź, w jakim trybie startuje Twoja sesja. Jeśli to auto, otwórz /permissions, zakładkę Auto mode, i przeczytaj, co klasyfikator przepuszcza bez pytania
  6. Uruchom /skill-doctor i sprawdź, ile kontekstu kosztują Twoje skille. Nieużywane wyłącz

Co dalej

W następnej lekcji podłączysz Claude Code do zewnętrznych usług przez MCP Servers.