CLAUDE.md, three places
The CLAUDE.md you wrote last lesson sits in your project’s top folder. That’s the most common spot, but not the only one. The same file can live in three different places, and the difference between them is who and when it applies to.
Project, personal, and nested — three locations, three scopes. Claude reads all of them that apply and stacks them together.
The three places
1. Project — CLAUDE.md at the top of the repo.
This is the one you already made. It’s about this project: how to run it, its conventions, what to avoid. Because it lives in the repo, it gets committed to git — so every teammate (and their Claude) gets the exact same notes. This is the shared one.
2. Personal — CLAUDE.md in your home folder, at ~/.claude/CLAUDE.md.
This one isn’t tied to any project. It applies to every project you open, on your machine only. It’s the place for how you, personally, like to work — “explain your reasoning before making big changes,” “I prefer concise answers,” “I’m still learning, so define jargon when you use it.” Nobody else sees it. It’s your default, everywhere.
3. Nested — a CLAUDE.md deeper inside a big project.
In a large repo split into pieces (say frontend/ and backend/), you can drop a CLAUDE.md inside a subfolder. Claude picks it up when it’s working on files in that part of the tree. Most people never need this — it’s for big, mixed codebases. Just know it exists.
They stack — they don’t fight
Here’s the part that’s genuinely useful: these don’t override each other. They combine.
When you’re working in a project, Claude reads your personal
CLAUDE.mdand the project’sCLAUDE.mdand any nested one that applies — all at once.
So your personal “keep answers concise” rides along on top of the project’s “use pnpm, don’t touch legacy/.” General preferences in your home folder; project-specific facts in the repo. They layer cleanly, like putting on a sweater over a shirt — both are still there.
Which one should you reach for?
A quick rule:
- Would every teammate want this? → project
CLAUDE.md(in the repo). - Is this just about how you like to work, across all your projects? → personal
~/.claude/CLAUDE.md. - Does it only matter inside one corner of a giant repo? → nested
CLAUDE.md.
When in doubt, project-level is the safe default. You can always move a line to your personal file later.
See two of them stack
“Three places that stack” is easier to believe once you’ve watched two of them sit in the same project at once. The practice terminal drops you in a project called taskly. Make the project-level file first:
echo "Use pnpm. Don't touch legacy/." > CLAUDE.md
Now imagine taskly grew a frontend with its own rules. Give that corner its own file:
mkdir -p frontend
echo "This folder is React — prefer function components." > frontend/CLAUDE.md
Ask the terminal to turn up every CLAUDE.md in the project:
find . -name CLAUDE.md
Two files, two scopes — one for the whole project, one just for the frontend — and Claude reads both when it touches a frontend file. find is the reading command that walks the tree looking for a name instead of contents; here it makes the stacking visible.
The third place — your personal ~/.claude/CLAUDE.md — lives in your home folder, not the project, so it doesn’t show up in this list. But it layers on top of these two exactly the same way, on every project you open.
What’s next
CLAUDE.md is something you write down on purpose. But Claude can also keep notes of its own — things it remembers about you and your work from one conversation to the next, without you writing anything. That’s memory, and it’s next.