Blog JSystems - uwalniamy wiedzę!

Szukaj

Kurs Claude Code — Lekcja 4 z 11

Ten artykuł jest częścią bezpłatnego kursu Claude Code — największej polskojęzycznej serii 11 lekcji dla programistów. Od pierwszego uruchomienia do autonomicznych agentów AI.

<-- Spis wszystkich lekcji
<-- Lekcja 3: prompt engineering dla Claude

CLAUDE.md - jak skonfigurować Claude Code żeby znał Twój projekt jak własną kieszeń

Claude CodeSeria Claude Code · JSystems

Claude Code bez pliku CLAUDE.md jest jak nowy programista bez onboardingu - marnuje Twój czas na pytania które mógłby sam znaleźć. Każde zadanie zajmuje 3× dłużej, bo agent nie wie jak działa Twój projekt, jakie masz konwencje, ani jak uruchomić testy.

Jeden dobrze napisany plik zmienia wszystko. Claude zaczyna rozumieć architekturę, zna Twoje zasady nazewnictwa, wie gdzie szukać konfiguracji. Przestajesz powtarzać te same rzeczy w każdym prompcie.

Czego się nauczysz z tego artykułu:

Krok 1 - Zrozum czym jest CLAUDE.md

Wyobraź sobie nowego developera w zespole. Żeby był produktywny, potrzebuje: zrozumieć architekturę projektu, poznać konwencje kodu, wiedzieć jak uruchamiać testy i deploye, znać specyficzne decyzje projektowe i ograniczenia. Bez onboardingu każde zadanie zajmuje 3× dłużej. CLAUDE.md to właśnie onboarding dla Claude Code - bez niego agent działa po omacku.

Co to znaczy? CLAUDE.md to zwykły plik tekstowy w formacie Markdown (jak README.md który zapewne znasz). Claude Code automatycznie wczytuje go za każdym razem gdy otwierasz projekt - to jakby agent "wczytywał briefing" przed każdą sesją pracy. Piszesz instrukcje raz, a obowiązują zawsze.

Claude Code szuka CLAUDE.md w kilku miejscach (hierarchia):

  • ~/.claude/CLAUDE.md - globalne ustawienia użytkownika (dla wszystkich projektów)
  • ./CLAUDE.md - ustawienia projektu (katalog główny)
  • ./src/CLAUDE.md - ustawienia dla podkatalogu
Co to znaczy? Znak ~ to skrót od "katalogu domowego" - na Windows to C:\Users\TwojeImie, na Linux/Mac to /home/TwojeImie. Plik globalny (~/.claude/CLAUDE.md) zawiera preferencje wspólne dla wszystkich projektów, a projektowy (./CLAUDE.md) - szczegóły konkretnego projektu.

Wolisz nauczyć się tego z doświadczonym trenerem w formie warsztatowej? Szkolenie Claude Code z terminem gwarantowanym -->

Hierarchia w praktyce: jak Claude scala te pliki

Claude Code nie wybiera jednego pliku CLAUDE.md — on je łączy. Przy starcie sesji wczytuje po kolei: plik globalny (~/.claude/CLAUDE.md), plik w katalogu głównym projektu (./CLAUDE.md), a gdy pracuje w podkatalogu — także pliki CLAUDE.md napotkane po drodze w górę drzewa. Wszystkie obowiązują jednocześnie.

Reguły nakładają się addytywnie, a nie „albo-albo”: globalne preferencje (np. „odpowiadaj po polsku”) współgrają z regułami projektu (np. „testy przez pytest”), a te z regułami podkatalogu (np. „w module płatności nigdy nie loguj numerów kart”). Im bliżej pliku, nad którym Claude pracuje, tym bardziej szczegółowa reguła — i to ona wygrywa, gdy dwie się przenikają.

💡 Co to znaczy? W firmach dochodzi jeszcze jeden, najwyższy poziom — reguły zarządzane przez organizację (enterprise policy), które administrator wdraża na wszystkich maszynach, np. zakaz wysyłania kodu do zewnętrznych usług. Pełna kolejność od ogólnych do szczegółowych: organizacja --> użytkownik --> projekt --> podkatalog.

Zagnieżdżone CLAUDE.md — porządek w dużym repo

W większym projekcie albo monorepo jeden plik na wszystko szybko puchnie. Rozwiązaniem są zagnieżdżone pliki CLAUDE.md — osobny w każdym module:

repo/
├─ CLAUDE.md            # zasady wspólne dla całego repo
├─ backend/
│  └─ CLAUDE.md         # konwencje API, baza, migracje
├─ frontend/
│  └─ CLAUDE.md         # komponenty React, design system
└─ infra/
   └─ CLAUDE.md         # Terraform, deploy, sekrety

