Blog

AGENTS.md i CLAUDE.md: wspólne instrukcje dla agentów AI

Markdown

Jedno źródło prawdy dla Claude Code, Codex i Cursor w 2026 roku: kiedy Claude Code sam odczytuje AGENTS.md, import @AGENTS.md w CLAUDE.md, dowiązanie symboliczne i /init.

Przeczytaj cały artykuł

Informacje o usłudze znajdziesz w dokumentacji Ailoot.

AGENTS.md i CLAUDE.md: wspólne instrukcje dla Claude Code, Codex i Cursor

Najważniejsze informacje

W 2026 roku typowe środowisko vibe codera obejmuje nie jedno narzędzie, lecz 3–5. Claude Code jako główne narzędzie, Codex do długich zadań autonomicznych, Cursor do szybkich edycji w IDE. Każde ma własny plik instrukcji: CLAUDE.md, AGENTS.md, .cursorrules. Jeśli synchronizujesz je ręcznie, edytujesz tę samą linię w pięciu miejscach, zapominasz zaktualizować Cursor, a tydzień później Claude i Codex dają różne wyniki dla tego samego promptu.

W opisanym przykładzie Claude Code jest głównym narzędziem, a Codex i Cursor służą do konkretnych zadań. Mój CLAUDE.md zawiera około 250 wierszy instrukcji: co czytać i w jakiej kolejności, czego nie wolno ruszać, jakich poleceń używać do wdrażania oraz jakie są zasady formatowania commitów. Kiedy po raz pierwszy wypróbowałem Codex CLI w projekcie, nie znał żadnej z tych zasad: wykonał git push --force, zaglądał do .env i beztrosko zmieniał nazwy plików.

Najpierw ręcznie skopiowałem CLAUDE.md do AGENTS.md. Dwa tygodnie później odkryłem, że projekt ma już cztery wersje tych samych instrukcji: w CLAUDE.md, AGENTS.md, .cursorrules i .windsurf/rules/. Każda nieco się różniła. To nie problem Claude’a ani Cursora, lecz podstawowa pułapka każdego systemu z wieloma źródłami prawdy. Omawiam ją szerzej w przewodniku po pracy z wieloma agentami.

W czerwcu 2026 roku dokumentacja pamięci Claude Code od Anthropic przedstawiała jedno rozwiązanie: wspólny plik i import. Od września 2026 roku Claude Code sam odczytuje AGENTS.md, jeśli projekt nie zawiera CLAUDE.md; import jest potrzebny, gdy masz reguły przeznaczone wyłącznie dla Claude’a. Poniżej wyjaśniam, kiedy wystarczy jeden plik AGENTS.md, jak skonfigurować import i jak oddzielić wspólne reguły od tych specyficznych dla Claude’a.

Czy Claude Code sam odczytuje AGENTS.md?

Najważniejsze informacje

Tak, począwszy od wersji 2.1.277, wydanej 18 września 2026 roku, ale tylko wtedy, gdy w katalogu roboczym ani żadnym jego katalogu nadrzędnym nie ma CLAUDE.md, .claude/CLAUDE.md ani CLAUDE.local.md. Jeśli istnieje CLAUDE.md, Claude Code domyślnie odczytuje tylko ten plik, a AGENTS.md dołącza się za pomocą wiersza @AGENTS.md w CLAUDE.md albo dowiązania symbolicznego. Zachowanie można zmienić w /config, w sekcji Project instructions. Przed wrześniem Claude Code w ogóle nie odczytywał AGENTS.md, więc jedynym sposobem był import.

Przed wrześniem 2026 roku odpowiedź brzmiała „nie”. Issue #6235, w którym zgłoszono prośbę o obsługę AGENTS.md, pozostawało otwarte od sierpnia 2025 roku i zamknięto je 17 sierpnia 2026 roku. Przez cały ten czas dokumentacja pamięci wskazywała jedno rozwiązanie: utwórz plik CLAUDE.md i zaimportuj do niego AGENTS.md. Od wersji 2.1.277 dokumentacja mówi już co innego:

Claude Code może odczytywać AGENTS.md jako instrukcje projektu, dzięki czemu repozytorium skonfigurowane już dla innych agentów działa bez CLAUDE.md, importu ani konfiguracji.

— Anthropic, https://code.claude.com/docs/en/memory#agents-md

To, co odczyta Claude Code, zależy od plików w projekcie:

Pliki w projekcieCo odczytuje Claude Code
AGENTS.md, bez CLAUDE.md ani CLAUDE.local.md w katalogu roboczym lub wyżejAGENTS.md
AGENTS.md oraz CLAUDE.md (lub CLAUDE.local.md) w katalogu roboczym lub wyżejTylko CLAUDE.md
CLAUDE.md z wierszem @AGENTS.mdCLAUDE.md oraz zawarty w nim przez import plik AGENTS.md

