Pamięć Claude Code: CLAUDE.md, reguły i pamięć automatyczna
Pamięć Claude Code to dwa mechanizmy przenoszące wiedzę między sesjami: pliki CLAUDE.md i .claude/rules/, które piszą ludzie, oraz pamięć automatyczna, którą Claude prowadzi sam dla siebie. Wszystkie ładują się jako kontekst i sklejają, zamiast się nadpisywać, więc kierują Claude’em, ale niczego nie wymuszają. To, co musi zdarzyć się zawsze, należy do hooka albo reguły uprawnień.
Nowa osoba w zespole prosi Claude Code o „dodanie endpointu do zwrotów”. Claude pisze trasę w Expressie, w JavaScripcie, w src/routes/, a twój serwis stoi na Fastify, jest wyłącznie w TypeScripcie i trzyma handlery w src/api/v2/. Dwa tygodnie później sesja seniora robi to dobrze, bo jego prywatny ~/.claude/CLAUDE.md akurat o tym mówi, a zespół kłóci się, czy „AI” jest wiarygodne. Model w obu sesjach jest ten sam. Kontekst, który dostał, już nie.
Ta strona jest dla developera, który odpowiada za konfigurację agenta w repozytorium, i dla tech leada, który chce takiego samego zachowania w każdej sesji zespołu. Zakłada, że Claude Code jest zainstalowany i choć raz uruchomiony w repozytorium; jeśli nie, zacznij od inicjalizacji projektu.
Co daje dobrze ustawiona pamięć Claude Code
Dział zatytułowany „Co daje dobrze ustawiona pamięć Claude Code”- Mapę wszystkich plików, które Claude Code ładuje: kiedy się ładują i kto jeszcze je widzi
- Pięć kroków konfiguracji nowego lub istniejącego repozytorium, z promptem, który osadza wynik
/initw tym, jak repo naprawdę działa - Tabelę decyzyjną: czy instrukcja trafia do
CLAUDE.md, reguły ze ścieżkami, pliku lokalnego, skilla, hooka, czy donikąd - Cztery prompty do skopiowania: bootstrap, audyt, kompresja i przeniesienie pamięci automatycznej do
CLAUDE.md - Procedurę weryfikacji, która dowodzi, że pliki się załadowały i są przestrzegane, bez czytania każdego diffa
- Tryby awarii razem z poleceniem, które diagnozuje każdy z nich
Które pliki pamięci ładuje Claude Code i kiedy?
Dział zatytułowany „Które pliki pamięci ładuje Claude Code i kiedy?”Każdy plik poniżej jest czytany jako kontekst. Żaden nie nadpisuje innego: Claude Code skleja je od najszerszego zakresu do najbardziej szczegółowego, a w obrębie katalogu CLAUDE.local.md trafia za CLAUDE.md. Gdy dwie instrukcje są sprzeczne, Claude może zastosować dowolną z nich, więc konflikt naprawiasz, usuwając jedną, a nie licząc na kolejność.
| Zakres | Lokalizacja | Kiedy się ładuje | Kto widzi |
|---|---|---|---|
| Polityka zarządzana | macOS /Library/Application Support/ClaudeCode/CLAUDE.md, Linux i WSL /etc/claude-code/CLAUDE.md, Windows C:\Program Files\ClaudeCode\CLAUDE.md albo klucz claudeMd w ustawieniach zarządzanych | Przy starcie; nie da się jej wykluczyć | Wszyscy na tej maszynie |
| Użytkownik | ~/.claude/CLAUDE.md i ~/.claude/rules/*.md | Przy starcie | Ty, w każdym projekcie |
| Projekt | ./CLAUDE.md lub ./.claude/CLAUDE.md oraz każdy CLAUDE.md w katalogach nad miejscem uruchomienia | Przy starcie | Zespół, przez git |
| Reguły projektu | .claude/rules/**/*.md | Przy starcie albo, jeśli reguła ma frontmatter paths, dopiero gdy Claude czyta pasujący plik | Zespół, przez git |
| Lokalny | ./CLAUDE.local.md | Przy starcie, zaraz po CLAUDE.md z tego samego katalogu | Ty, w tym checkoucie. Dopisz go do .gitignore sam |
| Podkatalog | packages/web/CLAUDE.md i podobne, poniżej katalogu uruchomienia | Gdy Claude czyta plik w tym katalogu | Zespół, przez git |
| Pamięć automatyczna | ~/.claude/projects/<project>/memory/MEMORY.md i pliki tematyczne | Pierwsze 200 linii lub 25 KB MEMORY.md przy starcie; pliki tematyczne na żądanie | Ty, na tej maszynie, we wszystkich worktree repozytorium |
Trzy szczegóły z oficjalnej dokumentacji pamięci zmieniają sposób pisania tych plików:
- Rozmiar. Anthropic zaleca poniżej 200 linii na
CLAUDE.md. Claude Code ładuje w całości plik do 4 MiB, a większy pomija; ostrzega przy starcie (i w/status), gdy plik albo wszystkie pliki razem przekraczają zalecaną długość. - Sposób dostarczenia. Treść
CLAUDE.mdtrafia jako wiadomość użytkownika po prompcie systemowym. To mechaniczny powód, dla którego jest tylko wskazówką. - Komentarze. Blokowe komentarze HTML (
<!-- notatka dla opiekunów -->) są usuwane przed wstrzyknięciem. Zostawiaj w nich notatki dla ludzi, które nie kosztują tokenów.
AGENTS.md mieści się w tej samej tabeli. Od v2.1.277 Claude Code czyta AGENTS.md, gdy w katalogu uruchomienia ani wyżej nie ma CLAUDE.md, .claude/CLAUDE.md ani CLAUDE.local.md; sesje na Amazon Bedrock, Google Cloud, Microsoft Foundry, przez bramkę LLM albo z wyłączoną telemetrią potrzebują wersji v2.1.281. Obie wersje były 2026-09-26 dostępne tylko w kanale wydań latest (kanał stable był na v2.1.274), więc zespół na stable nadal potrzebuje importu @AGENTS.md pokazanego niżej. Domyślne zachowanie zmienia ustawienie Project instructions w /config, na przykład wartość claude-md-and-agents-md czyta oba pliki.
Gdzie powinna trafić każda instrukcja?
Dział zatytułowany „Gdzie powinna trafić każda instrukcja?”Większość problemów z pamięcią wynika z tego, że instrukcja trafiła w złe miejsce: linia w zawsze ładowanym pliku, która dotyczy jednego katalogu, albo „musi”, które zagwarantuje tylko hook.
| Instrukcja to… | Umieść ją w | Dlaczego |
|---|---|---|
| Fakt potrzebny w każdej sesji: polecenia build, test i lint, nieoczywista konwencja, decyzja podjęta wbrew oczywistemu wyborowi | Projektowym CLAUDE.md | Ładuje się wszędzie i przechodzi review jak kod |
| Coś ważnego tylko w jednej części drzewa (handlery API, migracje, komponenty React) | .claude/rules/<temat>.md z paths | Ładuje się tylko, gdy Claude czyta pasujący plik |
| Wieloetapowa procedura używana od czasu do czasu (release, triaż incydentu) | Skillu | Ładuje się po wywołaniu lub gdy jest istotny, a nie w każdej sesji |
Coś, co musi się dziać zawsze (formatowanie po edycji, blokada git push --force) | Hooku lub regule permissions.deny | Wykonuje się niezależnie od decyzji Claude’a |
| Twój URL sandboksa, lokalny port, konto testowe | CLAUDE.local.md | Prywatne i niecommitowane |
| Preferencja, którą masz w każdym repo | ~/.claude/CLAUDE.md lub ~/.claude/rules/ | Idzie za tobą, a nie za projektem |
| Przypomnienie o polityce firmy | Zarządzanym CLAUDE.md | Każdy użytkownik na maszynie, bez możliwości wykluczenia |
| Opis architektury, mapa katalogów, lista zależności | Nigdzie | Claude wywnioskuje je z kodu, a spisana kopia się starzeje |
Z ostatnim wierszem zespoły walczą najdłużej. Argument za usuwaniem zamiast dopisywania, wspólny dla wszystkich narzędzi, wraz z protokołem testowania każdego cięcia, znajdziesz w artykule Przycinanie CLAUDE.md i AGENTS.md.
Skonfiguruj pamięć repozytorium
Dział zatytułowany „Skonfiguruj pamięć repozytorium”-
Wygeneruj szkic przez
/init. W sesji w katalogu głównym repozytorium uruchom/init. Claude analizuje kod i piszeCLAUDE.mdalbo, jeśli plik już istnieje, proponuje poprawki. Wciąga też reguły Cursora (.cursor/rules/,.cursorrules) i.github/copilot-instructions.md. Przenosisz się z innego agenta w całości?/import codex|gemini|cursor(od v2.1.213; Cursor od v2.1.265; niedostępne na Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry i Claude Platform on AWS) dopisuje jednorazową kopię jego plików z instrukcjami, np.AGENTS.md, do odpowiedniegoCLAUDE.mdi przenosi serwery MCP, polecenia, subagenty i skille; na wyniku uruchom prompt audytowy z dalszej części strony.Żeby dostać tryb interaktywny, ustaw
CLAUDE_CODE_NEW_INIT=1w powłoce albo w blokuenvpliku ustawień przed uruchomieniem/init. Wtedy/initpyta, co utworzyć (plikiCLAUDE.md, skille, hooki), bada kod subagentem, dopytuje i pokazuje propozycję przed zapisem. Z tą zmienną czyta teżAGENTS.md,.windsurf/rules/,.devin/rules/i.clinerules, a jego opcja osobista tworzyCLAUDE.local.mdi dopisuje go do.gitignore. -
Osadź szkic w tym, co repo naprawdę robi. Wynik
/initzwykle opisuje drzewo plików, które Claude i tak widzi. Zastąp go tym, czego Claude nie wywnioskuje, używając promptu bootstrap poniżej. -
Wynieś reguły dla konkretnych katalogów z pliku głównego. Wszystko, co dotyczy jednego obszaru, trafia do
.claude/rules/z listąpaths(zobacz reguły ze ścieżkami). -
Dodaj warstwę osobistą. Szczegóły swojej maszyny wpisz do
CLAUDE.local.mdi dopiszCLAUDE.local.mddo.gitignore. Jeśli pracujesz na kilku worktree gita, plik lokalny istnieje tylko w tym worktree, w którym go utworzyłeś, więc zamiast niego zaimportuj plik z katalogu domowego:@~/.claude/payments-api-personal.md. -
Sprawdź, co się załadowało. Uruchom
/contexti przejrzyj listę Memory files. Plik, którego tam nie ma, jest dla Claude’a niewidoczny, choćby był świetny.
Jak wygląda projektowy CLAUDE.md, który zasługuje na każdą linię
Dział zatytułowany „Jak wygląda projektowy CLAUDE.md, który zasługuje na każdą linię”Tak wygląda wynik dla scenariusza ze zwrotami: 27 linii, z których każda dotyczy czegoś, co Claude inaczej zrobiłby źle.
# Payments API
<!-- Owner: platform team. Review changes to this file like code. -->
## Commands- `pnpm dev` starts the API on port 3000; it needs Redis on localhost:6379- `pnpm test` runs Vitest; run it before you say a change is done- `pnpm typecheck` is the type gate; CI fails without it- `pnpm db:migrate` applies Prisma migrations to the local database only- `pnpm db:reset` DROPS the local database; never run it unless I ask
## Conventions- Fastify + TypeScript only. No Express, no `.js` source files- HTTP handlers live in `src/api/v2/<resource>/`, one file per route- Validate every request and response with the Zod schemas in `src/schemas/`- Errors are RFC 7807 problem details via `problem()` in `src/lib/errors.ts`- Log with `logger` from `src/lib/logger.ts`, never `console.log`
## Decisions that look wrong but are deliberate- Money is an integer number of cents (`amountCents`), never a float, because the ledger reconciles to the cent- We do not use Prisma transactions for refunds; `src/ledger/refund.ts` uses an outbox table so the provider call can be retried idempotently
## Never- Edit a migration file after it is merged; add a new migration- Add a dependency without asking firstDziała dzięki dwóm cechom. Każda instrukcja jest na tyle konkretna, że da się ją sprawdzić („run pnpm test before you say a change is done”, a nie „test your changes”), a każde „dlaczego” stoi przy regule, którą uzasadnia, więc Claude potrafi zastosować regułę w przypadku, o którym plik nie wspomina.
Równie ważne jest to, czego tu nie ma. Mnożenie wyróżnień w rodzaju **ALWAYS**, MUST czy IMPORTANT nie sprawia, że reguła się trzyma; gdy Claude ją ignoruje, przyczyną jest zwykle długość, ogólnikowość albo sprzeczność gdzie indziej. Workflow gita, etykieta PR-ów czy checklista onboardingu, które są już w CONTRIBUTING.md, nie potrzebują drugiej kopii: zaimportuj je albo zostaw Claude’owi do przeczytania, gdy zadanie tego wymaga.
Jak podzielić duży CLAUDE.md importami?
Dział zatytułowany „Jak podzielić duży CLAUDE.md importami?”CLAUDE.md może wciągać inne pliki składnią @path w dowolnym miejscu tekstu:
See @README.md for the product overview and @package.json for scripts.
## Git workflow- Follow @docs/git-workflow.mdŚcieżki względne liczą się od pliku, który zawiera import, importy mogą się zagnieżdżać do czterech poziomów, a ścieżki w code spanach i blokach kodu nie są importowane. Importy porządkują, ale nie oszczędzają kontekstu, bo każdy zaimportowany plik ładuje się przy starcie. Gdy projekt po raz pierwszy importuje plik spoza katalogu roboczego, Claude Code prosi o zgodę na importy zewnętrzne; odmowa wyłącza je dla tego projektu.
Jeśli repozytorium ma już AGENTS.md dla Codeksa lub innych agentów, zostaw go jako jeden wspólny plik, a dodatki specyficzne dla Claude’a umieść w małym CLAUDE.md obok:
@AGENTS.md
## Claude Code- Use plan mode for any change under `src/ledger/`Import działa na każdej wersji i u każdego dostawcy, także w sesjach, które nie potrafią czytać AGENTS.md bezpośrednio. Jak ten sam plik czyta Codex, opisuje artykuł AGENTS.md i skille w Codeksie.
Ogranicz reguły do części kodu
Dział zatytułowany „Ogranicz reguły do części kodu”Plik w .claude/rules/ bez frontmattera ładuje się w każdej sesji z tym samym priorytetem co .claude/CLAUDE.md. Dodaj listę paths, a załaduje się dopiero wtedy, gdy Claude przeczyta pasujący plik:
---paths: - "src/api/**/*.ts" - "src/schemas/**/*.ts"---
# API handler rules
- Every handler validates input and output with a Zod schema from `src/schemas/`- Return `ApiResponse<T>`; never return a raw Prisma model- Rate-limit public routes with the `rateLimit` plugin registered in `src/app.ts`Co dokumentacja mówi o plikach reguł i na czym ludzie się potykają:
pathsto jedyne pole frontmattera, które Claude Code czyta (sprawdzone na v2.1.283, 2026-09-26). Przyjmuje listę YAML albo ciąg rozdzielony przecinkami oraz rozwijanie nawiasów klamrowych (src/**/*.{ts,tsx}).- Jeśli YAML się nie parsuje, Claude Code ignoruje frontmatter i ładuje regułę wszędzie. Błąd parsowania zobaczysz po uruchomieniu
claude --debug. - Reguła włącza się, gdy Claude czyta pasujący plik, a nie przy każdym wywołaniu narzędzia. Do tego momentu nie ma jej w kontekście.
.claude/rules/jest przeszukiwany rekurencyjnie, więc podkatalogifrontend/ibackend/działają.- W monorepo, w którym do twoich sesji ładują się pliki
CLAUDE.mdinnych zespołów, ustawclaudeMdExcludes(listę globów dopasowywanych do ścieżek bezwzględnych) w.claude/settings.local.json. Pełny układ monorepo opisuje artykuł Claude Code w dużych bazach kodu.
Co zapisuje pamięć automatyczna i jak trzymać ją w ryzach
Dział zatytułowany „Co zapisuje pamięć automatyczna i jak trzymać ją w ryzach”Pamięć automatyczna jest domyślnie włączona. W trakcie pracy Claude zapisuje notatki czterech typów (w polu type frontmattera każdego pliku): user (twoja rola i preferencje), feedback (poprawki, które dajesz, i podejścia, które potwierdzasz), project (bieżąca praca, terminy i decyzje, których nie wywnioskuje z kodu ani historii gita) oraz reference (gdzie są informacje spoza projektu, np. tracker czy dashboard). Pomija to, co da się wywnioskować z kodu, i to, co już mówi twój CLAUDE.md. Komunikaty „Saved 2 memories” lub „Recalled 2 memories” w interfejsie oznaczają, że czyta lub zapisuje ten katalog.
MEMORY.md to indeks, jedna linia na wspomnienie. Przy starcie ładuje się tylko jego pierwsze 200 linii lub 25 KB, zależnie od tego, co nastąpi wcześniej; blisko limitu Claude Code każe Claude’owi go skrócić, a gdy zapis go przekroczy, zwraca błąd. Pliki tematyczne ładują się dopiero, gdy Claude je otworzy. Od v2.1.214 każdy plik pamięci z frontmatterem ma znacznik modified, więc widać, jak stary jest dany fakt.
Trzy rozróżnienia decydują o tym, czy pamięć automatyczna pomaga, czy po cichu wprowadza w błąd:
- „Remember X” trafia do pamięci automatycznej, nie do
CLAUDE.md. Zdanie „remember that the API tests need a local Redis” zapisuje prywatną notatkę na twojej maszynie. Żeby zmienić plik zespołu, powiedz „add this to CLAUDE.md” albo otwórz go przez/memory. - Jest lokalna dla maszyny. Twoi koledzy, runnery CI i sesje w chmurze nigdy jej nie widzą. Poprawkę ważną dla wszystkich trzeba przenieść do
CLAUDE.mdalbo reguły. - Subagenty jej nie dziedziczą. Pamięć automatyczna głównej rozmowy nie ładuje się do subagentów (wyjątkiem jest fork). Subagent może mieć własną dzięki polu
memory; zobacz własne subagenty.
Żeby ją wyłączyć, użyj przełącznika w /memory (zapisuje autoMemoryEnabled w twoich ustawieniach użytkownika), ustaw "autoMemoryEnabled": false w ustawieniach jednego projektu albo wyeksportuj CLAUDE_CODE_DISABLE_AUTO_MEMORY=1.
Zapisz regułę w chwili, gdy poprawiasz Claude’a
Dział zatytułowany „Zapisz regułę w chwili, gdy poprawiasz Claude’a”Najtaniej pisze się regułę zaraz po tym, jak Claude po raz drugi zrobi coś źle albo review wyłapie coś, co Claude powinien był wiedzieć. Miejsce docelowe wybierasz według tego, kto potrzebuje reguły:
add to CLAUDE.md: we use pnpm, never npm or yarnremember that my local Postgres runs on port 5433Pierwsza linia zmienia wspólny plik, który przejdzie review razem z resztą twojego diffa. Druga zostaje w twojej pamięci automatycznej. Formułuj regułę tak konkretnie jak prompt: „we use pnpm, never npm or yarn” da się sprawdzić, „remember our package manager” już nie.
Jak udowodnić, że pliki pamięci działają?
Dział zatytułowany „Jak udowodnić, że pliki pamięci działają?”Konfiguracja pamięci jest warta tyle, ile jej wpływ na wynik, a nie powinieneś musieć czytać każdego diffa, żeby wiedzieć, że działa. Sprawdź trzy rzeczy, od najtańszej do najmocniejszej.
1. Plik się załadował. Uruchom /context i przeczytaj Memory files. Reguły ze ścieżkami i pliki w podkatalogach ładują się później, więc zapisuj każde ładowanie hookiem InstructionsLoaded. Dodaj to do .claude/settings.local.json; potrzebny jest jq:
{ "hooks": { "InstructionsLoaded": [ { "hooks": [ { "type": "command", "command": "jq -c '{file: .file_path, scope: .memory_type, why: .load_reason, via: .trigger_file_path}' >> ~/.claude/instructions-loaded.log" } ] } ] }}load_reason przyjmuje wartości session_start, nested_traversal, path_glob_match, include lub compact, a trigger_file_path wskazuje plik, którego odczyt wywołał leniwe ładowanie, więc log pokazuje dokładnie, kiedy i dlaczego reguła weszła do kontekstu. Hook służy tylko do obserwacji: nie może zablokować ani zmienić ładowania. Nie uruchamia się też dla AGENTS.md czytanego bezpośrednio przez Project instructions (sprawdzone na v2.1.283, 2026-09-26); uruchamia się, gdy CLAUDE.md importuje AGENTS.md, co jest kolejnym powodem, żeby import zostawić.
2. Model widzi instrukcję. Sonda w trybie headless prosi Claude’a o zacytowanie tego, co dostał, i odróżnia regułę, której Claude nigdy nie dostał, od takiej, którą dostał, ale jej nie zastosował. Uruchom ją w terminalu z katalogu, którego reguły testujesz:
claude -p "Without reading any files, quote word for word every instruction you were given about database migrations. If there is none, answer NONE."Sonda widzi tylko to, co ładuje się przy starcie; żeby przetestować regułę ograniczoną do ścieżek, każ jej najpierw przeczytać plik, do którego reguła pasuje (na przykład Read prisma/migrations/<latest>/migration.sql, then quote…).
3. Zachowanie się zmieniło. Trzymaj dla repozytorium trzy reprezentatywne zadania (na przykład: dodaj endpoint, dodaj migrację, napraw padający test). Po każdej zmianie pamięci uruchom każde w świeżej sesji i niech wynik ocenią istniejące bramki: typecheck, lint, testy i każdy hook, który pilnuje konwencji. Reguła, której nie sprawdza żadna bramka i której sonda nie potrafi zacytować, jest kandydatką do usunięcia.
Traktuj CLAUDE.md i .claude/rules/ jak kod: zmiany idą przez pull request, autor wkleja do opisu wynik sondy i bramek, a zatwierdza je tech lead odpowiedzialny za konfigurację agenta. To, co wymusza już bramka, nie potrzebuje zdania w pamięci; to, co nie może się zdarzyć nigdy, należy do hooka albo reguły uprawnień, gdzie jest wymuszane, a nie tylko proszone.
Jak zrobić audyt i skompresować rozrośnięty CLAUDE.md?
Dział zatytułowany „Jak zrobić audyt i skompresować rozrośnięty CLAUDE.md?”Pliki psują się wszędzie tak samo: reguły sobie przeczą, instrukcje przeżywają kod, który opisywały, a plik przekracza długość, przy której Claude trzyma się go niezawodnie. Zacznij świeżą sesję (/clear), żeby wcześniejsza rozmowa nie wpływała na przegląd, i uruchom audyt.
Wbudowany przegląd /doctor (alias /checkup; przycinanie CLAUDE.md wymaga wersji v2.1.206 lub nowszej) proponuje podobne cięcie dla commitowanego CLAUDE.md: usuwa to, co Claude wywnioskuje z kodu, zostawia pułapki, uzasadnienia i konwencje odbiegające od domyślnych ustawień narzędzi, a zawsze ładowane wskazówki potrafi przenieść do skilli lub zagnieżdżonych plików CLAUDE.md. Najpierw raportuje, a przed każdą zmianą pyta. Po każdej z tych dróg powtórz trzy powyższe testy.
Gdy pamięć Claude Code nie działa, jak powinna
Dział zatytułowany „Gdy pamięć Claude Code nie działa, jak powinna”Claude ignoruje instrukcję. Uruchom /context i sprawdź, czy plik się załadował. Jeśli tak, szukaj długości, ogólnikowości lub sprzeczności w innym pliku: przy dwóch sprzecznych regułach Claude może wybrać dowolną. Doprecyzuj regułę i usuń jej rywalkę. Jeśli instrukcja musi się wykonać w ustalonym momencie, np. przed każdym commitem, przenieś ją do hooka.
Instrukcja znika po /compact. Główny CLAUDE.md projektu jest po kompakcji czytany z dysku od nowa. Pliki CLAUDE.md w podkatalogach i reguły ze ścieżkami wracają dopiero, gdy Claude znowu przeczyta pasujący plik, a instrukcje podane tylko w czacie przepadają. Wszystko, co ma przetrwać, zapisz w pliku.
Reguła ze ścieżkami działa wszędzie albo nigdzie. „Wszędzie” to zwykle frontmatter, który się nie sparsował (więc reguła załadowała się bezwarunkowo), albo brak pola paths; uruchom claude --debug. „Nigdzie” to zwykle glob, który nic nie dopasowuje, albo [ we wzorcu, który nie jest poprawnym wyrażeniem w nawiasach. Zacznij od prostego wzorca, np. src/**/*.ts.
AGENTS.md nie jest czytany. Każdy CLAUDE.md, .claude/CLAUDE.md lub CLAUDE.local.md w katalogu uruchomienia lub wyżej ma pierwszeństwo, także plik lokalny założony na własne notatki. Sprawdź claude --version: wersja v2.1.277 lub nowsza, a na Bedrock, Google Cloud, Foundry, przez bramkę albo z wyłączoną telemetrią wersja v2.1.281. Instalacja z kanału stable może być za obiema. Jeśli w /config nie ma Project instructions, wbudowana wtyczka agents-md jest wyłączona albo wersja jest za stara, a pierwsza sesja po aktualizacji może jeszcze pominąć plik. Poprawka działająca na każdej wersji to CLAUDE.md z linią @AGENTS.md.
Twój CLAUDE.local.md trafił do commita. Claude Code nie dopisuje go do .gitignore za ciebie (sprawdzone na v2.1.283, 2026-09-26; robi to tylko opcja osobista przy CLAUDE_CODE_NEW_INIT=1). Dopisz go do .gitignore, usuń z indeksu przez git rm --cached CLAUDE.local.md i przenieś z niego wszystko, co poufne.
Koledzy dostają różne zachowanie z tego samego repo. Porównajcie listy Memory files z /context. Pliki i reguły użytkownika ładują się obok plików projektu, a reguła użytkownika sprzeczna z regułą projektu jest stosowana nieprzewidywalnie. Poproś wszystkich, żeby konwencje projektu nie lądowały w ~/.claude/.
Pamięć automatyczna zawiera coś błędnego. Uruchom /memory, otwórz folder pamięci automatycznej i popraw lub usuń plik. Nieaktualne wspomnienie jest gorsze niż żadne, bo Claude mu ufa. Jeśli MEMORY.md przekroczył 200 linii, wpisy za tym punktem w ogóle się nie ładują; poproś Claude’a o scalenie indeksu.
Przebieg w CI lub skrypcie ignoruje pamięć projektu. claude --bare z założenia pomija wykrywanie CLAUDE.md i pamięć automatyczną. W zadaniach, które pobierają niezaufany kod, uruchamiaj claude --bare --setting-sources "" --strict-mcp-config, żeby nie załadowały się żadne instrukcje, ustawienia, hooki ani serwery MCP projektu; w zaufanych zadaniach, które potrzebują konwencji, zrezygnuj z --bare albo przekaż reguły jawnie przez --append-system-prompt. Kiedy co wybrać, opisuje przewodnik po CI/CD.
Plik opisuje cele, nie fakty. „100% pokrycia testami” w repo z pokryciem 40% sprawia, że Claude albo marudzi przy każdej zmianie, albo ignoruje regułę. Pisz to, co jest prawdą dziś, a cele śledź gdzie indziej.
Dokąd dalej z pamięcią Claude Code
Dział zatytułowany „Dokąd dalej z pamięcią Claude Code”- Przycinanie CLAUDE.md i AGENTS.md: protokół ablacji, który mówi, które linie usunąć i kiedy powtórzyć go po zmianie modelu
- Wzorce długotrwałego zachowania kontekstu: te same idee w Claude Code, Codeksie i Cursorze
- Automatyzacja hookami: zamień reguły, których nie wolno złamać, w wymuszenie
- Integracja w przedsiębiorstwie: wdrażanie zarządzanego
CLAUDE.mdi ustawień zarządzanych w całej organizacji - Reguły projektu w Cursorze: odpowiednik tego mechanizmu, jeśli część zespołu pracuje w Cursorze