W Skali Holaka poziom 5 to „pliki kontekstowe per-projekt”. Wymieniam tam trzy formaty: AGENTS.md, CLAUDE.md, .cursorrules. Najczęstsze pytanie po publikacji: „dobrze, ale który mam używać?”

Krótka odpowiedź: wszystkie trzy, dla różnych celów. Dłuższa - w tym artykule.

Skąd się wzięły

Trzy formaty narodziły się w odpowiedzi na ten sam problem (agent nie zna mojego projektu), ale w różnych ekosystemach.

  • .cursorrules - pierwszy, od Cursor. Krótkie reguły, „nie używaj X, używaj Y”. Plik leży w korzeniu repo, Cursor czyta go automatycznie.
  • CLAUDE.md - wprowadzone z Claude Code. Bardziej opisowe, „kontekst projektu plus konwencje”. Claude Code automatycznie wczytuje plik z root + dowolnego katalogu nadrzędnego.
  • AGENTS.md - najbardziej generyczny, propagowany od połowy 2025. Zamysł: jeden plik, który zrozumie każdy nowoczesny agent - Claude Code, Codex, Cursor, Aider itd.

W praktyce: rynek nie ujednolicił się. Każde narzędzie czyta swój format, niektóre czytają wszystkie.

Tabela: co kto czyta

NarzędzieAGENTS.mdCLAUDE.md.cursorrules
Claude Codetak (awaryjnie)głównynie
Cursor agenttaktakgłówny
Codex CLIgłównytakczęściowo
Aidertaktaknie
Continuetaktaktak

Hierarchia precedensów w Claude Code: globalny CLAUDE.md (~/.claude/CLAUDE.md) → katalogowy CLAUDE.md (wczytywany rekursywnie od korzenia projektu w dół). Jeśli istnieje AGENTS.md w korzeniu - Claude Code go również wciągnie.

Co wrzucać do każdego

Każdy format ma trochę inny charakter. Mieszanie ich na zasadzie „kopiuj 1:1” daje gorsze efekty niż wykorzystanie różnic.

CLAUDE.md - kontekst i sposób pracy

Najpojemniejszy z trzech. Tutaj wjeżdża:

  • cel projektu w 2 zdaniach
  • stack technologiczny
  • konwencje kodu (tylko te, które są lokalne dla projektu - ogólne idą do instrukcji własnych)
  • przepływ pracy w gicie / rozgałęzianie / styl wiadomości commitów
  • jak uruchomić, jak zbudować, jak przetestować
  • znane pułapki („nie ruszaj X bo Y”)
  • mapa katalogów jeśli nieoczywista

Przykład fragmentu, którego używam w jednym z projektów:

# Risk Engine

System limitów kredytowych dla 12M klientów.

## Stack

Python 3.11 + FastAPI + PostgreSQL 15 + Redis 7.

## Komendy

- `make dev` - lokalny serwer z hot reload
- `make test` - unit tests
- `make test-int` - integration tests (wymaga Docker)
- `make migrate` - alembic upgrade head

## Workflow

- Branche per ticket: `feature/RISK-123-short-desc`
- Commit messages: po angielsku, conventional commits
- PR template w `.github/PULL_REQUEST_TEMPLATE.md`

## Nie ruszaj

- Schemat tabeli `customers` - wymaga review z teamem KYC
- Plik `config/risk_weights.yaml` - zmiana wymaga approve od Head of Risk

.cursorrules - reguły zachowań w kodzie

Krótkie, dyrektywne. Optymalizowane pod „nie pisz Y, pisz X”:

- Use TypeScript strict mode.
- Never use `any` type. If unsure use `unknown` and narrow.
- All async functions must handle errors via try/catch or `.catch()`.
- Components in PascalCase, hooks in camelCase prefixed with `use`.
- Tests live next to source: `Component.tsx` + `Component.test.tsx`.
- Don't use `index.ts` re-export barrels.

Idealnie 10-30 linii. Większe = sygnał że treść powinna pójść do CLAUDE.md albo do promptu systemowego.

AGENTS.md - przepływ pracy agenta i protokół działania

Najmniej standardowy z trzech, ale nabrał własnego charakteru: tu opisujesz jak agent powinien się zachować w tym projekcie:

  • „zanim zmienisz X, sprawdź Y”
  • „po każdej zmianie w kodzie uruchom make test
  • „nigdy nie pushuj bezpośrednio do main”
  • „przed pushem uruchom npm run lint