W tej kontroli uwzględnia się pliki CLAUDE.md, .claude/CLAUDE.md i CLAUDE.local.md znajdujące się w katalogu roboczym i dowolnym katalogu nadrzędnym. Osobisty ~/.claude/CLAUDE.md, zarządzany plik firmowy oraz reguły z .claude/rules/ nie są uwzględniane: są ładowane razem z AGENTS.md.

Jeśli nie ma CLAUDE.md, Claude Code podczas uruchamiania odczytuje wszystkie pliki AGENTS.md i .claude/AGENTS.md z katalogu roboczego i jego katalogów nadrzędnych, a plik AGENTS.md w podkatalogu wczytuje po otwarciu pliku w tym podkatalogu. Działają też importy @path wewnątrz AGENTS.md. Claude Code nie odczytuje AGENTS.local.md, AGENTS.override.md ani zawartości katalogu .agents/.

Pułapka polega na tym, że liczy się także osobisty plik CLAUDE.local.md. Utwórz go, aby przechowywać niezatwierdzone reguły, a Claude Code po cichu przestanie odczytywać AGENTS.md. Rozwiązaniem jest poniższe ustawienie.

Zachowanie zmienia się w /config, w sekcji Project instructions:

UstawienieCo odczytuje Claude Code
claude-md-or-agents-md (domyślne)CLAUDE.md albo, jeśli nie istnieje ani on, ani CLAUDE.local.md, AGENTS.md
claude-md-and-agents-mdOba pliki: w każdym katalogu najpierw CLAUDE.md, potem AGENTS.md
claude-mdTylko CLAUDE.md
managed-onlyTylko zarządzany firmowy CLAUDE.md i pamięć automatyczna

Jeśli chcesz zachować CLAUDE.local.md bez utraty AGENTS.md, ustaw claude-md-and-agents-md. Nie dojdzie do podwójnego odczytu: jeśli AGENTS.md jest już dołączony przez wiersz @AGENTS.md albo dowiązanie symboliczne, Claude Code nie wczyta go drugi raz, niezależnie od ustawienia.

Za pomocą polecenia /memory możesz sprawdzić, czy plik został wczytany: od wersji 2.1.280 na liście pojawia się ścieżka do AGENTS.md. W wersjach starszych niż 2.1.277 oraz w sesjach, w których wyłączono wbudowaną wtyczkę agents-md, Claude Code odczytuje tylko CLAUDE.md, a w /config nie ma pozycji Project instructions. Przed wersją 2.1.281 tak samo zachowywały się sesje przez Amazon Bedrock i sesje z wyłączoną telemetrią. W pierwszej sesji po aktualizacji ze starszej wersji AGENTS.md może też nie zostać wczytany; zacznie działać od następnej sesji.

Co to oznacza, jeśli chcesz mieć jeden plik? Jeśli nie masz reguł przeznaczonych wyłącznie dla Claude’a, możesz pominąć CLAUDE.md: wystarczy AGENTS.md, który odczytają Claude Code, Codex i Cursor. Jeśli masz takie reguły (tryb planowania dla ryzykownych katalogów, umiejętności, hooks), potrzebujesz CLAUDE.md, a Claude Code przestanie samodzielnie czytać AGENTS.md. W takim przypadku umieść w CLAUDE.md wiersz @AGENTS.md, aby go zaimportować. Ta konfiguracja działa tak samo jak przed wrześniem i obsługuje starsze wersje Claude Code. Wyjaśniam ją szczegółowo poniżej.

Jak zaimportować @AGENTS.md w CLAUDE.md?

Najważniejsze informacje

Import jest potrzebny, gdy projekt ma plik CLAUDE.md: jeśli on istnieje, Claude Code domyślnie nie odczytuje samodzielnie AGENTS.md. Aby to skonfigurować, wpisz @AGENTS.md na początku pliku CLAUDE.md. Gdy Claude Code rozpoczyna sesję, wstawia w miejsce tego wiersza zawartość AGENTS.md i odczytuje całość jako jeden tekst. Pod importem możesz dodać sekcję „Claude Code” z regułami obowiązującymi tylko Claude’a. Importy obsługują ścieżki względne i bezwzględne oraz mogą być zagnieżdżone na maksymalnie czterech poziomach.

Minimalny działający przykład z oficjalnej dokumentacji:

@AGENTS.md

## Claude Code

Używaj trybu planowania przy zmianach w `src/billing/`.

Oto, co się dzieje. Pierwszy wiersz, @AGENTS.md, jest dyrektywą importu. Gdy Claude Code analizuje CLAUDE.md na początku sesji, znajduje ten import i wstawia w jego miejsce całą zawartość AGENTS.md. Następnie pojawia się nagłówek ## Claude Code: to zwykły Markdown, ale pełni funkcję sekcji „dodatkowe reguły specyficzne dla Claude’a”. Pod nim znajduje się reguła obowiązująca tylko Claude Code: używaj trybu planowania przy zmianach w katalogu billing. Codex CLI ani Cursor nie otwierają tego pliku; korzystają ze zwykłego AGENTS.md.

