Plik CLAUDE.md to trwały brief projektu, który Claude Code automatycznie ładuje na początku każdej sesji, ujmując konwencje stosu, polecenia build i test oraz wzorce, które inaczej trzeba by tłumaczyć za każdym razem. Mieści się w hierarchii pamięci: projekt, użytkownik i pliki modularne, wspiera importy @path do dzielenia dużych plików oraz aktualizuje się przez workflow /init, /memory i #.
Wrzucasz Claude Code do swojego repo i prosisz o drobną zmianę. Wybiera zły menedżer pakietów, generuje komponent ignorujący twoje konwencje katalogów i znów dopytuje, którego runnera testów używasz — po raz kolejny. Z modelem nie ma nic nie tak; on po prostu nie ma pojęcia, co znaczy “sposób, w jaki robimy rzeczy tutaj”. Plik CLAUDE.md to naprawia: to trwały brief projektu, który Claude czyta na początku każdej sesji, więc przestaje zgadywać i zaczyna dopasowywać się do twojego stosu.
CLAUDE.md to specjalny plik, który Claude Code automatycznie ładuje do kontekstu. Pomyśl o nim jak o trwałej pamięci, która pomaga Claude zrozumieć specyficzne potrzeby twojego projektu, standardy kodowania i powszechne przepływy pracy.
Kluczowe korzyści:
Trwały kontekst między sesjami
Wiedza zespołowa do udostępniania, zapisana w kontroli wersji
Przejrzyj i dostosuj
Claude przeanalizuje twój projekt i wygeneruje dostosowany plik CLAUDE.md
/init daje ci punkt wyjścia, ale bywa generyczny. Najszybszy sposób, by uzyskać CLAUDE.md faktycznie odzwierciedlający twój projekt, to kazać Claude przeprowadzić audyt repo i napisać go na podstawie dowodów:
Reguły dotyczące konkretnych tematów, zapisane w kontroli wersji, które utrzymują główny CLAUDE.md szczupłym. Każdy plik może wskazać ścieżki, do których się stosuje, za pomocą pola paths we frontmatterze — listy YAML wzorców glob:
---
paths:
- "src/app/api/**"
---
- Validate every request body with a Zod schema
- Return errors as { error: string } with the right status code
Używaj ich dla wytycznych specyficznych dla języka lub obszaru, aby ładowały się tylko wtedy, gdy Claude dotyka pasujących plików. Reguły bez pola paths ładują się bezwarunkowo.
Gdy ciągle łapiesz Claude na łamaniu tej samej konwencji w jednym obszarze kodu, zakoduj ją jako regułę o określonym zakresie, zamiast się powtarzać:
Dla dużych projektów utrzymuj główny CLAUDE.md mały i wciągaj skoncentrowane pliki za pomocą dyrektywy @path/to/import. Zwykłe listy punktów z gołymi ścieżkami nie robią nic — tylko prefiks @ faktycznie importuje plik.
CLAUDE.md z importami @path
# Główna konfiguracja projektu
Zobacz @README.md, aby poznać przegląd projektu, oraz @package.json, aby zobaczyć dostępne polecenia.
## Architektura
Wysokopoziomowy projekt systemu i zasady znajdują się tutaj...
## Szczegółowe konwencje
- Konwencje frontendu @frontend/CLAUDE.md
- Konwencje backendu @backend/CLAUDE.md
- Runbooki infrastruktury @infra/CLAUDE.md
- Reguły testowania @tests/CLAUDE.md
Importy akceptują zarówno ścieżki względne, jak i bezwzględne. Ścieżki względne rozwiązują się względem pliku, który dokonuje importu, a nie twojego katalogu roboczego, a dyrektywy @ wewnątrz ogrodzonych bloków kodu są ignorowane, więc przykłady takie jak ten pozostają bezczynne. Dla osobistych instrukcji, które chcesz współdzielić między worktree’ami gita, importuj z katalogu domowego (na przykład @~/.claude/my-conventions.md).
Gdy główny CLAUDE.md przekroczy kilkaset linii, pozwól Claude zająć się podziałem za ciebie:
Pamiętaj: Dobrze stworzony plik CLAUDE.md to jak posiadanie idealnej dokumentacji, która nigdy się nie gubi i jest zawsze dostępna dokładnie wtedy, gdy Claude jej potrzebuje.