Claude Code: CLAUDE.md i wzorce pracy
Jak pisać CLAUDE.md żeby Claude go nie ignorował. Workflow patterns, typowe błędy, rekomendacje community.
CLAUDE.md to instrukcja dla Claude Code, ale jeśli jest za długa, model ignoruje połowę reguł. Tu opisuję jak ją pisać, żeby faktycznie działała.
Powrót do głównego artykułu: Jak wymusić jakość w Claude Code
CLAUDE.md vs settings.json
Myśl o tym tak:
- settings.json — co Claude może robić (uprawnienia, model, narzędzia)
- CLAUDE.md — co Claude powinien wiedzieć (konwencje, architektura, gotchas)
Settings kontroluje zachowanie. CLAUDE.md kontroluje wiedzę.
Gdzie Claude szuka CLAUDE.md
Globalne, wszystkie projekty"] --> B["./CLAUDE.md
Root projektu, commitowany"] B --> C["./CLAUDE.local.md
Osobisty, git-ignored"] B --> D["./src/CLAUDE.md
Per-katalog, ładowany on-demand"]
Wszystkie pliki CLAUDE.md z powyższych lokalizacji są ładowane razem. Parent directories też — przydatne w monorepo (root/CLAUDE.md + root/packages/api/CLAUDE.md).
Budżet instrukcji: 150-200 reguł
To najważniejsza rzecz do zapamiętania. Claude Code ma prompt systemowy, który sam zajmuje ~50 instrukcji. Zostaje ci ~150 instrukcji, zanim compliance zaczyna spadać. Po przekroczeniu tego progu Claude zaczyna ignorować reguły — nie celowo, po prostu gubi się w szumie.
Co z tego wynika: jeśli twój CLAUDE.md ma 500 linii, skróć go. Bezlitośnie.
Co wrzucać do CLAUDE.md
Reguły, których Claude nie może odgadnąć z kodu:
- Komendy bash specyficzne dla projektu (
npm run test:e2e,make proto) - Reguły stylu kodu, które różnią się od domyślnych (
use spaces not tabs, 4-width) - Instrukcje testowania (
always run pytest -x before committing) - Etykieta repo (
squash merge only,prefix commits with JIRA-123) - Decyzje architektoniczne (
we use repository pattern, not active record) - Gotchas (
the CI uses Node 20, not 22 — don't use Node 22 features) - Quirks środowiska deweloperskiego (
run docker compose up before testing)
Czego NIE wrzucać
Rzeczy, które Claude może sam wywnioskować:
- Standardowe konwencje języka (PEP 8, Airbnb JS style)
- Opisy plików po kolei (Claude czyta drzewo projektu)
- Długie wyjaśnienia API (linkuj zamiast wklejać)
- Informacje, które się szybko zmieniają
- Rzeczy oczywiste z kodu
Test: jeśli Claude robi coś poprawnie BEZ instrukcji, nie dodawaj jej do CLAUDE.md. Zamień na hook.
Składnia importu
Zamiast wklejać 200 linii do CLAUDE.md, importuj:
Przeczytaj @README.md żeby zrozumieć strukturę projektu.
Konwencje Git: @docs/git-instructions.md
Osobiste overrides: @~/.claude/my-project-instructions.md
@ścieżka wstawia zawartość pliku inline. Dobre do rozbicia długiego CLAUDE.md na mniejsze, tematyczne pliki.
Wzmacnianie reguł
Claude lepiej respektuje reguły z mocnym językiem:
# Dobrze — jasny nakaz
IMPORTANT: Always run `npm run lint` before committing.
YOU MUST use conventional commit format.
# Źle — sugestia
It would be nice to run lint before commits.
Consider using conventional commits.
IMPORTANT i YOU MUST nie są magicznymi słowami, ale statystycznie poprawiają adherence.
Workflow patterns
Krótkie, skupione sesje
Reddit consensus: krótkie sesje biją długie maratony. Po 30-40 minutach kontekst się wypełnia, jakość spada. Zamiast ciągnąć jedną sesję godzinami:
- Zrób checkpoint (commit)
/clearalbo zamknij i otwórz nową sesję- Kontynuuj z czystym kontekstem
Plan Mode
Shift+Tab przełącza na Plan Mode (albo Ctrl+G otwiera plan w edytorze). W Plan Mode Claude:
- Analizuje problem bez wykonywania zmian
- Proponuje plan jako tekst
- Czeka na twoje zatwierdzenie
Dobre na trudne zadania — zamiast pozwalać Claude’owi od razu pisać kod, najpierw ustalcie plan.
Writer/Reviewer pattern
Dwie oddzielne sesje:
- Writer — pisze kod
- Reviewer — sprawdza w osobnej sesji (z czystym kontekstem)
Reviewer nie ma kontekstu writera, więc ocenia kod „świeżym okiem”. Oba mogą pracować na tym samym repo.
Subagenty do badania
Zamiast kazać Claude’owi „zbadaj X” w głównej sesji (co zużywa kontekst), wpisz:
Użyj subagentów do zbadania jak działa moduł auth
Subagent działa w oddzielnym kontekście i zwraca skondensowany wynik.
Typowe błędy
Kitchen sink session
Mieszanie niepowiązanych zadań w jednej sesji. Fix: /clear między tematami.
Poprawianie w kółko
Jeśli Claude 2+ razy nie trafia z poprawką — nie poprawiaj dalej. Fix: /clear, napisz lepszy prompt od zera. Zaczynanie od nowa ma wyższy success rate niż walka z degradowaną sesją.
Przeładowany CLAUDE.md
Za dużo reguł, Claude ignoruje połowę. Fix: wyrzuć wszystko co Claude robi dobrze bez instrukcji. Zamień reguły na hooki tam gdzie to możliwe.
Trust-then-verify gap
Claude mówi „gotowe” a ty nie sprawdzasz. Fix: zawsze podawaj testy lub sposób weryfikacji. „Uruchom npm test po zmianach” w CLAUDE.md.
Rekomendowany CLAUDE.md
Przykład zwięzłego, skutecznego CLAUDE.md:
# Projekt: nazwa-projektu
## Komendy
- `npm run dev` — dev server
- `npm run test` — testy (uruchom przed commitem)
- `npm run lint` — linting
## Konwencje
- Conventional Commits: feat/fix/docs/refactor
- TypeScript strict mode, bez any
- Testy w __tests__/ obok kodu
## Architektura
- Backend: FastAPI + PostgreSQL
- Frontend: Next.js 15 + Tailwind
- Monorepo z pnpm workspaces
## Gotchas
- CI wymaga Node 20, nie używaj API z Node 22
- Baza testowa wymaga `docker compose up db` przed testami
- IMPORTANT: nigdy nie commituj plików .env
@docs/api-conventions.md
~30 linii. Konkretne komendy, reguły, architektura, gotchas. Zero fluffu.