Cytat z dokumentacji o działaniu importów:

Pliki CLAUDE.md mogą importować dodatkowe pliki za pomocą składni @path/to/import. Importowane pliki są rozwijane i ładowane do kontekstu podczas uruchamiania sesji razem z plikiem CLAUDE.md, który się do nich odwołuje.

— Anthropic, https://code.claude.com/docs/en/memory

Kilka praktycznych szczegółów:

  • Ścieżki względne i bezwzględne. @AGENTS.md jest ścieżką względną względem pliku zawierającego import. @/Users/me/shared/rules.md lub @~/.claude/personal.md to ścieżki bezwzględne. Używam @~/.claude/personal.md do przechowywania osobistych preferencji, których nie chcę umieszczać w repozytorium.
  • Maksymalnie cztery poziomy. AGENTS.md może importować @docs/coding-style.md, a coding-style.md może importować kolejny plik, do czterech poziomów. To wystarczy do każdej praktycznej struktury.
  • Backticki blokują import. Jeśli tekst zawiera `@README`, jest to tylko wzmianka o nazwie, a nie import. Przydaje się to, gdy wyjaśniasz czytelnikom działanie importów, nie uruchamiając go.
  • Pliki spoza projektu wymagają zatwierdzenia. Jeśli import wskazuje lokalizację poza katalogiem roboczym, na przykład @~/.claude/personal.md, Claude Code przy pierwszej próbie wyświetli okno z listą takich plików. Jeśli odmówisz, importy zewnętrzne pozostaną wyłączone, a okno nie pojawi się ponownie. @AGENTS.md w katalogu głównym projektu nie wywołuje okna. Chroni to przed przypadkowym wczytaniem do kontekstu niepowiązanego pliku.

Po przejściu na tę konfigurację w opisanym projekcie mój CLAUDE.md skurczył się z 250 do 60 wierszy: @AGENTS.md oraz pięć do siedmiu reguł obowiązujących tylko Claude Code (tryb planowania dla ryzykownych katalogów, czego nie ruszać w obszarze administracyjnym i jak formułować commity). Wszystkie wspólne zasady znajdują się w AGENTS.md, który odczytują Codex i Cursor.

Kiedy wybrać dowiązanie symboliczne, a kiedy import?

Najważniejsze informacje

Anthropic oferuje dwa mechanizmy: import przez @AGENTS.md albo dowiązanie symboliczne ln -s AGENTS.md CLAUDE.md. Dowiązanie jest prostsze — to tylko alias i nie wymaga zmian w plikach. Ma jednak trzy wady: w Windows wymaga uprawnień administratora, nie pozwala dodawać reguł specyficznych dla Claude’a do CLAUDE.md, a Git czasem pokazuje dowiązanie w diffie w nieczytelny sposób. Import to rozwiązanie uniwersalne. Jeśli nie masz reguł tylko dla Claude’a, od wersji 2.1.277 nie potrzebujesz żadnego z tych rozwiązań: Claude Code sam odczyta AGENTS.md.

Dokumentacja przedstawia opcję dowiązania symbolicznego tak:

ln -s AGENTS.md CLAUDE.md

Zaraz potem zawiera bezpośrednie ostrzeżenie dotyczące Windows:

Jeśli Ty lub ktokolwiek klonujący repozytorium pracuje w Windows, użyj importu @AGENTS.md. Utworzenie dowiązania symbolicznego wymaga tam uprawnień administratora lub trybu deweloperskiego, a Git z wyłączonym core.symlinks sprawdza zatwierdzone dowiązanie jako zwykły plik tekstowy. W efekcie powstaje jednoliniowy plik CLAUDE.md zamiast instrukcji w tej kopii.

— Anthropic, https://code.claude.com/docs/en/memory

Tabela porównawcza:

KryteriumImport @AGENTS.mdDowiązanie symboliczne ln -s
Działa w Windows bez uprawnień administratorataknie (wymagany tryb deweloperski)
Można dodać reguły tylko dla Claude’atak, pod importemnie, plik jest identyczny
W Git jest widoczny jako zwykły Markdowntakjako dowiązanie (zależy od core.symlinks)
Można importować wiele plikówtak, do czterech poziomównie, relacja jeden do jednego
Buforowanie/unieważnianie w Claude Codestandardowe dla CLAUDE.mddziała, ale dowiązania symboliczne mają ukryte pułapki
Domyślny wybórodpowiedni dla każdegotylko jeśli praca na różnych platformach nie ma znaczenia

