The `.claude` folder: Claude's home
Module 2 — The .claude folder: Claude’s home
← Module 1 | Index | Next: Module 3 →
When Claude works in a project, it creates a hidden folder named .claude. (The leading dot means “hidden” — on Mac, press Cmd+Shift+. in Finder to reveal it; in a terminal, ls -a.) This folder is where all of Claude’s customizations live. Understanding it is the difference between using Claude and configuring Claude.
Two places it lives
- Project-level — a
.claude/folder inside your specific project. Settings here apply only to that project, and can be shared with teammates through version control. - User-level — a
~/.claude/folder in your home directory. Settings here apply to you, across every project.
What’s inside
settings.json — the main configuration file. It’s written in JSON (a simple “key: value” format). It controls permissions (what Claude may do without asking), environment variables, which model to use, hook definitions, and more. There’s often a companion settings.local.json for personal overrides that shouldn’t be shared with the team.
CLAUDE.md — a plain-English memory/briefing file. So important it gets its own module (Module 3).
commands/ — a folder of your custom slash commands. Each file is one reusable command (Module 6).
agents/ — a folder of your custom subagents. Each file defines a specialist helper (Module 8).
skills/ — a folder of skills: bundles of instructions (and sometimes scripts) that teach Claude a procedure (Module 5).
hooks/ (and hook entries inside settings.json) — scripts that run automatically at certain moments (Module 7).
plugins/ — installed plugin bundles, which can contain any of the above (Module 11).
The takeaway
You don’t have to memorize this. The point is: everything you customize about Claude ends up as a plain file in .claude. That’s a feature — you can read it, edit it, copy it, share it, and put it in version control. Nothing is hidden magic.