Pięć nawyków, pięć komend
Każda lista nawyków z Claude Code mówi ci, co robić. Ta zamienia każdy nawyk w komendę, którą uruchamia Claude Code, więc nawyk działa niezależnie od tego, czy model go przeczyta. Przetestowaliśmy wszystkie pięć na prawdziwym repo, ledgerly, małym API do faktur w Node 20 i TypeScript, z Claude Code 2.1.294.
Powód leży w best practices Anthropic: linia w stylu "Always typecheck before you finish" w twoim CLAUDE.md "works most of the time, not every time". Pięć komend poniżej to /goal, hook PreToolUse, /context z /clear, /skill-doctor oraz subagent recenzent tylko do odczytu.
Dlaczego zapisany nawyk się wymyka
CLAUDE.md to plik z instrukcjami, który Claude czyta na początku każdej sesji, readme napisane dla nowego członka zespołu: komendy, konwencje i reguły. Tam trafia większość nawyków, często te najważniejsze wielkimi literami, jak "NEVER edit src/store/migrations.ts".
Dokumentacja pamięci Anthropic jasno mówi, czym jest ten plik: Claude czyta go jako kontekst, a nie jako wymuszoną konfigurację. Każda linia to rada ważona względem zadania, które ma przed sobą. To różnica między checklistą code review na stronie wiki a kontrolą w twoim pipeline CI: pierwsza zależy od tego, czy ktoś ją przeczyta, druga i tak się uruchomi.
Ćwiczenie: otwórz swój CLAUDE.md i zaznacz każdą linię, która musi działać za każdym razem. Resztę zostaw tam, gdzie jest, bo ten plik nadal jest dobrym miejscem na to, czego Claude nie wywnioskuje z twojego kodu, a dokumentacja zaleca poniżej 200 linii na plik.
Nawyk pierwszy: powiedz, jak wygląda "gotowe"
Claude kończy, gdy praca wygląda na skończoną. Jeśli nic nie mówi mu, czy naprawdę jest skończona, jak zauważają best practices Anthropic, to ty stajesz się zestawem testów.
/goal ustawia metę raz. Po każdej turze mały, szybki model czyta rozmowę i odpowiada: spełnione, jeszcze nie spełnione albo niemożliwe. Nie potrafi uruchamiać komend ani czytać plików, więc zapisz warunek tak, żeby mógł go pokazać sam output Claude, na przykład pełny wynik testów.
| Przebieg na ledgerly | Co zobaczyliśmy |
|---|---|
| Zwykła sesja, ta sama prośba o funkcję | Testy poszły w zwiniętym wywołaniu narzędzia; odpowiedź mówiła "pnpm test passes (37/37)" |
Z /goal i warunkiem "full pnpm test output printed" |
Odpowiedź wypisała cały przebieg, "Tests 44 passed (44)", potem "Goal achieved (45s · 1 turn · 5.1k tokens)" |
Wpisz samo /goal, żeby zobaczyć status, a /goal clear, żeby go usunąć. Do jednolinijkowej poprawki nie jest potrzebny; według dokumentacji liczy się najbardziej przy długich przebiegach, gdzie Claude czasem kończy turę z otwartymi punktami.
Nawyk drugi: reguła, której nie da się złamać
Reguła wielkimi literami jest przestrzegana przez większość czasu i właśnie to jest problemem. Hook to mały skrypt, który Claude Code uruchamia sam w ustalonym momencie; hook PreToolUse działa przed każdym wywołaniem narzędzia. Nasz czyta ścieżkę pliku i gdy jest to src/store/migrations.ts, wypisuje "migrations.ts is append-only: add a new migration file instead" i kończy się kodem 2. Przewodnik po hookach mówi, że kod wyjścia 2 blokuje wywołanie i odsyła komunikat do Claude, a blokada działa nawet przy wyłączonych pytaniach o uprawnienia.
W naszych przebiegach: z regułą w CLAUDE.md Claude sam odmówił edycji. Po usunięciu reguły Claude dwa razy sięgnął po plik migracji, a hook zablokował obie edycje; Claude zedytował resztę i zgłosił "A project hook blocked both of my edits to that file." W dwóch późniejszych przebiegach najpierw przeczytał skrypt hooka i w ogóle nie próbował tego pliku.
Hook blokuje tylko to, co potrafi dopasować, ścieżkę lub komendę. Reguły oparte na osądzie, jak "pisz czysty kod", zostają w CLAUDE.md, a wąskie dopasowanie sprawia, że hook nie blokuje twojej własnej pracy.
Nawyk trzeci: jedno zadanie, jeden kontekst
Kontekst to wszystko, co model widzi w każdej turze: twoje instrukcje, przeczytane pliki i cała rozmowa. /context pokazuje go jako siatkę; /clear opróżnia rozmowę, a pliki i ustawienia zostają.
/context na ledgerly |
Razem | Wiadomości |
|---|---|---|
| Po skończonym zadaniu | 57.5k z 1m tokenów | 26.4k tokenów |
Po /clear |
31.1k z 1m tokenów | 130 tokenów |
Dokumentacja: /clear między niepowiązanymi zadaniami nic nie kosztuje, a po dwóch nieudanych poprawkach czyścisz kontekst i piszesz lepszy prompt. W środku zadania użyj zamiast tego /compact z fokusem.
Nawyk czwarty: ładuj tylko to, czego używasz
Skill to spakowana instrukcja, którą Claude ładuje, gdy zadanie do niej pasuje. Pełny skill ładuje się tylko wtedy, gdy działa, ale jego jednolinijkowy wpis jest w prompcie w każdej turze, a budżet na te wpisy to około 1% okna kontekstu, więc najrzadziej używane skille tracą opisy jako pierwsze.
/skill-doctor wypisuje każdy skill z jego kosztem kontekstu i tym, jak często go używałeś. Na naszej maszynie zgłosił:
| Rodzaj | Załadowane, ale nigdy nie wywołane |
|---|---|
| Skille osobiste | 13 |
| Zsynchronizowane z claude.ai | 14 |
| Skille z pluginów | 25 |
Wymienił też 4 pluginy nieużywane od jakiegoś czasu. Wyłącz skill w /skills; zsynchronizowane skille wracają, jeśli je usuniesz, więc wyłącz je na claude.ai; skille z pluginów idą przez menedżera pluginów. Jeden wpis na liście jest mały, więc to usuwa szum, a nie zwalnia połowy twojego kontekstu.
Nawyk piąty: świeże oczy na diffie
Subagent to druga sesja Claude uruchomiona do jednego zadania, z własnym pustym kontekstem, która oddaje streszczenie. Dokumentacja Anthropic mówi to wprost: oddanie tego samego zadania subagentowi nie poprawia odpowiedzi, ale świeży recenzent pomaga, bo nie widział twojego rozumowania.
Nasz recenzent mieszka w .claude/agents/reviewer.md z narzędziami tylko do odczytu: Read, Grep, Glob, Bash(git diff:*) i Bash(git status:*). Na diffie z zaległymi fakturami własna recenzja sesji autora znalazła prawdziwy błąd: faktury z tą samą datą płatności były sortowane po id jako tekst. Recenzent znalazł ten sam błąd i brakujący test w 28 sekund, a potem sprawdził po kolei każdą konwencję z README. Twierdził też, że sprawdzenie typów przeszło czysto, czego jego narzędzia nie mogły uruchomić, a główna sesja oznaczyła to jako niezweryfikowane. Wołaj go raz na funkcję, przed merge'em.
Który nawyk ustawić najpierw
Zacznij od hooka, na regule, która w twoim repo została już złamana więcej niż raz. /clear i /skill-doctor nic nie kosztują. /goal zachowaj na długie przebiegi, a recenzenta na merge. Zasada do zapamiętania: jeśli nawyk ma działać za każdym razem, zrób z niego coś, co Claude Code uruchamia, a nie coś, co Claude czyta.
AIDive