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, który ujmuje twój stos, polecenia build/test/lint i konwencje, które Claude ciągle łamie
Hierarchię pamięci (projekt, użytkownik i modularne .claude/rules/) oraz kiedy używać której
Prawdziwą składnię importów @path do podzielenia rozdętego CLAUDE.md na skoncentrowane pliki
Workflow /init, /memory i # do utrzymywania pamięci na bieżąco podczas kodowania
Prompty do skopiowania, które sprawią, że Claude sam napisze i przerefaktoruje swoje pliki pamięci
Czym jest CLAUDE.md?
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
Automatycznie ładowany przy uruchamianiu
Hierarchiczny dla złożonych projektów
Przejdź do swojego projektu
Uruchom Claude Code
Zainicjuj CLAUDE.md
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:
Krótki opis tego, co robi ten projekt i jaki jest jego główny cel.
- Frontend: React z TypeScript
- Backend: Node.js z Express
- Baza danych: PostgreSQL
- Zarządzanie stanem: Redux Toolkit
- `src/` : Główny kod źródłowy
- `src/components/` : Komponenty React
- `src/api/` : Kod klienta API
- `src/utils/` : Funkcje narzędziowe
- `npm run dev` : Uruchom serwer deweloperski
- `npm run build` : Zbuduj dla produkcji
- `npm test` : Uruchom pakiet testów
- `npm run lint` : Uruchom linter
- `npm run type-check` : Sprawdź typy TypeScript
- Używaj TypeScript dla wszystkich nowych plików
- Preferuj komponenty funkcyjne z hookami
- Używaj opisowych nazw zmiennych
- Pisz testy dla nowych funkcji
- Podążaj za istniejącymi wzorcami w kodzie
- Zmienne środowiskowe są w `.env.example`
- Zawsze uruchamiaj testy przed commitowaniem
- Używaj gałęzi funkcjonalnych do nowej pracy
- Dokumentacja API w `/docs/api.md`
- [ ] Zaimplementuj uwierzytelnianie użytkownika
- [ ] Dodaj walidację danych do formularzy
- [ ] Popraw obsługę błędów
Wielodostępna platforma e-commerce SaaS obsługująca operacje B2B i B2C.
Zbudowana z architekturą mikrousług, wdrożona na AWS ECS.
- Next.js 16 z App Router
- TypeScript w trybie strict
- Tailwind CSS + shadcn/ui
- React Query do pobierania danych
- Zustand do zarządzania stanem
- Usługa użytkowników: Node.js + Express + TypeORM
- Usługa produktów: Go + Gin + GORM
- Usługa zamówień: Python + FastAPI + SQLAlchemy
- Usługa płatności: Java + Spring Boot
- AWS ECS do orkiestracji kontenerów
- PostgreSQL (RDS) dla danych relacyjnych
- Redis do cachowania i sesji
- ElasticSearch do wyszukiwania produktów
- S3 do przechowywania mediów
## Przepływ pracy deweloperskiej
# Uruchom wszystkie usługi
# Uruchom konkretną usługę
docker-compose up user-service
- Testy jednostkowe: Jest dla JS/TS, Go test, pytest
- Testy integracyjne: Supertest + Docker
- Min. pokrycie: 80% dla nowego kodu
1. Utwórz gałąź funkcjonalną z develop
2. Format nazwy: feature/JIRA-123-krotki-opis
3. Format commit: "type(scope): opis"
4. Otwórz PR przeciwko develop
5. Wymagaj 2 zatwierdzeń + przechodzącego CI
- GET /api/v1/resources - Lista z paginacją
- GET /api/v1/resources/:id - Pojedynczy zasób
- POST /api/v1/resources - Utwórz nowy
- PUT /api/v1/resources/:id - Pełna aktualizacja
- PATCH /api/v1/resources/:id - Częściowa aktualizacja
- DELETE /api/v1/resources/:id - Usuwanie miękkie
- Authorization: Bearer {token}
- X-Tenant-ID: {tenantId}
## Kwestie bezpieczeństwa
- Wszystkie punkty końcowe wymagają uwierzytelniania oprócz /health
- Używaj zapytań sparametryzowanych aby zapobiec wstrzyknięciu SQL
- Waliduj wszystkie wejścia schematami Joi/Zod
- Ograniczenie prędkości: 100 żąd/min na użytkownika
- CORS skonfigurowany tylko dla konkretnych domen
- Zapytania do bazy danych muszą używać indeksów
- Implementuj paginację dla punktów końcowych list
- Cachuj żądania GET w Redis (5 min TTL)
- Ładuj leniwie obrazy i komponenty
- Budżet rozmiaru pakietu: 200KB dla początkowego ładowania
- Webhooki płatności czasem przekraczają limit czasu - logika ponawiania w miejscu
- Indeksowanie wyszukiwania ma 2-3 minutowe opóźnienie
- Niektóre starsze punkty końcowe używają camelCase zamiast snake_case
## Monitorowanie i debugowanie
- Logi: CloudWatch (wyszukaj po X-Request-ID)
- APM: DataDog (user-service.datadog.dashboard)
- Błędy: Sentry (filtruj po usłudze + env)
- Lokalne debugowanie: Patrz /docs/debugging.md
Claude Code obsługuje wiele lokalizacji pamięci dla różnych zakresów:
Lokalizacja : ./CLAUDE.md
Instrukcje zespołowe współdzielone w kontroli wersji:
Decyzje architektoniczne
Standardy kodowania
Polecenia budowania
Wzorce API
# Lub dodaj szybkie notatki
# Zawsze używaj async/await zamiast callbacków
Lokalizacja : ~/.claude/CLAUDE.md
Osobiste preferencje dla wszystkich projektów:
Twój styl kodowania
Preferowane narzędzia
Osobiste skróty
Ustawienia IDE
- Używaj 2-spacjowego wcięcia
- Zawsze destrukturyzuj importy
- Formatuj przy zapisywaniu
Lokalizacja : ./frontend/CLAUDE.md, ./backend/CLAUDE.md
Kontekst specyficzny dla modułu w podkatalogach:
Wzorce komponentów
Dokumentacja usług
Zależności modułu
Lokalne polecenia
Lokalizacja : ./.claude/rules/*.md
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:
- 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ć:
Najszybszy sposób dodawania wspomnień podczas kodowania:
Wpisz # po którym następuje twoja notatka
# Metoda UserService.authenticate wymaga ważnego tokenu JWT
Wybierz lokalizację pamięci
Claude poprosi cię o wybranie miejsca zapisu:
Pamięć projektu (./CLAUDE.md)
Pamięć użytkownika (~/.claude/CLAUDE.md)
Kontynuuj pracę
Pamięć jest natychmiast dostępna
Szybkie wzorce pamięci
# Polecenie budowania to 'npm run build:prod' dla produkcji
# Klucze API są w Vault, nie w plikach .env
# Zawsze uruchamiaj migracje przed uruchomieniem aplikacji
# Funkcja calculateTax ma znany błąd z liczbami dziesiętnymi
# Preferuj kompozycję nad dziedziczeniem w tym kodzie
# Skontaktuj się z @john w sprawie zmian schematu bazy danych
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.
# Główna konfiguracja projektu
Zobacz @README.md, aby poznać przegląd projektu, oraz @package.json, aby zobaczyć dostępne polecenia.
Wysokopoziomowy projekt systemu i zasady znajdują się tutaj...
- 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).
Notatka
Rzadko potrzebujesz importów tylko po to, by dotrzeć do podkatalogów. Claude Code ładuje w całości każdy CLAUDE.md w hierarchii katalogów powyżej twojego katalogu roboczego przy starcie, a pliki CLAUDE.md w katalogach podrzędnych ładuje na żądanie, gdy Claude po raz pierwszy czyta w nich plik. Używaj importów do komponowania skoncentrowanych plików, a nie do wymuszania działania odkrywania.
Gdy główny CLAUDE.md przekroczy kilkaset linii, pozwól Claude zająć się podziałem za ciebie:
# Aplikacja e-commerce Next.js
- App Router (nie Pages Router)
- Komponenty serwera domyślnie
- Komponenty klienta tylko gdy potrzebne
- Stan serwera: React Query + Komponenty serwera
- Stan klienta: Zustand dla globalnego, useState dla lokalnego
- Stan formularza: React Hook Form + Zod
## Podejście do stylowania
- Tailwind CSS dla narzędzi
- Moduły CSS dla złożonych komponentów
- Framer Motion dla animacji
- Projekt responsywny-pierwsz
// Preferuj ten wzorzec dla komponentów
export function ComponentName ({ prop1 , prop2 } : Props ) {
// Wczesne zwroty dla przypadków skrajnych
- Używaj komponentów serwera dla początkowych danych
- React Query dla aktualizacji po stronie klienta
- Loading.tsx dla granic suspense
- Error.tsx dla granic błędów
- Python 3.11+ z podpowiedziami typów
- Black do formatowania (długość linii 88)
- Widoki oparte na klasach dla CRUD
- Widoki oparte na funkcjach dla złożonej logiki
- Serializery obsługują całą walidację
- Menedżerowie dla złożonych zapytań
- Nigdy nie edytuj migracji po wdrożeniu
- Używaj select_related/prefetch_related
- Indeksuj klucze obce i pola filtrów
- URL-e RESTful (/api/v1/users/)
- camelCase dla JSON (użyj djangorestframework-camel-case)
- Paginacja na wszystkich punktach końcowych list
- Standardowy format błędów
- Test jednostkowy całej logiki biznesowej
- Test integracyjny wszystkich punktów końcowych
- Używaj factory_boy dla danych testowych
- Mockuj usługi zewnętrzne
# Infrastruktura jako kod
- Moduły w katalogu /modules
- Środowiska w /environments
- Stan w S3 z blokadą DynamoDB
- Zawsze uruchamiaj plan przed apply
- Jedna przestrzeń nazw na środowisko
- ConfigMaps dla konfiguracji
- Secrets dla wrażliwych danych
1. Lint (terraform fmt -check)
2. Walidacja (terraform validate)
3. Skan bezpieczeństwa (tfsec)
4. Plan (zapisz plik planu)
5. Ręczne zatwierdzenie dla prod
## Konfiguracja monitorowania
- Grafana dla wizualizacji
- Alert przy naruszeniach SLI
- Runbooki w /docs/runbooks
Najlepsze praktyki CLAUDE.md
Bądź konkretny : “Używaj 2-spacjowego wcięcia” nie “formatuj ładnie”
Dołączaj przykłady : Pokaż rzeczywiste wzorce kodu, które chcesz stosować
Bądź aktualny : Aktualizuj w miarę ewolucji projektu
Dokumentuj pułapki : Znane problemy, obejścia i przypadki brzegowe
Linkuj zasoby : Referencje do dokumentacji, wiki i narzędzi
Używaj struktury : Organizuj z jasnymi nagłówkami i sekcjami
Utrzymuj skanowalność : Używaj punktów i bloków kodu
Kontrola wersji : Śledź zmiany aby zrozumieć ewolucję
├── CLAUDE.md # Kontekst główny
│ ├── CLAUDE.md # Specyficzny dla frontendu
│ └── CLAUDE.md # Wzorce komponentów
│ ├── CLAUDE.md # Specyficzny dla backendu
│ └── CLAUDE.md # Wzorce usług
└── CLAUDE.md # Kontekst DevOps
Zarządzanie rozmiarem kontekstu
Pliki CLAUDE.md zużywają tokeny z okna kontekstowego Claude. Utrzymuj je skoncentrowane:
Staraj się o 200-500 linii na plik
Używaj importów dla organizacji modularnej
Usuwaj przestarzałe informacje
Skupiaj się na wzorcach, nie wyczerpujących listach
Utwórz początkowy CLAUDE.md razem
Przeprowadź sesję zespołową aby uzgodnić zawartość
Udokumentuj istniejące konwencje
Wyjaśnij niejednoznaczne wzorce
Przeglądaj w pull requestach
Traktuj zmiany CLAUDE.md jak kod
Wymagaj zatwierdzenia zespołu dla aktualizacji
Prowadź historię dlaczego zmiany zostały wprowadzone
Regularna konserwacja
Przeglądaj kwartalnie
Usuwaj przestarzałe informacje
Dodawaj nowe wzorce w miarę ich pojawiania się
Narzędzie onboardingu
Nowi deweloperzy czytają CLAUDE.md jako pierwsi
Używaj go podczas przeglądów kodu
Referencuj go w dyskusjach
Objawy : Claude nie wydaje się świadomy kontekstu twojego projektu
Rozwiązania :
Sprawdź czy nazwa pliku to dokładnie CLAUDE.md (wrażliwy na wielkość liter)
Sprawdź lokalizację pliku (główny katalog projektu)
Uruchom ponownie sesję Claude Code
Uruchom /memory aby zweryfikować zawartość
Objawy : Claude podąża za starymi wzorcami pomimo aktualizacji
Rozwiązania :
Wyczyść konwersację z /clear
Sprawdź czy są wielokrotne pliki CLAUDE.md
Sprawdź czy ścieżki importów są poprawne
Używaj bardziej konkretnego języka (“ZAWSZE”, “NIGDY”)
Objawy : Claude wspomina o limitach okna kontekstowego
Rozwiązania :
Podziel duże CLAUDE.md na moduły
Usuń rozwlekłe sekcje
Używaj zwięzłych punktów
Skupiaj się na wzorcach nad przykładami
Integracja IDE Połącz Claude Code z VS Code, JetBrains i innymi edytorami
Polecenie Cel /initWygeneruj początkowy CLAUDE.md /memoryEdytuj pliki pamięci #Dodaj szybką notatkę pamięci /clearWyczyść kontekst konwersacji @CLAUDE.mdReferencja pamięci w promptach
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.