W opisanym projekcie używam importów. Oto powody:

  1. Zespół korzysta z różnych systemów. Używam Maca; w opisanym przykładzie zespół jest mniej więcej równo podzielony między użytkowników Windows i Maca. Jeśli w repozytorium pojawi się dowiązanie symboliczne, użytkownikom Windows bez trybu deweloperskiego zostanie ono pobrane jako zwykły plik tekstowy zawierający jeden wiersz: AGENTS.md. Powoduje to dziwne błędy: czasem reguły działają, czasem nie, a przyczyna jest niejasna.
  2. Chcę mieć reguły tylko dla Claude’a. Pod @AGENTS.md mój CLAUDE.md zawiera sekcję „Claude Code” z regułami: używaj --effort high przy zadaniach architektonicznych, uruchom npm run build przed git push i nie wywołuj ręcznie /api/v1/deploy. Codex nie rozumie tych poleceń.
  3. Łatwiej diagnozować problemy. Gdy coś pójdzie nie tak, otwieram CLAUDE.md i widzę import oraz własne nadpisania. Dowiązanie symboliczne nie wskazuje, że „to zostało dodane tutaj”. Więcej informacji o diagnozowaniu ustawień Claude Code znajdziesz w przewodniku po trybie bezpiecznym.

Jeśli nie masz reguł specyficznych dla Claude’a, od wersji 2.1.277 dowiązanie nie jest już potrzebne: usuń CLAUDE.md, a Claude Code sam odczyta AGENTS.md. Zachowaj dowiązanie tylko wtedy, gdy ktoś w zespole używa wersji starszej niż 2.1.277 i nie może jej zaktualizować. Jeśli masz reguły dla Claude’a, import jest wygodniejszy w dziewięciu przypadkach na dziesięć.

Co odczytują Codex, Cursor, Copilot, Windsurf i Gemini CLI?

Najważniejsze informacje

