Lekcja 7 · Kontekst na żądanie, nie zawsze

.claude/rules/: instrukcje przypięte do ścieżek

CLAUDE.md ma limit <200 linii, bo wszystko w nim ląduje w kontekście każdej sesji. W dużym repo zespołowym to za mało miejsca na konwencje frontendu, backendu, testów i bezpieczeństwa naraz. .claude/rules/ rozwiązuje to inaczej niż mogłoby się wydawać — samo rozbicie na pliki nic nie oszczędza. Oszczędza dopiero jedno konkretne pole frontmatteru.

Polecane źródło How Claude remembers your project — sekcja .claude/rules/ — pełna specyfikacja, wliczając symlinki i reguły user-level.

Cztery sposoby na dostarczenie instrukcji

Kiedy ląduje w kontekścieWspółdzielony?
CLAUDE.mdzawsze, na starcie każdej sesjitak (project) / nie (local)
.claude/rules/*.md bez pathszawsze, na starcie — dokładnie jak CLAUDE.mdtak, przez git
.claude/rules/*.md z pathsdopiero gdy Claude czyta plik pasujący do wzorcatak, przez git
Skill (Lekcja 3)na żądanie: komenda albo decyzja modelu, że pasujetak, przez git
Kluczowy wniosek: reguła w .claude/rules/ bez pola paths ma dokładnie taki sam priorytet ładowania jak .claude/CLAUDE.md — rozbicie na osobne pliki porządkuje repo dla ludzi, ale nie zwalnia ani jednego tokena kontekstu. Realną oszczędność kontekstu daje dopiero paths: we frontmatterze: taka reguła ładuje się tylko wtedy, gdy Claude faktycznie otwiera pasujący plik — nie przy każdym innym wywołaniu narzędzia.

Składnia paths

---
paths:
  - "src/api/**/*.ts"
---

# API Development Rules

- Każdy endpoint musi mieć walidację wejścia
- Używaj standardowego formatu odpowiedzi błędu
WzorzecDopasowuje
**/*.tskażdy plik .ts w dowolnym katalogu
src/**/*wszystkie pliki pod src/
src/**/*.{ts,tsx}kilka rozszerzeń naraz (brace expansion)

Reguła odpala się, gdy Claude czyta pasujący plik — nie przy każdym tool use w ogóle. Można mieć wiele wzorców w jednej regule i dowolnie zagnieżdżać pliki w podkatalogach (frontend/, backend/) — wszystkie .md są odkrywane rekurencyjnie.

Kolejność: user, potem project

Reguły osobiste w ~/.claude/rules/ (dla wszystkich Twoich projektów) ładują się przed regułami projektowymi w .claude/rules/ — dokładnie ta sama logika co w hierarchii settings.json z Lekcji 6: to co bliżej bieżącego projektu, czytane jest później i ma pierwszeństwo przy sprzeczności.

Zadanie praktyczne — wydziel regułę ze swojego CLAUDE.md

Ten projekt ma w CLAUDE.md sekcję "Konwencje" z zasadami tylko dla plików w lessons/ (długość opcji quizu, brak podpowiedzi przez formatowanie). To dobry kandydat na regułę przypiętą do ścieżki — nie musi ładować się, gdy pracujesz nad czymś innym niż lekcja.

  1. Utwórz plik .claude/rules/lekcje.md z frontmatterem:
    ---
    paths:
      - "lessons/**/*.html"
    ---
    
    # Konwencje lekcji
    
    - Opcje odpowiedzi w quizach: zbliżona długość (słowa/znaki)
    - Bez podpowiedzi przez formatowanie
    - Reużywaj assets/style.css i assets/quiz.js, nie duplikuj
  2. Wpisz /memory i sprawdź, czy nowy plik pojawia się na liście — i czy jest oznaczony jako warunkowy (path-scoped).
  3. Poproś mnie, żebym otworzył dowolny plik z lessons/, a potem zapytaj, czy widzę treść tej reguły w kontekście.

Sprawdź się

1. Masz regułę w .claude/rules/testing.md bez pola paths. Kiedy ląduje w kontekście?

Reguła bez paths ma taki sam priorytet ładowania jak .claude/CLAUDE.md — ładuje się zawsze przy starcie, niezależnie nad czym pracujesz.

2. Co dokładnie oszczędza kontekst przy dużym zestawie reguł w monorepo?

Samo rozbicie na osobne pliki tylko porządkuje repo — bez paths wszystkie i tak ładują się zawsze. Realną oszczędność daje warunkowe ładowanie przez paths.

3. Kiedy dokładnie odpala się reguła ze scoped paths: "src/api/**/*.ts"?

Reguła path-scoped triggeruje się, gdy Claude czyta plik pasujący do wzorca w paths — nie przy każdym innym tool use, np. przy Bash czy WebFetch.

4. Masz tę samą regułę zdefiniowaną i w ~/.claude/rules/ (user), i w .claude/rules/ (project), z różną treścią. Która "wygrywa" przy sprzeczności?

Reguły user-level ładują się przed regułami projektowymi, więc przy sprzeczności project ma pierwszeństwo — ta sama logika co w hierarchii settings.json z Lekcji 6.

5. Masz proceduralne, wieloetapowe instrukcje ("jak wypuścić release"), potrzebne tylko czasem, nie w każdej sesji. Co lepiej pasuje niż .claude/rules/?

Dokumentacja wprost odsyła wieloetapowe procedury do skilli — ładują się na żądanie (komenda albo trafność), a nie przy każdym otwarciu pasującego pliku jak rule.
Coś niejasne? Zapytaj mnie wprost — mogę pomóc rozbić konkretny, rozrośnięty CLAUDE.md z Twojego prawdziwego projektu na reguły przypięte do ścieżek.
← Lekcja 6: Ustawienia i uprawnienia Następna lekcja: Auto memory — jak Claude samo uczy się Twojego projektu →