Skip to content

CLAUDE.md at team scale: cheatsheet

TierLocationWho receives itWhen it loads
Managed policySystem location, deployed by ITEveryone in the orgEvery session, cannot be excluded
User~/.claude/CLAUDE.mdJust you, all projectsEvery session
ProjectCLAUDE.md or .claude/CLAUDE.mdWhole team (committed)Every session
LocalCLAUDE.local.md (gitignored)Just you, this projectEvery session
SubdirectoryCLAUDE.md deeper in the treeWhoever works thereOn demand, when Claude reads files there

Loading: files concatenate, they never override. Broadest first, working directory last.

The one question: who needs to receive this decision?

SurfaceWhat it isUse for
Memory filesContext that shapes judgmentConventions, style, workflow preferences
Settings filesEnforced by the toolPermission rules that must always hold
HooksScripts at fixed session pointsChecks the flow cannot skip

Settings mirror the hierarchy: ~/.claude/settings.json (user), .claude/settings.json (project, committed), .claude/settings.local.json (personal, gitignored), managed (org, overrides all).

FeatureDetail
Location.claude/rules/, one topic per file, committed
Unscoped ruleLoads at launch, same priority as project memory
Scoped rulepaths frontmatter with glob patterns; loads with matching files
Personal tier~/.claude/rules/, loads before project rules
Size guidanceTarget under 200 lines per memory file
Glob patternMatches
**/*.tsAll TypeScript files anywhere
src/**/*Everything under src/
src/**/*.{ts,tsx}Two extensions in one pattern
ScopeLocationWho receives it
Project.claude/commands/name.md or .claude/skills/name/SKILL.mdWhole team, via the repo
Personal~/.claude/skills/name/SKILL.mdJust you, all projects

Arguments: the $ARGUMENTS placeholder expands to whatever follows the command name.

Docs note: custom commands are merged into skills; existing command files keep working.

SignalChoose
Small, well-scoped, easy to revertDirect execution, review the diff
Many files, unclear approachPlan mode
Sensitive area (billing, auth, migrations)Plan mode
Trivial edit with a failing test pointing at itDirect execution
MechanicsHow
Toggle mid-sessionShift+Tab
Start a session in it--permission-mode plan
Make it team policyOne line in project memory naming the risky paths
StepAction
1. InventoryRun /memory on two machines, same repo; compare loaded files
2. Sort by audienceTeam decisions found at user level get promoted to project files, via PR
3. Sort by forceMust-hold rules move out of memory into settings or hooks
PitfallCorrection
Team decisions in personal configIf a new teammate needs it, it goes in the repo
Memory as enforcementProse is a request; settings and hooks guarantee
The 900-line memory fileSplit into scoped rules and on-demand commands
Plan mode always or neverIt is a per-change risk decision

Spine applied: architecture is deciding where judgment lives; configuration is how those decisions become durable for a team.