Każde narzędzie odczytuje własny plik, czasem więcej niż jeden. Claude Code odczytuje CLAUDE.md, a od września 2026 roku odczytuje też AGENTS.md, jeśli projekt nie zawiera CLAUDE.md. Codex CLI odczytuje AGENTS.md oraz AGENTS.override.md. Cursor odczytuje starszy format .cursorrules albo nowszy .cursor/rules/*.mdc, a od lata 2026 roku także AGENTS.md. Copilot odczytuje .github/copilot-instructions.md lub .github/instructions/*.instructions.md. Windsurf odczytuje starszy plik .windsurfrules albo nowszy katalog .windsurf/rules/. Gemini CLI odczytuje GEMINI.md. Aider i Cline już obsługują AGENTS.md.

Zestawienie siedmiu głównych narzędzi (na podstawie oficjalnej dokumentacji każdego z nich):

NarzędzieGłówny plik instrukcjiAlternatywyCzy odczytuje AGENTS.md?
Claude CodeCLAUDE.md~/.claude/CLAUDE.md, ./.claude/CLAUDE.md, zarządzana politykatak, jeśli projekt nie ma CLAUDE.md (od 2.1.277), w przeciwnym razie przez import
Codex CLI (OpenAI)AGENTS.mdAGENTS.override.mdtak (natywnie)
Cursor.cursor/rules/*.mdc.cursorrules (przestarzały)tak
GitHub Copilot.github/copilot-instructions.md.github/instructions/*.instructions.mdprzez rozszerzenia
Windsurf.windsurf/rules/.windsurfrules (przestarzały)tak
Gemini CLIGEMINI.md-nie
Aider, Cline, opencodeAGENTS.md-tak (natywnie)

Co z tego wynika? Jeśli repozytorium zawiera AGENTS.md (oraz CLAUDE.md z importem, gdy potrzebne są reguły specyficzne dla Claude’a), pięć z siedmiu narzędzi automatycznie otrzymuje aktualne instrukcje. Cursor i Windsurf mają własne pliki natywne. Możesz zostawić je bez zmian (AGENTS.md również jest przez nie odczytywany) albo dodać import @AGENTS.md — ich składnia jest jednak inna i nie zawsze obsługiwana.

Najprostsza strategia dla nowego projektu:

  1. Umieść wszystkie wspólne reguły w AGENTS.md — 95% reguł powinno tam trafić.
  2. Utwórz CLAUDE.md, jeśli potrzebujesz zasad tylko dla Claude’a: w pierwszym wierszu umieść @AGENTS.md, a pod nim dodaj sekcję z regułami wyłącznie dla Claude’a. Jeśli takich reguł nie ma, CLAUDE.md jest zbędny; od wersji 2.1.277 Claude Code sam odczytuje AGENTS.md.
  3. Zachowaj .cursor/rules/ dla Cursora na rzadkie przypadki wymagające czegoś specyficznego dla Cursor (np. poleceń @Codebase i @Docs).
  4. W przypadku Windsurf postępuj podobnie: zapomnij o starym .windsurfrules; używaj nowego .windsurf/rules/ tylko wtedy, gdy potrzebujesz wzorców w jego składni.

Takie podejście daje 80% korzyści przy 20% nakładu pracy. Z mojego doświadczenia, gdy porządkowałem zespoły korzystające z różnych narzędzi w „Antigravity”, utrzymanie więcej niż dwóch źródeł prawdy (wspólnego i przeznaczonego tylko dla Claude’a) staje się uciążliwe. Jeśli ktoś doda regułę do .cursorrules i zapomni o AGENTS.md, tydzień później Cursor i Codex będą się ze sobą nie zgadzać.

Jak /init w Claude Code wykorzystuje istniejący plik AGENTS.md?

Najważniejsze informacje

/init tworzy CLAUDE.md na podstawie zawartości repozytorium i oszczędza 20–30 minut ręcznej pracy. Domyślnie uwzględnia reguły Cursora (.cursor/rules/, .cursorrules) i Copilota (.github/copilot-instructions.md), a w trybie CLAUDE_CODE_NEW_INIT=1 także AGENTS.md, .windsurfrules i .clinerules. Ten tryb uruchamia również interaktywny, wieloetapowy proces: zadaje pytania, bada kod za pomocą subagenta i przedstawia plan przed zapisaniem. Od września 2026 roku /init ma wadę w projekcie zawierającym AGENTS.md: nowy CLAUDE.md wyłącza bezpośredni odczyt AGENTS.md, a reguły trafiają do dwóch plików.

Anthropic opisuje /init w dokumentacji tak:

Uruchomienie /init odczytuje pliki instrukcji innych narzędzi i przenosi odpowiednie fragmenty do wygenerowanego pliku CLAUDE.md: reguły Cursora z .cursor/rules/ lub .cursorrules, reguły Copilota z .github/copilot-instructions.md, a przy CLAUDE_CODE_NEW_INIT=1 również AGENTS.md, .devin/rules/, .windsurf/rules/ lub .windsurfrules, a także .clinerules.

— Anthropic, https://code.claude.com/docs/en/memory

Co to oznacza w praktyce? Opisywane repozytorium zawierało plik .cursorrules z czasów, gdy próbowałem Cursora (około 80 wierszy), oraz AGENTS.md (120 wierszy), który przygotowałem ręcznie. Po uruchomieniu claude /init polecenie uwzględniło oba pliki, usunęło podobne reguły i w ciągu minuty utworzyło przejrzysty CLAUDE.md. Potem sprawdziłem wynik i wprowadziłem drobne poprawki — usunąłem nieaktualne elementy i dodałem strukturę z nagłówkami. Było to szybsze niż pisanie od zera.

Tryb interaktywny, w którym /init odczytuje również AGENTS.md, włącza się za pomocą zmiennej środowiskowej:

CLAUDE_CODE_NEW_INIT=1 claude

Po uruchomieniu /init Claude zadaje serię pytań doprecyzowujących: które artefakty skonfigurować (CLAUDE.md, skills, hooks), z jakiego stosu korzysta projekt i jakich poleceń używać do testów. Następnie subagent eksploruje bazę kodu — odczytuje package.json, README.md i pliki konfiguracyjne — oraz uzupełnia brakujące elementy. Na końcu przedstawia propozycję, którą można edytować przed zapisaniem. Więcej informacji o konfigurowaniu Claude Code przy rozpoczynaniu projektu znajdziesz w osobnym przewodniku.

Teraz o wadzie. Jeśli projekt ma już aktywny plik AGENTS.md, /init utworzy obok niego CLAUDE.md z kopią jego reguł. Od tej chwili Claude Code domyślnie odczytuje tylko CLAUDE.md, więc znowu powstają dwa źródła prawdy: aktualizujesz AGENTS.md, a Claude nadal korzysta ze starej kopii. Polecenie /import działa podobnie: dopisuje jednorazową kopię AGENTS.md do CLAUDE.md. Aby zachować jedno źródło, po /init umieść import @AGENTS.md w pierwszym wierszu CLAUDE.md i usuń z niego wszystko, co powtarza zawartość AGENTS.md.

/init to dobry punkt wyjścia dla nowego projektu lub projektu przenoszonego z Cursora albo Copilota. Nie musisz szukać w internecie „najlepszego szablonu CLAUDE.md” — Anthropic już uwzględnia zawartość repozytorium. Jeśli projekt ma już aktywny AGENTS.md i nie ma reguł przeznaczonych wyłącznie dla Claude’a, /init jest zbędny: Claude Code sam odczyta AGENTS.md.

Jak rozdzielić wspólne instrukcje i instrukcje specyficzne dla Claude’a?

Najważniejsze informacje

Reguły zrozumiałe dla dowolnego agenta AI umieść w AGENTS.md: czego nie ruszać, jak nazywać branche, że .env zawiera sekret i jakich poleceń używać do testów. Zasady specyficzne dla Claude Code umieść w CLAUDE.md (pod importem): tryb planowania, skills, hooks, odwołania do umiejętności i nazwy modeli zależne od wersji. Rozróżnienie jest proste: jeśli reguła zaczyna się od „Claude powinien”, należy do CLAUDE.md. Jeśli zaczyna się od „narzędzie powinno”, należy do AGENTS.md.

Rozdzielam je według tej zasady. Wspólne reguły, które trafiają do AGENTS.md:

  • Czego nie ruszać w kodzie. Plik .env, node_modules, katalog prisma/migrations (zmiany wyłącznie przez prisma migrate), .next/, .git/.
  • Jak nazywać elementy. Branche: feat/, fix/, chore/. Commity: prefiksy feat:, fix:, docs: oraz krótki opis. Pliki komponentów w kebab-case.
  • Polecenia testów i lintowania. npm run build, npm run lint, npm test. Wskaż, które polecenie należy uruchomić przed git push.
  • Zasady architektoniczne. Co trafia do src/lib/, co do src/components/, gdzie znajduje się logika biznesowa i gdzie interfejs użytkownika.
  • Bezpieczeństwo. Nigdy nie zatwierdzaj sekretów w repozytorium. Dostęp do produkcyjnej bazy danych uzyskuj wyłącznie przez prod-psql. Do łączenia się z produkcją przez SSH używaj aliasu prod, a nie root@IP.

Reguły specyficzne dla Claude’a, które umieszczam w CLAUDE.md pod @AGENTS.md:

  • Tryb planowania. Przy zmianach w ryzykownych katalogach (na przykład src/billing/) używaj plan mode.
  • Poziom wysiłku. Przy zadaniach architektonicznych używaj --effort high, a przy rutynowej pracy medium.
  • Skills. Wskaż, których agentów AI i umiejętności używać w poszczególnych sytuacjach. Na przykład: „Podczas pracy nad przewodnikiem uruchom skill build-masterskaya-guide”.
  • Pamięć Claude’a. Określ, co zapisywać w pamięci automatycznej, a co w CLAUDE.local.md. Więcej informacji znajdziesz w przewodniku po pamięci i CLAUDE.md.
  • Hooks. Jeśli w .claude/settings.json skonfigurowano hooks, opisz w CLAUDE.md, co robią (Codex i Cursor ich nie znają i nie muszą ich znać).
  • Skills i polecenia. Lista często używanych przeze mnie poleceń slash (/init, /cd, /memory, /plan).

Granica nie zawsze jest oczywista. Na przykład „nigdy nie wykonuj git push --force do main” to wyraźnie wspólna reguła, więc trafia do AGENTS.md. Jednak „przed git push do aktywnego brancha najpierw użyj trybu planowania” dotyczy wyłącznie Claude Code, więc należy do CLAUDE.md. Sprawdź: „Gdybym jutro usunął Claude Code i zostawił tylko Codex, czy ta reguła nadal miałaby zastosowanie?” Jeśli tak, umieść ją w AGENTS.md; jeśli nie, w CLAUDE.md.

Co powinno znaleźć się w AGENTS.md, a co w CLAUDE.md lub .claude/rules?

Najważniejsze informacje

W dużym projekcie jeden AGENTS.md nie wystarczy — zbytnio się rozrasta, a każdy agent otrzymuje w kontekście niepotrzebne materiały. Rozwiązaniem jest katalog .claude/rules/ z osobnymi plikami tematycznymi oraz nagłówkiem YAML paths: do uruchamiania reguł zależnie od ścieżki. Na przykład reguła API obowiązuje tylko wtedy, gdy Claude pracuje w src/api/. Pozwala to znacznie oszczędzić miejsce w oknie kontekstowym. Odpowiednikiem dla Cursora jest .cursor/rules/, a dla Windsurf — .windsurf/rules/.

Jeśli reguły przekraczają 200 wierszy, czas je podzielić. Dokumentacja Anthropic zaleca celować w 200 wierszy na plik, ponieważ długie pliki CLAUDE.md sprawiają, że Claude po cichu coraz rzadziej stosuje się do instrukcji: wygląda, jakby je czytał, ale rzadziej ich przestrzega.

Struktura dużego projektu, która sprawdza się u mnie:

my-project/
├── AGENTS.md                    # 100-150 wierszy, wspólne
├── CLAUDE.md                    # 30-50 wierszy: @AGENTS.md + reguły Claude’a
└── .claude/
    ├── CLAUDE.md                # alternatywa dla pliku w katalogu głównym, ten sam plik
    └── rules/
        ├── api.md               # z paths: ['src/api/**']
        ├── components.md        # z paths: ['src/components/**']
        ├── testing.md           # bez paths, zawsze aktywne
        └── security.md          # bez paths, zawsze aktywne

Każdy plik w .claude/rules/ może mieć nagłówek:

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

# Reguły API
- Każdy endpoint waliduje dane wejściowe za pomocą zod
- Błędy używają standardowego formatu `{error, code}`
- Wymagane są komentarze OpenAPI

Claude ładuje te reguły tylko podczas pracy z plikami pasującymi do tego wzorca. Jeśli zmieni src/components/Button.tsx, reguły API nie zostaną dodane do kontekstu. Dzięki temu okno kontekstowe wykorzystuje się tylko do tego, co istotne. Katalog .claude/rules/ działa również bez CLAUDE.md: jeśli projekt zawiera tylko AGENTS.md, jego reguły są ładowane razem z nim i nie wyłączają bezpośredniego odczytu AGENTS.md.

Cursor i Windsurf obsługują to samo podejście przez katalogi .cursor/rules/ i .windsurf/rules/. Standard AGENTS.md może odwoływać się do tych katalogów, ale składnia między narzędziami nie jest jeszcze w pełni stabilna. Bezpieczniej jest trzymać wspólne reguły w AGENTS.md, a reguły ograniczone do ścieżek powielać w .claude/rules/ i .cursor/rules/ — to rzadkie przypadki specyficzne dla narzędzi, a nie większość reguł.

Przydatne lokalizacje pliku CLAUDE.md, od najszerszego do najwęższego zakresu:

PoziomLokalizacjaPrzeznaczenie
Zarządzana polityka/Library/Application Support/ClaudeCode/CLAUDE.md (Mac), /etc/claude-code/CLAUDE.md (Linux)Reguły firmowe, IT/DevOps
Użytkownik~/.claude/CLAUDE.mdOsobiste preferencje we wszystkich projektach
Projekt./CLAUDE.md lub ./.claude/CLAUDE.mdReguły zespołu projektowego
Lokalny./CLAUDE.local.md (w .gitignore)Osobiste preferencje dla konkretnego projektu

Przykładowy ~/.claude/CLAUDE.md może zawierać dwie reguły: „odpowiadaj w preferowanym przez użytkownika języku” oraz „pisz nazwę Ailoot dokładnie w tej formie”. Reguły obowiązują we wszystkich projektach, więc nie trzeba ich powielać w każdym repozytorium.

Spośród tych czterech poziomów bezpośredni odczyt AGENTS.md wyłączają tylko projektowy CLAUDE.md i CLAUDE.local.md. Osobisty ~/.claude/CLAUDE.md i zarządzana polityka nie przeszkadzają — Claude Code odczytuje je razem z AGENTS.md.

Co zrobić, jeśli AGENTS.md w projekcie jest już nieaktualny?

Najważniejsze informacje

Jeśli AGENTS.md został przygotowany w 2025 roku dla Codex lub Aider i od tamtej pory go nie edytowano, otwórz projekt w Claude Code i poproś Claude’a o edycję pliku. AGENTS.md to dokument, który powinien żyć i być aktualizowany; specyfikacja Linux Foundation również ulega zmianom. Główna zasada aktualizacji brzmi: każda reguła musi odpowiadać na pytanie „Co mam dość powtarzać Claude’owi/Codexowi?”. Jeśli nie odpowiada, zarchiwizuj ją.

W opisanym projekcie miałem plik AGENTS.md z maja 2025 roku — 180 wierszy, z których wiele było nieaktualnych (wspominał o zmienionych endpointach Anthropic API, przykładach składni claude --tools, która już nie istnieje, oraz regułach dotyczących ~/.claude/projects/ opartych na nieaktualnej strukturze).

Oto plan, którego użyłem do jego aktualizacji:

  1. Przejrzyj plik z claude w trybie planowania. Otwieram repozytorium, uruchamiam claude --safe-mode i proszę: „Przeczytaj ponownie AGENTS.md i zaproponuj listę nieaktualnych lub powtarzających się elementów. Nie edytuj pliku — tylko je wymień”. W dwie minuty otrzymałem listę 23 elementów do sprawdzenia.
  2. Usuń oczywiście nieaktualne elementy. Spośród 23 pozycji 9 było ewidentnie nieaktualnych — składnia poleceń, endpointy i nazwy flag. Usunąłem te wiersze.
  3. Połącz duplikaty. Kolejne 6 pozycji powtarzało tę samą treść innymi słowami („nie wymuszaj pushowania”, „nigdy nie używaj --force”, „unikaj git push -f”). Połączyłem je w jeden wiersz.
  4. Dodaj nowe pozycje. Dodałem to, co zauważyłem, że Claude/Codex regularnie robiły źle w ciągu ostatniego miesiąca, zgodnie z zasadą „jeden wiersz na wzorzec błędu”. W ten sposób doszło 8 nowych pozycji.
  5. Uruchom subagenta do końcowego przeglądu. Zleciłem Claude’owi przegląd z instrukcją „znajdź sprzeczności, niejasności i duplikaty”. Znalazł trzy sformułowania, które można było ulepszyć. Poprawiłem je.

Po godzinie AGENTS.md miał 110 wierszy, był aktualny, a ja znałem osobiście każdy z nich. Bez trudu przygotowałem na jego podstawie 30-wierszowy CLAUDE.md. Codex zaczął też wyraźnie ostrożniej podchodzić do testów — podejrzewam, że niektóre jego „dziwne” decyzje wynikały z tego, że w dobrej wierze stosował się do nieaktualnych instrukcji.

Główne zasady utrzymywania aktualnego AGENTS.md:

  • Każda reguła odpowiada na powtarzający się błąd. Jeśli w ciągu miesiąca ani razu o niej nie pomyślałem, nie warto jej zachowywać.
  • Pisz reguły jako polecenia, nie teorię. „Używaj dwóch spacji” to reguła. „Styl kodu powinien być schludny” — nie.
  • Konkret jest lepszy od ogólników. „Uruchom npm run build przed git push” to reguła. „Przetestuj swoje zmiany” — nie.

Co zdecydowanie NIE działa w tej konfiguracji?

Najważniejsze informacje

Import @AGENTS.md nie sprawi, że różne narzędzia będą zachowywać się tak samo. Każde ma swoje osobliwości: Codex CLI nie zna .claude/rules/ ani hooks. Cursor ma własny mechanizm autouzupełniania, który nie odczytuje CLAUDE.md podczas podpowiadania tekstu. Copilot stosuje się do .github/copilot-instructions.md, a same reguły w AGENTS.md mu nie wystarczą. Nie chodzi o zasadę „jeden plik = jedno zachowanie”, lecz o „jedno źródło reguł podstawowych, a następnie dodatki dla każdego narzędzia”.

Kilka rzeczy, których nauczyłem się przez sześć miesięcy pracy z tą konfiguracją:

1. Autouzupełnianie Cursor nie korzysta z AGENTS.md. Gdy Cursor podpowiada dokończenie wiersza w edytorze, nie odczytuje AGENTS.md w czasie rzeczywistym — działa wtedy osobny, szybki mechanizm. Reguły z AGENTS.md mają znaczenie tylko wtedy, gdy wysyłasz prośbę w czacie Cursor. Oznacza to, że zapisanie w AGENTS.md „nie używaj var, używaj const” nie wpłynie na autouzupełnianie; trzeba to skonfigurować w ESLint lub konfiguracji TypeScript.

2. Hooks Claude Code zapisane w AGENTS.md nie działają w Codex. Jeśli .claude/settings.json zawiera skonfigurowany hook PreToolUse, który blokuje określone działanie, ta informacja jest przydatna tylko Claude’owi. Codex nie zna hooks — dla niego „narzędzie samo decyduje”. Warto więc napisać „nie rób X” w AGENTS.md, a „istnieje hook, który fizycznie blokuje X” w CLAUDE.md, pod importem.

3. Copilot i .github/copilot-instructions.md. GitHub Copilot odczytuje własny plik i nadal nie radzi sobie dobrze z odczytem AGENTS.md. Jeśli Twój zespół aktywnie korzysta z Copilota, dodaj osobny .github/copilot-instructions.md ze skróconą wersją reguł albo użyj Copilot Extensions obsługujących AGENTS.md. Sytuacja szybko się zmienia, więc za trzy do sześciu miesięcy może wyglądać inaczej.

4. Git nie śledzi dowiązania symbolicznego jako zmiany w CLAUDE.md. Jeśli uruchomisz ln -s AGENTS.md CLAUDE.md, a tydzień później zaktualizujesz AGENTS.md, Git pokaże diff tylko dla AGENTS.md. To normalne, ale osoba przeglądająca PR może nie zauważyć, że CLAUDE.md też został zaktualizowany przez dowiązanie symboliczne. Rozwiązanie: napisz jawnie w opisie PR: „zaktualizowano AGENTS.md; Claude Code widzi ten sam plik przez dowiązanie symboliczne”.

5. Głębokie importy trudno diagnozować. Jeśli AGENTS.md importuje @docs/coding-style.md, a ten importuje @docs/typescript.md, rozwiązywanie konfliktów między regułami staje się trudne. Ograniczam importy do jednego poziomu (CLAUDE.md → AGENTS.md) i nie zagnieżdżam ich dalej. Anthropic udostępnia hook InstructionsLoaded, który rejestruje wczytane pliki — przydatne narzędzie do diagnozowania konfiguracji warstwowych. Uwaga: hook uruchamia się dla AGENTS.md dołączonego przez import lub dowiązanie symboliczne, ale nie dla AGENTS.md odczytanego samodzielnie przez Claude Code.

Źródła

Kompletny zestaw vibe coding na jeden wieczór: klon AI + Drugi Mózg + inżynieria kontekstu.

Poznaj Ailoot.

Więcej szczegółów

Pytania i odpowiedzi

Kiedy użyć importu zamiast dowiązania?

Użyj @AGENTS.md w CLAUDE.md przy dodatkach właściwych Claude lub Windows w zespole. Dowiązanie łączy obie nazwy z tą samą treścią, więc nie przechowa osobnej sekcji tylko Claude.

Jak sprawdzić wczytanie wspólnych instrukcji?

Uruchom /memory i sprawdź listę plików. Jeśli CLAUDE.md lub CLAUDE.local.md blokuje bezpośrednie AGENTS.md w konfiguracji, dodaj import lub ustaw ładowanie obu i zacznij świeżą sesję.

Wszystkie artykuły