O czym jest ten film
- Anthropic wydało function hooks — mechanizm, który autor po kilku godzinach testów nazywa najlepszą funkcją Claude Code.
- Nowe hooki działają jak warstwy pośrednie (middleware) znane z Express.js: przechwytują każde wywołanie narzędzia i mogą je zablokować, zmodyfikować albo obsłużyć samodzielnie.
- Łatają braki starych hooków: pozwalają przepisywać wejście, doklejać kontekst z firmowej bazy wiedzy, rysować elementy interfejsu, zadawać pytania użytkownikowi i pamiętać między sesjami.
- Podstawowe triki: podmiana npm na pnpm w komendach, cache wyników web fetch we wbudowanym magazynie, nadpisanie wbudowanej wyszukiwarki przez API Exa.
- Flagowe demo: hook wykrywa sekrety po entropii tekstu — klucz API nigdy nie trafia do transkryptu sesji, a agent mimo to posługuje się nim przy wysyłce żądań.
- Nowe elementy interfejsu: dynamiczny wiersz z etapem wdrożenia Vercel i czasem budowania, przyciski chowania, panele z danymi na żywo.
- Hooki potrafią wołać modele (Haiku przez komendę
$model) i mówić do użytkownika głosem systemowego syntezatora mowy. - Wzorce dla zespołów: tryb dry run, pytanie o podział plików powyżej 1000 linii, audyt każdego zdarzenia do firmowego magazynu logów.
- Reguły z
CLAUDE.mdwarto przenosić do deterministycznegohooks.jsoni udostępniać zespołowi jako pluginy przez repozytorium na GitHubie. - Materiał zawiera też autopromocję: autor kończy sprzedaż oferty lifetime swojej szkoły i przechodzi na droższy model kohortowy (pierwsza kohorta: przełom września i października).
Redakcyjne tłumaczenie
Najlepsza funkcja Claude Code według autora
Anthropic wydało dziś funkcję, którą — po zaledwie kilku godzinach zabawy — uznaję za najlepszą w całym Claude Code: function hooks, czyli „hooki funkcyjne”. Do tej pory największym moim faworytem były dynamiczne workflow, ale to, co potrafią nowe hooki, gra w zupełnie innej lidze. Od razu wiedziałem, że trzeba o tym nagrać. Poniżej przechodzę przez całą funkcję i pokazuję, jak może ona uczynić nas lepszymi inżynierami.
(Informacja dodatkowa: Claude Code to terminalowe narzędzie Anthropic do programowania z pomocą agenta AI; hook to funkcja lub skrypt uruchamiany automatycznie przy określonych zdarzeniach, np. przed wykonaniem komendy w powłoce.)
Jeśli nie znasz zwykłych hooków w Claude Code, na moim blogu jest darmowy materiał wprowadzający (link w opisie filmu). W skrócie: zwykłe hooki służą do tego, by dodać Claude Code sztywną, przewidywalną kontrolę, a function hooks wynoszą ten mechanizm na wyższy poziom — narzędzie staje się znacznie bardziej otwarte na modyfikacje i dopasowanie pod siebie. Przy okazji łatają kilka bolączek, które dotąd trapiły stary mechanizm. Na marginesie: właśnie trwa wyprzedaż mojej Agentic Coding School, wrócę do niej w połowie materiału.
Po co komu hooki: kontrola, która działa zawsze
Minuta podstaw, żebyśmy grali w jednej drużynie — kto zna temat, niech przewinie dwie minuty dalej.
Hooki dodają do Claude Code kontrolę deterministyczną: reguły, które działają zawsze, a nie tylko wtedy, gdy model akurat o nich pamięta. Skąd taka potrzeba? Oto typowe awarie:
- W pliku
CLAUDE.mdzapisujesz regułę w rodzaju „nigdy nie uruchamiaj destrukcyjnych komend Supabase”. Tyle że gdy kontekst się zapełnia, reguły z początku pliku oraz promptu systemowego powoli blakną — i Claude po prostu o nich zapomina. - Wysyłasz byle jaki, niedopracowany prompt; Claude źle go interpretuje i pociąga za niebezpieczną dźwignię.
- Definiujesz proces, a Claude i tak zbacza z wytyczonej ścieżki.
Każdy z tych scenariuszy naprawia hook. Przykład z życia: proszę Claude „zrób mi hooka, który przy pracy z CLI Supabase blokuje niebezpieczne komendy”. Powstaje mechanizm taki jak ten: przed każdym wywołaniem narzędzia Bash uruchamiany jest skrypt powłoki supabase-guard, który wyłapuje zakazane operacje — na czarnej liście są m.in. usuwanie projektów i gałęzi.
Gdzie kończy się stary mechanizm
Dotychczasowe hooki miały jednak sporo ograniczeń. Nie potrafiły:
- przepisać niczego na wejściu, choćby promptu, który właśnie wpisujesz;
- dokleić do sesji dodatkowego kontekstu, na przykład z firmowej bazy wiedzy;
- narysować w Claude Code żadnych elementów interfejsu: przycisków, wierszy statusu;
- zadać użytkownikowi pytania;
- dodać nowego narzędzia ani zmienić opisów istniejących;
- zapamiętać niczego między poszczególnymi hookami i sesjami.
Function hooks zamykają wszystkie te braki naraz.
To samo, co middleware w Express.js — tylko w terminalu
Najlepsza analogia, jaka przychodzi mi do głowy, to warstwy pośrednie (middleware) w Express.js, popularnym frameworku Node.js. Jeśli z nich korzystałeś, poczujesz się jak w domu: tam taka warstwa sprawdza na przykład nagłówek autoryzacji — brak nagłówka to koniec rozmowy, a jego obecność przepuszcza żądanie dalej, do next().
Function hooks wyglądają niemal identycznie. Każde wywołanie narzędzia w Claude Code można dopasować do wzorca: jeśli to narzędzie Bash, a komenda pasuje do wyrażenia regularnego — powiedzmy do usuwania katalogu — blokujemy ją; w przeciwnym razie przepuszczamy dalej.
Ta sama konstrukcja pozwala na naprawdę sprytne rzeczy:
- Przepisywanie wejścia. Każde wywołanie Bash przechodzi przez filtr, który w komendzie zamienia npm na
pnpm install— koniec z przypadkowym npm w projektach prowadzonych na pnpm. - Skrócenie drogi z pamięcią podręczną. Function hooks dostają wbudowany magazyn danych (store). Gdy Claude chce pobrać stronę przez web fetch, hook najpierw zagląda do magazynu: jeśli ten adres był już pobierany, zwraca kopię z pamięci i w ogóle nie dopuszcza do nowego żądania.
- Nadpisywanie narzędzi domyślnych. Claude Code ma wbudowaną wyszukiwarkę, ale szczerze mówiąc jestem jej niewielkim fanem — pod spodem działa Brave Search, a ja wolę Exę dostępną przez serwer MCP. Kłopot w tym, że mimo wyraźnych instrukcji agent i tak sięga po wbudowane narzędzie. Zamiast walczyć, owinąłem wyszukiwarkę warstwą pośrednią: sprawdzam, czy mam ustawiony klucz API Exa; jeśli nie — lecimy domyślnym narzędziem; jeśli tak — pytam API Exa o wyniki. Gdyby żądanie nie wyszło, wracam do wbudowanej wyszukiwarki; gdy się uda, wstawiam wyniki prosto do sesji. Efekt uboczny: serwer MCP Exa mogę odinstalować, a Exa i tak pracuje w tle.
- Web fetch przez własne proxy. Wbudowane pobieranie stron bywa blokowane — nic nie stoi na przeszkodzie, by przepuścić je przez własny serwer pośredniczący.
Do tego dochodzi cały zestaw innych klocków, a moim faworytem jest modyfikowanie interfejsu Claude Code pod własne potrzeby. Czas na przykłady — od prostych po złożone.
Przepis pierwszy: sekrety nie wchodzą do transkryptu sesji
Zdarza się, że Claude Code jakąś komendą Bash wciąga sekret do transkryptu sesji. Klucz API ląduje w historii i zostaje ci już tylko skasowanie sesji albo rotacja klucza. To samo dotyczy adresów e-mail, IP i innych danych wrażliwych. Ratunek: warstwa pośrednia, która przechwytuje wszystko na wejściu i zamazuje sekrety, nim wiadomość trafi do sesji.
Włączamy funkcję komendą CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude. Dostajemy wtedy dostęp do zupełnie nowej, wbudowanej umiejętności plugin-authoring („tworzenie pluginów”), która przedstawia się: „napisz lub zdebuguj plugin Claude Code zbudowany z function hooks”.
Wpisuję polecenie: „Zrób function hook, który nie dopuści sekretów do transkryptu sesji, wykrywając je po entropii tekstu; dorzuć drugi, blokujący e-maile i wszystko, co wygląda na adres IP”.
(Informacja dodatkowa: detekcja po entropii opiera się na tym, że losowe ciągi znaków — jak klucze API — mają wyraźnie wyższą „nieuporządkowaną” zawartość informacyjną niż zwykły tekst.)
Claude zbudował hooka i poszedł o krok dalej, niż prosiłem — zaraz do tego wrócę. W katalogu .claude pojawiły się pliki plugins.json, transcript_redactor.json, hooks.json oraz redact.ts — ostatni to około 300 linii gotowego kodu. Na samym początku zdefiniował naprawdę elegancki magazyn trzymany w pamięci procesu, dzięki któremu hook może posługiwać się sekretami, nigdy ich nie „widząc”.
Teraz test na żywo. Wklejam klucz API Anthropic i proszę: „wyślij zapytanie do Sonnet 5 i poproś o krótkie opowiadanie”. W tej samej chwili, w której wcisnąłem Enter, sekret został automatycznie zamazany i podmieniony na identyfikator; prawdziwa wartość trafiła do magazynu w pamięci. Gdy Claude składa żądanie, operuje wyłącznie identyfikatorem — a hook tuż przed wysyłką podmienia go na prawdziwy sekret. Żądanie przeszło, opowiadanie wróciło.
Zyskaliśmy więc dwie rzeczy naraz: sekret w ogóle nie wszedł do transkryptu, a mimo to agent mógł nim posłużyć się w naszym imieniu. Użyłem magazynu typu „zmienna”, widocznego dla kolejnych hooków i kolejnych tur. Dostępny jest też magazyn trwały, który przetrwa restarty i osobne sesje — choć sekretów lepiej w nim nie trzymać. Cała konstrukcja przypomina Agent Proxy od Infisical (firmy od zarządzania sekretami): proxy, które dokleja sekret do żądania dopiero w chwili, gdy agent je wysyła.
Przepis drugi: własny interfejs — status wdrożeń Vercel
Druga nowość, którą pokochałem: hooki mogą rysować w Claude Code własne elementy interfejsu. Przykład: za każdym razem, gdy robisz push do main albo mergujesz do main i Vercel wdraża, obok paska statusu pojawia się nowy wiersz z informacjami o wdrożeniu — widoczny wyłącznie wtedy, gdy hook jest aktywny.
Znowu plugin-authoring, tym razem z poleceniem: „Zrób hook, który przy pasku statusu promptu pokaże bieżące wdrożenie Vercel: etap, na którym jest, i jak długo się buduje. Gdy wdrożenie się zakończy, przez następną godzinę trzymaj pasek na dole; kolejne wdrożenia niech się odkładają jeden na drugim. Śmiało przepytaj mnie jak klient i daj kilka prototypów do przetestowania, zanim zaczniesz kodować”.
I to jest istotne: klocków jest na tyle dużo, że niemal wszystko, co da się opisać, da się też zbudować. Claude zadaje mi kilka pytań o wygląd, odpowiadam — i po chwili mam plugin „Vercel deploy status”.
Test: „włącz baner promocyjny, a potem zmerguj do main i wdrażaj”. Na stronie włącza się promocja, a w Claude Code mogę śledzić wdrożenie krok po kroku: kolejne etapy queued → building → ready, przy każdym licznik czasu. Jest przycisk, który chowa pasek i przywraca go na żądanie. Do każdego hooka w pluginie dostaję panel z podglądem danych na żywo — widzę na przykład, że wdrożenie zakończyło się po 5 minutach 50 sekundach. Po odświeżeniu strony baner z ofertą lifetime faktycznie widać.
Przerwa na własne sprawy: szkoła, kohorty, koniec lifetime
(Informacja dodatkowa: poniższy fragment to autopromocja autora — zapowiedzi jego płatnej szkoły i oferty; do samej funkcji function hooks nie wnosi nic.)
Baner pojawił się nieprzypadkowo. Pod koniec przyszłego tygodnia zdejmuję ze strony plan lifetime: każda klasa — obecna i przyszła — będzie sprzedawana osobno. Kto chce mieć wszystko w jednym zakupie, ma na decyzję mniej więcej tydzień. Przez ostatnie dziewięć miesięcy kurs kupiły tysiące inżynierów, w tym wielu z największych firm świata, a ja zaktualizowałem materiał około 250 razy, żeby trzymał poziom rzeczywistości. Sporo technik, których tu uczę, nie znajdziecie nigdzie indziej w internecie.
Idę też w model kohortowy: trzy–cztery razy w roku będę prowadził kohortę poświęconą całemu cyklowi życia oprogramowania tworzonego z agentami AI — najświeższe pomysły na wydawanie i utrzymywanie produkcyjnego kodu pisanego przez agentów. Przykłady aplikacji, które buduję i utrzymuję, są w opisie filmu. Będzie około 25 godzin materiału plus żywe sesje pytań i odpowiedzi. Ponieważ dochodzi komponent live, cena będzie wysoka — a to czyni obecną ofertę lifetime, obejmującą wszystkie przyszłe kohorty w cenie jednej, jeszcze atrakcyjniejszą. Pierwsza kohorta rusza pod koniec września albo na początku października; daty jeszcze doprecyzuję. Ludzie od dawna powtarzają mi: „Ray, podnieś ceny — inni biorą trzy, cztery, pięć razy tyle i oddają jedną dziesiątą wartości”. Pewnie w końcu tak zrobię. Działa 30-dniowa gwarancja zwrotu, z której skorzystało dotąd mniej niż 0,2% kupujących — tak przynajmniej wiem, że klasa trzyma poziom. Wkrótce publikuję też własną infrastrukturę sandboxów dla agentów — jeśli szukacie najkorzystniejszych cenowo na rynku, zajrzyjcie na stronę; jest tam formularz wczesnego dostępu.
Więcej przepisów na hooki
Na jakie jeszcze hooki warto się zdecydować?
- Przebieg próbny dla analiz danych. Zanim ruszy właściwa analiza — dry run. Hook potrafi blokować każdą „prawdziwą” komendę, dopóki nie wykona się wersja próbna pokazująca, jak wyglądałby wynik tej właściwej.
- Krzykliwe ostrzeżenia w interfejsie. Połączone z powyższym: wielkimi czerwonymi literami „DZIAŁASZ NA PRODUKCJI” albo „TRYB PRÓBNY”. Świetnie współgra z funkcją ask, czyli pytaniem do użytkownika.
- Pytania przy rozdętych plikach. Gdy Claude edytuje plik dłuższy niż 1000 linii, hook pyta, czy nie podzielić go na mniejsze. Modele z jakiegoś powodu wciąż lubią produkować monolity po dwa–trzy tysiące linii — tak przynajmniej zapanujemy nad rozrostem. Wystarczy poprosić
plugin-authoringo taki hook. - Hook wołający model i mówiący głosem. „Zrób hook, który pod koniec każdej tury wypowie się na głos, ale najpierw niech model Haiku streści wszystko, co zostało zrobione”.
- Nowe narzędzia i wywołania istniejących. Mam na przykład zegar mierzący czas między turami; jeśli tura trwa dłużej niż 10 minut, można wynik zapisać do osobnego pliku, żeby go nie stracić.
- Audyt dla regulowanych branż. W ochronie zdrowia czy płatności każdy event Claude Code można wraz z wynikami wysyłać do firmowego magazynu logów — pełny ślad tego, co narzędzie robiło.
- Przykład bez kodowania. Jeśli Claude Code pisze i wysyła newslettery, hook może wstrzymać wysyłkę do momentu, gdy narzędziem ask potwierdzisz, że na pewno chcesz wysłać — i gdy upewni się, że naprawdę zdążyłeś przeczytać tekst. Koniec z wysyłką przez przypadek.
Od CLAUDE.md do hooks.json — i hooki jako dobro zespołu
Function hooks to teraz fundamentalny i bardzo potężny mechanizm Claude Code — dlatego właśnie zostały moją ulubioną funkcją: narzędzie można dostosowywać i przekształcać na tyle sposobów, że trudno je zliczyć. Sprytny trik: uruchom plugin-authoring, wskaż swoje pliki CLAUDE.md i zapytaj: „jakie hooki możemy z nich wyciągnąć, żeby zachowanie było niezawodne i deterministyczne?”. Wszystko, co dotąd trzymałeś w CLAUDE.md jako prośby do modelu, możesz systematycznie przenosić do precyzyjnie zdefiniowanego hooks.json.
A ponieważ function hooks żyją w formie pluginów, wystarczy wrzucić je do wspólnego repozytorium na GitHubie — i cały zespół pracuje na identycznych gwarancjach. Przy okazji: jeśli chcesz szkolenie dla całego zespołu lub organizacji prowadzone osobiście przeze mnie, formularz czeka w opisie. Sporo firm ostatnio o to prosi — chodzi o to, by ich inżynierowie szybko doszli do formy i znaleźli workflow Claude Code i Codex, które realnie działają w ich organizacji.
Claude Code przemówił
W międzyczasie zbudowały się dwa zlecone hooki. Po komendzie /reload plugins wpisuję „hello testing 123” — i Claude Code odzywa się domyślnym głosem Apple: plugin się przeładował, licznik wzrósł z 9 do 10. Podglądam kod: w środku jest mały trwały prompt idący do modelu Haiku — systemowy prompt, który napisałem — uruchamiany komendą $model; wynik trafia do syntezatora mowy.
$model otwiera naprawdę ciekawe drzwi. Można na przykład generować z promptu użytkownika kilka słów kluczowych i przez $http — bezpiecznie — odpytywać firmową bazę wiedzy, po czym wstrzykiwać dodatkowy kontekst do sesji, żeby Claude Code zrobił robotę lepiej. Inna odsłona, z użyciem interfejsu i funkcji ask: zanim otworzysz nowy pull request, Claude Code urządzi ci krótki quiz sprawdzający, czy rozumiesz wprowadzone zmiany — dopiero po zaliczeniu puszcza dalej.
Podsumowanie
Dlatego to moja ulubiona funkcja w Claude Code. Widzę setki zastosowań i na pewno dołożę ich całą masę do swoich projektów — żeby wymuszać standardy, procesy i mnóstwo innych rzeczy. Jeszcze więcej szczegółów znajdziecie w Agentic Coding School, w przyszłych kohortach i na żywych sesjach pytań i odpowiedzi. A jeśli chcesz złapać lifetime z dostępem do wszystkich przyszłych klas i kohort w cenie jednego zakupu — to jest właściwy moment.
10 najważniejszych takeaways — z kontekstem zastosowania
1.Myśl o function hooks jak o warstwach pośrednich — przechwytuj każde wywołanie narzędzia
Na czym polega: każde wywołanie narzędzia w Claude Code (np. Bash) można przechwycić i dopasować do wzorca: nazwa narzędzia plus wyrażenie regularne. Potem decydujesz — blokujesz, modyfikujesz albo przepuszczasz dalej. To ten sam schemat myślenia co middleware w Express.js.
Jak stosować: zacznij od jednej reguły krytycznej, np. blokady komend usuwających zasoby (projekty Supabase, gałęzie, katalogi). Opisz ją umiejętności plugin-authoring i przetestuj na komendach, które celowo mają zostać zablokowane.
Na co uważać: zbyt szeroki wzorzec zablokuje też legalne operacje. Zaczynaj od wąskich dopasowań i obserwuj, co faktycznie zostało przechwycone.
2.Reguły z CLAUDE.md przenoś do hooków, gdy mają działać bez wyjątków
Na czym polega: reguły zapisane w CLAUDE.md tracą siłę w miarę zapełniania kontekstu — model o nich zapomina. Hook jest deterministyczny: odpala się przy każdym zdarzeniu, niezależnie od długości sesji.
Jak stosować: przejrzyj CLAUDE.md i wyławiaj zdania w rodzaju „nigdy nie rób X” — to kandydaci do hooks.json. Zostaw tam kontekst domenowy i preferencje, których nie da się zapisać jako reguły.
Na co uważać: migracja wszystkiego naraz utrudni diagnozę, gdy coś przestanie działać. Przenoś reguły partiami i sprawdzaj zachowanie po każdej zmianie.
3.Nie dopuszczaj sekretów do transkryptu sesji — zamazuj je w locie
Na czym polega: hook przechwytuje wejście, wykrywa sekrety po entropii tekstu (oraz e-maile i adresy IP), podmienia je identyfikatorami, a prawdziwe wartości trzyma w magazynie w pamięci. Agent używa identyfikatorów, a hook podstawia sekret dopiero w chwili wysyłki żądania.
Jak stosować: włącz funkcję komendą CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1, uruchom plugin-authoring i poproś o hook wykrywający sekrety po entropii. Przetestuj na kluczu do środowiska testowego — w transkrypcji musi od razu pojawić się podmieniony identyfikator.
Na co uważać: detekcja po entropii daje fałszywe trafienia (hashe, tokeny w logach). Do sekretów używaj magazynu zmiennych w obrębie sesji, nie trwałego między restartami.
4.Zamiast prosić agenta o zmianę narzędzia — nadpisz to narzędzie
Na czym polega: instrukcje typu „używaj MCP Exa, nie wbudowanej wyszukiwarki” agent pod presją kontekstu ignoruje. Pewniejsze rozwiązanie: owinąć wbudowane narzędzie warstwą pośrednią, która sama wybiera backend — jest klucz API, to Exa; nie ma go lub API padło, to powrót do domyślnego narzędzia.
Jak stosować: wskaż narzędzie, z którym agent ciągle ma problem mimo promptów, i opisz w plugin-authoring logikę wyboru wraz z awaryjnym powrotem do wersji domyślnej.
Na co uważać: ścieżka awaryjna musi być naprawdę przetestowana — jeśli fallback nie zadziała, agent zostanie bez narzędzia w krytycznym momencie.
5.Cache’uj powtarzalne operacje we wbudowanym magazynie
Na czym polega: function hooks mają własny magazyn danych. Przed operacją typu web fetch hook sprawdza magazyn: ten adres był już pobierany? Wtedy zwraca kopię i pomija żądanie — klasyczny short-circuit, znany z warstw pośrednich.
Jak stosować: owiń operacje, które agent powtarza i które kosztują (pobieranie stron, zapytania do API), logiką „najpierw magazyn, potem sieć”. Wybierz magazyn zmiennych dla sesji albo trwały między restartami — zależnie od potrzeby.
Na co uważać: w trwałym magazynie nie trzymaj niczego wrażliwego i pilnuj aktualności wpisów — pętla na starych danych potrafi zaprowadzić agenta w błąd.
6.Rozszerzaj interfejs: paski statusu, przyciski, panele podglądu
Na czym polega: hook może rysować w Claude Code dynamiczne elementy — np. wiersz z etapem wdrożenia Vercel (queued/building/ready) i czasem budowania, pojawiający się tylko wtedy, gdy jest potrzebny. Każdy hook w pluginie dostaje panel z danymi podglądanymi na żywo.
Jak stosować: opisz w plugin-authoring, co i gdzie ma być widoczne oraz jak długo ma zostać na ekranie (w demie: godzina po zakończeniu wdrożenia). Poproś o prototypy i pozwól się „przeprowadzić wywiadowi” przed finalnym kodem.
Na co uważać: nadmiar wierszy zaśmieca terminal — każdy element powinien znikać, gdy traci aktualność.
7.Funkcja ask: pytaj człowieka w newralgicznych momentach
Na czym polega: hook może zatrzymać agenta i zadać ci pytanie — przed wysłaniem newslettera, przed edycją pliku dłuższego niż 1000 linii („podzielić na mniejsze?”) albo w formie quizu sprawdzającego, czy rozumiesz zmiany przed otwarciem pull requesta.
Jak stosować: wypisz momenty, w których pomyłka jest droga (wysyłka, refaktoryzacja, wdrożenie), i podepnij pod nie pytania. Próg długości pliku dobierz do konwencji repozytorium.
Na co uważać: zbyt częste pytania przeszkadzają w pracy zamiast pomagać — wyklucz ścieżki, gdzie pytanie jest zbędne (pliki generowane, lock files).
8.Buduj ślad audytowy i tryby bezpieczne dla regulowanych branż
Na czym polega: każdy event Claude Code można wysyłać z wynikami do firmowego magazynu logów — w płatnościach czy medycynie to pełna historia działań agenta. Osobno można zablokować „prawdziwe” komendy do czasu wykonania przebiegu próbnego i dodać wielkie ostrzeżenie „PRODUKCJA” lub „TRYB PRÓBNY”.
Jak stosować: owiń wszystkie narzędzia warstwą raportującą do waszego systemu logów; dla analiz danych ustaw kolejność: najpierw dry run, dopiero potem wykonanie.
Na co uważać: sam log nie może stać się źródłem wycieku — nie zapisuj do niego sekretów ani danych osobowych.
9.$model: tani model jako współpracownik hooka
Na czym polega: hook może wołać model (komenda $model) — np. Haiku streści turę, a wynik trafia do syntezatora mowy i Claude Code mówi do ciebie na głos. Tym samym kanałem można generować słowa kluczowe z promptu i przez $http pobierać kontekst z firmowej bazy wiedzy prosto do sesji.
Jak stosować: do zadań pomocniczych (streszczenia, klasyfikacja, ekstrakcja słów kluczowych) używaj szybkiego, taniego modelu, a droższego zostaw właściwej robocie. Mowa przydaje się przy długich zadaniach uruchamianych w tle.
Na co uważać: każde wywołanie to koszt i opóźnienie — streść tylko to, co istotne, i nie przekazuj w zapytaniach do zewnętrznych systemów danych wrażliwych.
10.Traktuj hooki jak kod zespołowy: wersjonuj i udostępniaj
Na czym polega: function hooks żyją jako pluginy (plugins.json, hooks.json, skrypty), więc można je trzymać we wspólnym repozytorium na GitHubie — i wtedy każdy w zespole ma identyczne blokady i procesy, a nie tylko ten, kto dopisał reguły do prywatnego CLAUDE.md.
Jak stosować: prowadź repozytorium pluginów jak każdy inny kod: recenzje, wersjonowanie, testy. Reguły wspólne dla zespołu definiuj raz, w hookach — nie w dziesięciu osobnych plikach konfiguracyjnych.
Na co uważać: hook wymuszający proces bywa frustrujący, gdy jest zbyt sztywny; zostaw świadomą ścieżkę nadpisania dla uzasadnionych wyjątków.