Mam osobny post o AGENTS.md w kontekście automatyzacji testów - tam jest szczegół dla repozytoriów Playwright/Cypress/API.

Strategia wielonarzędziowa

Jeśli zespół używa Claude Code + Cursor + sporadycznie Codex, masz 3 opcje:

Opcja 1: jeden źródłowy plik + symlinki

ln -s CLAUDE.md AGENTS.md
# Cursor i tak czyta AGENTS.md, więc dwa plik kontekstowe za jednym razem

Wada: .cursorrules ma inny format (krótkie reguły), więc symlink nie pasuje.

Opcja 2: jeden plik z nagłówkami na narzędzie

# Project context

<!-- @claude-code -->
... pełen kontekst dla Claude Code ...

<!-- @cursor -->
... krótkie reguły dla Cursor agent ...

<!-- @codex -->
... protokoły dla Codex ...

Nie wszystkie narzędzia rozumieją te sekcje. W praktyce każde czyta cały plik. Działa średnio.

Opcja 3: trzy oddzielne pliki + wzajemne odnośniki

To rozwiązanie, które realnie polecam. W korzeniu repo:

AGENTS.md       # workflow i protokoły (referencje do CLAUDE.md po szczegóły)
CLAUDE.md       # pełen kontekst projektu, stack, komendy
.cursorrules    # krótkie dyrektywy kodowe

AGENTS.md zaczyna się od „Pełny kontekst projektu w CLAUDE.md. Tutaj tylko protokoły działania.” - agent pobiera oba pliki, nie ma duplikacji treści.

.cursorrules ma na końcu „For full project context see CLAUDE.md.”

Antywzorzec: kopia 1:1 między plikami

Najczęstszy błąd: zespół kopiuje treść CLAUDE.md do AGENTS.md, bo „obydwa narzędzia tego potrzebują”. Po miesiącu pliki rozjeżdżają się. Ktoś edytuje jeden, ktoś drugi. Agent dostaje sprzeczne sygnały.

Test: otwórz oba pliki i policz wspólne linie. Jeśli >40% - masz duplikację. Refaktoryzacja: zostaw treść w jednym, w drugim link.

Antywzorzec: dokumentacja-cmentarz

Spisane raz, nigdy nie zaktualizowane. Pisałem o tym w antywzorcach adopcji - ale warto powtórzyć, bo to dotyczy każdego z trzech formatów.

Test: otwórz CLAUDE.md i powiedz, co tam zmieniło się w ostatnim miesiącu. Cisza = cmentarz.

Wyjście: dodaj do retrospektywy pytanie „czy CLAUDE.md zgadza się z tym, jak teraz pracujemy?”. Każda zmiana w przepływie pracy = PR do pliku.

Czego nie wrzucać

Niezależnie od formatu, kilka rzeczy do CLAUDE.md / AGENTS.md / .cursorrules nie należy:

  • Sekretów - żadne klucze API, hasła, tokeny. Plik jest w repo (zwykle publiczny lub szeroko widoczny).
  • Danych klientów - nawet zanonimizowane „przykłady z życia”.
  • Stylowych preferencji ogólnych (np. „lubię zwięzłe odpowiedzi”) - to do instrukcji własnych globalnie, nie do pliku per projekt.
  • Historii decyzji (np. „rozważaliśmy X i Y, wybraliśmy Z”) - to do ADR-ów (Architecture Decision Records) lub osobnego docs/.
  • Map drogowych / list TODO - to do systemu zgłoszeń, nie do kontekstu agenta.

Co dalej

Jeśli twój projekt nie ma żadnego z tych plików - zacznij od CLAUDE.md w korzeniu. To największy ROI (Claude Code, Codex i Aider go zauważą). Daj sobie 30 minut, jedna strona maks, zaktualizuj po pierwszej sesji.

Jeśli masz wszystkie trzy, ale duplikują się - refaktor zgodnie z opcją 3 z tego postu.

Jeśli masz jeden plik z 2023 roku - udajesz że jesteś na poziomie 5. Realnie wracasz do 4 z antywzorcem. Wyjście: weekend, odświeżenie, retrospektywa.