O czym to jest

Claude Code czyta plik CLAUDE.md na początku każdej sesji. To miejsce na instrukcje dla agenta: jak zbudować projekt, jak pisać teksty, czego nie ruszać. Na początku plik jest krótki, ale z czasem rośnie. Dochodzą zasady pisania testów, styl kodu, wymagania dla konfiguracji, reguły dla dokumentacji. Wszystko to agent dostaje za każdym razem, nawet gdy poprawia jedną literówkę w readme.md. Co warto wpisać do CLAUDE.md i jak wygląda jego hierarchia (globalny, projektowy, w podkatalogu), opisuje Agenci AI #2, w części o CLAUDE.md . Zarządzanie kontekstem przez agenta omawia Agenci AI #4 — Pamięć i kontekst .

Claude Code ma na to osobny mechanizm: reguły (rules). To zwykłe pliki Markdown w katalogu .claude/rules/. Każda reguła opisuje jeden temat i może się ładować tylko wtedy, gdy agent pracuje z plikiem, którego dotyczy. Ten wpis pokazuje, jak taki plik wygląda, gdzie może leżeć i jak opisać, do których plików ma się odnosić.

Reguły, podobnie jak CLAUDE.md, to wskazówki, a nie blokada. Jeśli coś ma być zabronione bezwarunkowo, trzeba to ustawić w uprawnieniach albo hookiem (więcej w Agenci AI #6 — Hooks ).

Jak wygląda reguła

Każda reguła to osobny plik Markdown (z rozszerzeniem .md) w katalogu .claude/rules/. Takich katalogów może być kilka (o tym niżej). Najprostszy układ wygląda tak:

moj-projekt/
├── CLAUDE.md
└── .claude/
    └── rules/
        ├── styl-pisania.md
        ├── terminologia.md
        └── dane-poufne.md

W najprostszej postaci reguła to po prostu fragment CLAUDE.md przeniesiony do osobnego pliku. Taka reguła ładuje się na starcie każdej sesji. Nie oszczędza miejsca w kontekście, ale porządkuje instrukcje: zamiast jednego pliku na 400 linii powstaje kilka krótkich, tematycznych.

Inaczej działa reguła, która na początku ma nagłówek (frontmatter) z polem paths:

---
paths:
  - "oferty/**/*.md"
---

# Oferty dla klientów

- Zaczynaj od problemu klienta, nie od opisu firmy.
- Ceny podawaj netto, z dopiskiem „+ VAT”.
- Każda oferta kończy się terminem ważności i danymi kontaktowymi.

Taka reguła nie trafia do kontekstu na starcie. Agent dostaje ją dopiero wtedy, gdy otworzy, utworzy lub zmieni plik pasujący do wzorca, np. oferty/2026/kowalski.md. Jeśli przez całą sesję pracuje tylko nad notatkami ze spotkań, zasad dla ofert w ogóle nie zobaczy.

paths to jedyne pole, które Claude Code odczytuje z nagłówka reguły. Inne pola, np. description: czy priority:, są po cichu ignorowane. Jeśli YAML w nagłówku zawiera błąd składni, reguła traci filtr i ładuje się w każdej sesji.

Gdzie mogą leżeć reguły

Reguły mogą leżeć w trzech miejscach:

~/.claude/rules/                      # reguły użytkownika: wszystkie projekty na tym komputerze
└── moje-teksty.md                    # paths: "**/*.md"

firma/
├── .claude/rules/                    # reguły projektu
│   ├── ton-komunikacji.md            # bez paths: ładuje się zawsze
│   └── dokumenty/                    # podkatalog tylko dla porządku
│       └── oferty.md                 # paths: "oferty/**" → firma/oferty/...
└── dzialy/prawny/
    ├── .claude/rules/                # reguły jednego działu
    │   └── umowy.md                  # paths: "umowy/**" → firma/dzialy/prawny/umowy/...
    └── umowy/...

Z tego układu wynika kilka zasad:

  • Podkatalogi w rules/ nie zmieniają zakresu reguły. dokumenty/oferty.md działa tak samo jak oferty.md. O tym, kiedy reguła się ładuje, decyduje wyłącznie paths.
  • Wzorce liczą się od katalogu, w którym leży .claude. Reguła działu prawnego z umowy/** dopasuje dzialy/prawny/umowy/najem.md, ale nie dzialy/marketing/umowy/influencer.md. Każdy dział pisze więc reguły tak, jakby jego katalog był osobnym projektem.
  • Reguły użytkownika obowiązują wszędzie i ładują się przed regułami projektu. Ich wzorce liczą się od katalogu, w którym uruchomiono sesję, więc **/*.md zadziała w każdym projekcie z plikami Markdown.
  • Reguły się nie nadpisują. Jeśli reguła użytkownika i reguła projektu mówią co innego, Claude może zastosować dowolną z nich, więc trzeba dbać o ich spójność.

Filtry paths

Wzorce działają podobnie jak w .gitignore:

  • * to dowolny ciąg znaków w obrębie jednej nazwy (bez /), ** to dowolna liczba podkatalogów,
  • {a,b} to kilka wariantów w jednym wzorcu,
  • [0-9] to jeden znak z podanego zakresu,
  • / na początku przypina wzorzec do katalogu głównego.

Lista działa jak „lub”: reguła ładuje się, gdy pasuje którykolwiek wzorzec. Kilka przykładów:

---
paths:
  - "config/series.yaml"               # jeden konkretny plik
  - "Dockerfile"                       # plik o tej nazwie na dowolnym poziomie
  - "**/*.py"                          # wszystkie pliki .py w projekcie
  - "*.md"                             # .md na każdym poziomie (wzorzec bez /)
  - "/*.md"                            # .md tylko w katalogu głównym
  - "src/components/*.tsx"             # tylko ten katalog, bez podkatalogów

  - "src/**/*.{ts,tsx}"                # = src/**/*.ts i src/**/*.tsx
  - "**/*.{test,spec}.{ts,js}"         # 4 warianty plików testów
  - "**/{docker-compose,compose}*.{yml,yaml}"

  - "migrations/[0-9][0-9][0-9][0-9]_*.py"   # 0042_add_index.py, ale nie helpers.py
  - "blog_data/20[0-9][0-9]/*.md"      # tylko katalogi z rokiem, bez blog_data/szkolenia/

  - 'assets/photos \[2024]/**'         # dosłowny nawias w nazwie: backslash i pojedynczy cudzysłów
---

Kilka rzeczy, o których warto pamiętać:

  • Brak wykluczeń. Dokumentacja nie opisuje składni typu !blog_data/szkolenia/**, więc zamiast wykluczać katalog, trzeba zawęzić wzorzec (jak w przykładzie z 20[0-9][0-9]).
  • Limit 1000 wariantów na regułę. Każda grupa klamer mnoży liczbę wariantów. Wzorzec, który przekroczyłby limit, nie jest rozwijany i nie pasuje do żadnego pliku. Wzorce bez klamer się nie liczą.
Gdzie doczytać o wzorcach i gdzie je sprawdzić online.
ŹródłoTypCo zawiera
Claude Code: Path-specific rulesDokumentacjaOficjalny opis reguł i pola paths.
Dokumentacja .gitignoreDokumentacjaSekcja Pattern format dobrze tłumaczy *, **, [...] i znaczenie ukośnika na początku.
Glob na WikipediiDokumentacjaOgólny przegląd składni i jej odmian.
picomatchDokumentacjaOpis popularnej biblioteki glob, w tym klamer i zakresów.
DigitalOcean Glob ToolTester onlinePo wpisaniu wzorca i listy ścieżek narzędzie zaznacza, które pasują.
GlobsterTester onlinePodobny tester z objaśnieniem wzorca.

Reguły, CLAUDE.md czy skill

Claude Code ma kilka sposobów przekazywania instrukcji. Różnią się tym, gdzie leżą i kiedy agent je dostaje.

Porównanie mechanizmów przekazywania instrukcji w Claude Code.
MechanizmGdzie leżyKiedy się ładuje i kiedy używać
CLAUDE.md
w katalogu głównym
Katalog główny lub .claude/Na starcie każdej sesji.
Jak zbudować projekt, jego układ, zasady obowiązujące zawsze.
CLAUDE.md
w podkatalogu
Obok plików
np. packages/api/CLAUDE.md
Gdy agent dotknie pliku w tym katalogu.
Właściciele katalogu trzymają własne zasady obok swoich plików.
Reguła bez paths.claude/rules/Na starcie każdej sesji.
Jak wyżej, ale podzielone na tematyczne pliki.
Reguła z paths.claude/rules/
(główny lub w podkatalogu)
Gdy agent czyta lub zmienia pasujący plik.
Zasady dla konkretnego typu plików, trzymane w jednym miejscu.
Skill.claude/skills/<nazwa>/SKILL.mdNa wywołanie lub gdy Claude uzna go za przydatny.
Wieloetapowe procedury: wydanie wersji, nowy post, audyt.
Gdzie wpisać instrukcję. Przykłady.
InstrukcjaGdzie ją wpisać
„Odpowiadaj po polsku, krótko i bez lania wody”CLAUDE.md albo reguła bez paths
„Projekt budujesz poleceniem make build”CLAUDE.md
„Nigdy nie cytuj danych osobowych klientów”Reguła bez paths, np. dane-poufne.md
„W ofertach ceny podawaj netto, z dopiskiem + VAT”Reguła z paths: oferty/**
„W umowach nie zmieniaj treści paragrafów o RODO”Reguła z paths: umowy/**
„W config/series.yaml nie zmieniaj istniejących identyfikatorów”Reguła z paths na ten jeden plik
„Teksty na blog piszemy w pierwszej osobie, newsletter w drugiej”Dwie reguły: blog/** i newsletter/**
„Dział prawny ma własne zasady i sam je utrzymuje”CLAUDE.md albo .claude/rules/ w katalogu działu
„Moje preferencje we wszystkich projektach”Reguła użytkownika w ~/.claude/rules/
„Żeby wydać nową wersję, wykonaj kroki 1–7”Skill
„Przygotuj nowy wpis: szablon, obrazki, sprawdzenie linków”Skill
„Nigdy nie edytuj plików .env”Nie reguła, tylko uprawnienia albo hook

Więcej o skillach: Skille w Claude Code i Agenci AI #5 .

Przykłady zastosowania

Typowe zastosowania reguł.
ZastosowaniePrzykładowe pathsCo daje reguła
Odchudzenie CLAUDE.mdZależnie od tematu sekcjiDokumentacja zaleca CLAUDE.md poniżej 200 linii. Sekcje dotyczące konkretnych plików trafiają do osobnych reguł, a w CLAUDE.md zostaje to, co potrzebne zawsze.
Pliki generowane automatycznie**/*.generated.*
dist/**
Jedna linijka: „Nie edytuj ręcznie, zmień źródło i uruchom generator”. Agent dostaje ją dokładnie wtedy, gdy mógłby popełnić błąd.
Pliki wrażliwe**/.env*
**/secrets/**
Przypomnienie, żeby niczego z nich nie cytować w odpowiedzi ani w commicie. Uzupełnienie blokady w uprawnieniach, nie zamiennik.
Dokumenty dla klientówoferty/**
umowy/**
Stały układ, ton i obowiązkowe elementy: ceny netto, termin ważności, dane kontaktowe.
Stare pliki obok nowycharchiwum/**
src/legacy/**
„Nie przepisuj, tylko minimalne poprawki, zachowaj dotychczasowy styl”. Agent nie zacznie przy okazji przerabiać połowy starego materiału.
Wspólne standardy dla wielu projektówBez paths albo w ~/.claude/rules/Katalog ze standardami firmy można dołączyć do wielu repozytoriów dowiązaniem symbolicznym. Jeśli leży poza katalogiem projektu, Claude Code prosi o zgodę i ładuje z niego tylko reguły bez paths. Reguły z filtrem wspólne dla wielu projektów lepiej trzymać w ~/.claude/rules/.

Jak sprawdzić, czy reguła działa

Narzędzia do sprawdzania reguł.
PolecenieCo pokazuje
/context allListę Memory files w bieżącej sesji. Reguła z paths pojawi się tam dopiero po otwarciu pasującego pliku.
claude --debugBłędy parsowania nagłówków reguł (frontmatter).
/doctor prompt-auditSprzeczne lub nieaktualne instrukcje w CLAUDE.md, regułach i skillach (od wersji 2.1.283). Zakres można ograniczyć do katalogu: /doctor prompt-audit .claude/rules.

Szybki test: w nowej sesji agent odczytuje jeden plik, który powinien pasować do wzorca, a potem /context all pokazuje listę wczytanych reguł. Jeśli reguły na niej nie ma, przyczyną są zwykle cudzysłowy we wzorcu albo katalog, względem którego jest liczony.

Podsumowanie

  • Reguła to plik .md w .claude/rules/ (w projekcie, także w podkatalogu) albo w ~/.claude/rules/ (dla wszystkich projektów użytkownika).
  • Jedyne pole odczytywane z nagłówka to paths. Bez niego reguła ładuje się zawsze, z nim tylko przy pracy z pasującymi plikami.
  • Wzorce liczą się względem katalogu, w którym leży .claude, a w regułach użytkownika względem katalogu, w którym uruchomiono sesję.
  • Błędnie zapisany nagłówek po cichu zamienia regułę warunkową w globalną, więc wzorce warto zawsze brać w cudzysłów (wzorzec bez cudzysłowu zaczynający się od * lub { psuje składnię YAML).
  • *, **, klamry i nawiasy kwadratowe wystarczą, żeby opisać praktycznie każdą grupę plików.