Plik z podkatalogu Claude wczytuje dopiero wtedy, gdy faktycznie sięga po pliki w tym module — nie obciąża kontekstu, gdy pracujesz gdzie indziej. Dzięki temu reguły trzymasz blisko kodu, którego dotyczą.

Reguła kciuka: w głównym CLAUDE.md zostaw to, co dotyczy wszystkich (komendy, architektura, „czego nie robić”), a szczegóły danego modułu opisz w jego własnym pliku.

Krok 2 - Napisz strukturę CLAUDE.md krok po kroku

Dobry plik CLAUDE.md ma kilka sekcji. Każda z nich odpowiada na inne pytanie które Claude mógłby zadać. Poniższy przykład to szablon dla projektu e-commerce z FastAPI i React - dostosuj do swojego projektu.

Poniższy kod to kompletny przykład pliku CLAUDE.md. Czytaj komentarze - wyjaśniają po co jest każda sekcja i co powinieneś w niej napisać dla swojego projektu:

# Projekt: [Nazwa]

## Architektura
- Backend: FastAPI + PostgreSQL + Redis
- Frontend: React 18 + TypeScript + Zustand
- Deployment: Docker + Kubernetes (GKE)
- Komunikacja: REST API + WebSocket dla real-time

## Konwencje kodu

### Python
- Type hints obowiązkowe wszędzie
- Formatowanie: black + isort
- Docstrings w stylu Google
- Testy: pytest, coverage min 80%

### TypeScript
- Strict mode włączony
- Komponenty jako function components z hooks
- Nazewnictwo: PascalCase dla komponentów, camelCase dla funkcji

## Komendy

### Uruchomienie lokalne
docker-compose up -d
cd backend && uvicorn main:app --reload
cd frontend && npm run dev

### Testy
# Backend
pytest tests/ -v --cov=app
# Frontend
npm test -- --coverage

### Deploy
./scripts/deploy.sh [staging|production]

## Kluczowe decyzje architektoniczne
- Używamy CQRS dla modułu zamówień -  nie mieszaj command i query handlers
- Cache Redis tylko dla danych które mogą być stale -  nigdy dla danych finansowych
- Wszystkie zewnętrzne API calls przez dedicated service layer w /services/
- Baza danych: nie używaj ORM dla raportów -  pisz surowe SQL z pomocą sqlalchemy.text()

## Czego NIE robić
- Nie commituj sekretów -  używaj .env.example
- Nie modyfikuj migracji które są już na produkcji
- Nie dodawaj globalnego state w React -  użyj Zustand store z slice pattern
- Nie używaj `any` w TypeScript -  zawsze zdefiniuj typ

## Kontekst biznesowy
System e-commerce dla B2B. Kluczowe:
- Wielowalutowość (PLN, EUR, USD)
- Ceny netto dla firm, faktury VAT generowane automatycznie
- Terminy płatności 14/30/60 dni -  kluczowe dla modułu fakturowania

Po zapisaniu tego pliku jako CLAUDE.md w głównym katalogu projektu, Claude będzie wczytywał go automatycznie przy każdym starcie sesji.

Co to znaczy? Sekcja "Czego NIE robić" jest równie ważna co reszta. Claude bez tej listy może "naprawić" coś co celowo zostawiłeś w danym stanie, lub zrefaktorować kod w sposób który łamie Twoje konwencje. Explicit zakazy działają znacznie lepiej niż nadzieja że Claude "się domyśli".

Krok 3 - Skonfiguruj plik globalny dla wszystkich projektów

Plik globalny (~/.claude/CLAUDE.md) zawiera preferencje które chcesz stosować we wszystkich projektach. Tworzysz go raz - działa zawsze, niezależnie od projektu.

Poniższy kod to przykład pliku globalnego. Ustaw tutaj swoje osobiste preferencje pracy - Claude zastosuje je we wszystkich projektach bez konieczności powtarzania w każdym projekcie:

# Preferencje globalne Claude Code

## Styl kodowania
- Preferuję type hints i explicit types
- Komentarze tylko gdy logika jest nieintuicyjna
- Testy przed implementacją (TDD gdy możliwe)

## Workflow
- Przed dużą zmianą -  pokaż mi plan w punktach
- Zawsze uruchom testy po zmianach
- Przy niejasności -  zapytaj, nie zakładaj

## Języki
- Kod: angielski (zmienne, funkcje, komentarze)
- Komunikacja ze mną: po polsku

Reguła "Przy niejasności - zapytaj, nie zakładaj" jest szczególnie ważna - bez niej Claude może zaimplementować funkcję w zupełnie inny sposób niż myślałeś, a Ty dowiesz się o tym dopiero gdy przejrzysz diff.

