tools//Claude Code//.claude
The `.claude/` directory is the folder at a project's root that holds all the Claude Code configuration other than the instructions: settings, hooks, skills and memory. The instructions themselves are CLAUDE.md, which lives at the project root (outside `.claude/`) and is loaded into context at the start of every session with the project's rules, architecture and gotchas; `CLAUDE.local.md` holds personal additions and is gitignored.
The .claude/ directory is the folder at a project's root that holds all the Claude Code configuration other than the instructions: settings, hooks, skills and memory. The instructions themselves are CLAUDE.md, which lives at the project root (outside .claude/) and is loaded into context at the start of every session with the project's rules, architecture and gotchas; CLAUDE.local.md holds personal additions and is gitignored.
The settings hold permissions and hooks. .claude/settings.json (shared, committed) sets the team-wide defaults, and .claude/settings.local.json (personal, gitignored) holds local overrides.
The hooks are automation that fires on tool events. Their configuration goes in settings and their scripts live in .claude/hooks/, not in scripts/, because they consume Claude Code's JSON stdin protocol and are useless outside of it.
The skills are reusable workflows invoked as /name. Each skill lives at .claude/skills/<name>/SKILL.md, with YAML frontmatter and instructions.
Memory is a set of persistent notes in .claude/memory/MEMORY.md (loaded automatically) plus topic files, which survive across sessions. Claude reads and writes them to remember project-specific patterns, mistakes and decisions.
The private, gitignored files are settings.local.json, CLAUDE.local.md and memory/; settings.json, skills/ and the hooks (part of the settings) can be committed.