/init, # i /memory — twórz i aktualizuj plik bez wysiłku

Nie musisz pisać CLAUDE.md od zera. Claude Code ma trzy skróty, które robią większość roboty:

  • /init — w nowym projekcie Claude skanuje repozytorium (strukturę, zależności, skrypty) i generuje startowy CLAUDE.md. Ty tylko go dopracowujesz.
  • # na początku wiadomości — to, co napiszesz po krzyżyku, Claude dopisze jako regułę do pamięci, pytając tylko, do którego pliku (projektowego czy globalnego). Idealne, gdy w trakcie pracy pomyślisz „to warto zapamiętać”.
  • /memory — otwiera pliki pamięci w edytorze, żebyś mógł je przejrzeć i posprzątać.
💡 Wskazówka Najlepszy moment na # to chwila tuż po tym, jak poprawiasz Claude. Zamiast tłumaczyć to samo trzeci raz, zapisz regułę raz — np. „logowanie tylko przez utils/log.py, nigdy print()”.

Importy @ścieżka — trzymaj plik krótki, szczegóły osobno

CLAUDE.md ma być zwięzły, ale czasem chcesz, żeby Claude znał szczegóły z innego pliku — opis architektury, styleguide, kontrakty API. Zamiast kopiować ich treść, zaimportuj je znakiem @:

# Projekt: Sklep B2B

Szczegóły w osobnych plikach:
@docs/architektura.md
@docs/api-kontrakty.md
@CONTRIBUTING.md

Przy @ścieżka Claude wciąga zawartość wskazanego pliku tak, jakby była częścią CLAUDE.md. Ścieżki mogą być względne (@docs/architektura.md) albo z katalogu domowego (@~/.claude/styl.md). Jeden krótki CLAUDE.md spina rozproszoną dokumentację i nie dubluje jej.

💡 Wskazówka Importy świetnie sprawdzają się dla preferencji osobistych. Dodaj w CLAUDE.md linię @CLAUDE.local.md, a sam plik CLAUDE.local.md wpisz do .gitignore. Twoje prywatne ustawienia nie trafią do repozytorium, a reszta zespołu ich nie zobaczy.

Co jeszcze możesz umieścić w CLAUDE.md

  • Schematy bazy danych - kluczowe tabele i relacje (nie cały schemat - to za dużo tokenów)
  • API endpoints - lista najważniejszych endpoints i ich kontrakt
  • Znane problemy - bugi które są świadome i nie należy ich "naprawiać"
  • Zewnętrzne zależności - jak działają integracje z zewnętrznymi systemami
  • Osoby odpowiedzialne - kto zna które moduły (gdy Claude ma pytania)
Co to znaczy? "Tokeny" to jednostka rozliczeniowa i kontekstowa modeli AI. Im więcej tokenów w CLAUDE.md, tym mniej "pamięci" zostaje na właściwe zadanie. Limit kontekstu to jak RAM - jeśli zbyt wiele zajmuje dokumentacja, zostaje mniej miejsca na kod który Claude ma analizować. Reguła: CLAUDE.md powinien mieć mniej niż 2 000 tokenów (ok. 1 500 słów).

Wersjonuj CLAUDE.md jak kod

CLAUDE.md to nie prywatna notatka — to część projektu. Commituj go do repozytorium, żeby każdy w zespole (i każdy nowy programista) dostał te same reguły automatycznie. Gdy zmieniacie konwencję, poprawka w CLAUDE.md przechodzi przez code review tak samo jak zmiana w kodzie.

  • Trzymaj w gicie — wspólne reguły to wspólny plik. Nowy w zespole klonuje repo i Claude od razu zna konwencje.
  • Recenzuj zmiany — „dopiszmy regułę X” to pull request, nie ustna umowa. Łatwiej wyłapać sprzeczne wytyczne.
  • Prywatne rzeczy osobno — preferencje jednej osoby idą do importowanego, gitignorowanego pliku, nie do wspólnego CLAUDE.md.
💡 Co to znaczy? Dobry CLAUDE.md skraca onboarding nowego człowieka tak samo jak onboarding agenta — bo zapisuje to, czego nie widać w samym kodzie: dlaczego coś zrobiono tak, a nie inaczej.

Traktuj CLAUDE.md jak żywy dokument

Najlepsze pliki CLAUDE.md nie powstają w jednym posiedzeniu — rosną z czasem. Zasada jest prosta: ilekroć Claude zrobi coś nie tak, nie poprawiaj tylko tej jednej rzeczy — dopisz regułę, żeby nie zrobił tego ponownie.

  • Użył print() zamiast loggera? --> dopisz „logowanie tylko przez utils/log.py”.
  • Zrefaktorował publiczne API, którego nie wolno ruszać? --> dopisz to do sekcji „Czego NIE robić”.
  • Pomylił środowiska? --> opisz, jak nazywają się Twoje gałęzie i środowiska.

Po kilku tygodniach taki plik staje się skondensowaną wiedzą o projekcie, a liczba poprawek, które nanosisz ręcznie, wyraźnie spada. To najtańsza inwestycja w jakość pracy z agentem.

Częste błędy przy pisaniu CLAUDE.md

Trzy błędy które popełniają prawie wszyscy na początku:

  • Błąd 1: Za długi plik
    CLAUDE.md jest wczytywany do kontekstu przy każdym wywołaniu. Powyżej 2 000 tokenów zaczynasz tracić miejsce na właściwe zadanie. Bądź zwięzły - jedna linia zamiast trzech zdań. Jeśli masz dużo do opisania, użyj zagnieżdżonych CLAUDE.md w podkatalogach.
  • Błąd 2: Nieaktualny plik
    CLAUDE.md który kłamie jest gorszy niż brak. Jeśli napiszesz "używamy PostgreSQL 14" a potem zmigrujesz do 15, Claude będzie działać na podstawie błędnych informacji. Aktualizuj plik przy każdej ważnej zmianie technicznej - warto dodać go do listy rzeczy do zrobienia przy merge request.
  • Błąd 3: Za ogólny opis
    "Używamy Pythona" jest bezużyteczne. "Używamy Python 3.11, FastAPI 0.104, async/await wszędzie, pydantic v2 dla walidacji, alembic dla migracji" jest użyteczne. Im bardziej szczegółowy opis technologii, tym lepiej Claude dopasujesz sugestie do Twojego stosu.

Krok 4 - Weryfikuj czy CLAUDE.md działa

Po napisaniu CLAUDE.md zapytaj Claude Code: "Opisz architekturę tego projektu". Jeśli odpowiedź odzwierciedla Twój CLAUDE.md - agent go czyta i rozumie. Jeśli odpowiedź jest ogólna lub błędna - sprawdź czy plik jest we właściwym miejscu i czy składnia Markdown jest poprawna.

Możesz też zadać bardziej szczegółowe pytania: "Jak w tym projekcie uruchamiamy testy?" albo "Jakich rzeczy nie powinienem robić w tym projekcie?". Claude powinien odpowiedzieć dokładnie tym, co wpisałeś w plik.

Gdy masz dobrze napisany CLAUDE.md, każda sesja z Claude Code zaczyna się od stanu "Claude zna Twój projekt" - nie od tłumaczenia podstaw. Oszczędzasz czas, Claude popełnia mniej błędów, a Ty masz więcej przestrzeni na rzeczy które naprawdę wymagają Twojej uwagi. To jedna godzina pracy która zwraca się przy pierwszym użyciu.

4 ustawienia CLAUDE.md, które zrobisz dziś

CLAUDE.md to pamięć Twojego projektu. Te cztery rzeczy ustaw od razu:

  • Wygeneruj szkielet przez /init. nie pisz od zera - Claude tworzy startowy CLAUDE.md z analizy repozytorium, a Ty tylko go dopracujesz.
  • Plik globalny dla wszystkich projektów. w ~/.claude/CLAUDE.md wpisz zasady obowiązujące wszędzie (np. „odpowiadaj po polsku”, „nie rób git push bez pytania”).
  • Dopisuj regułę w locie znakiem #. w trakcie sesji zacznij wiadomość od krzyżyka - Claude dopisze tę regułę do CLAUDE.md bez otwierania pliku.
  • Krótko i konkretnie. to instrukcje, nie dokumentacja. Wskaż komendy (build, test, lint), styl kodu i „czego nie ruszać”. Długi plik rozmywa uwagę modelu.
Szkolenie JSystems

Newsletter bloga JSystems

Otrzymuj każdą nową lekcję prosto na swoją skrzynkę

Nowe lekcje pojawiają się co poniedziałek i czwartek. Zapisz się do newslettera bloga JSystems - dostaniesz powiadomienie zaraz po publikacji każdej lekcji.

Szkolenie Claude Code - 3 dni, od CLAUDE.md do multi-agent systems

Na szkoleniu piszesz CLAUDE.md dla własnego projektu, uczysz się hooks, MCP i orchestracji agentów. Termin gwarantowany, prowadzi Łukasz Matuszewski.

Sprawdź terminy -->

Następna lekcja

Dostępna od 18.6.2026
Wszystkie lekcje kursu Claude Code -->

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...