GitHub - abhishekray07/claude-md-templates: CLAUDE.md best practices

5 min read Original article ↗

The CLAUDE.md Starter Kit

Get better output from Claude Code in 5 minutes. No plugins, no MCP servers, no configuration — just markdown files in the right places.


The 3-Level Hierarchy

Claude Code reads instructions from three locations. Each has a different scope:

~/.claude/CLAUDE.md          -> Global: your personal preferences (every project)
.claude/CLAUDE.md            -> Project: shared with your team (committed to git)
.claude/local.md             -> Local: your personal overrides (gitignored)

Global = rules you'd repeat across every project ("always run tests," "prefer simple code"). Project = context your whole team benefits from (stack, structure, commands, conventions). Local = stuff only you need (your terminal, your MCP servers, your editor quirks).

Quick Start

1. Create your global file (~2 min)

mkdir -p ~/.claude
cp global/CLAUDE.md ~/.claude/CLAUDE.md

Edit it with your personal preferences. Keep it under 15 lines.

2. Create your project file (~3 min)

mkdir -p .claude
# Pick the template closest to your stack:
cp project/nextjs-typescript.md .claude/CLAUDE.md   # Next.js / React / TypeScript
cp project/python-fastapi.md .claude/CLAUDE.md      # Python / FastAPI
cp project/generic.md .claude/CLAUDE.md              # Anything else

Fill in the blanks. Commit it to git so your team gets the same behavior.

3. Create your local overrides (~1 min)

cp local/local.md .claude/local.md
echo ".claude/local.md" >> .gitignore

Add your personal setup. This file is never shared.

How It Works

Claude Code automatically reads these files at the start of every session. The more specific file wins — project rules override global rules, local rules override project rules.

Important: Claude Code's system prompt already contains ~50 instructions. That's a third of the ~150-200 instruction limit frontier models can reliably follow. Your CLAUDE.md must be lean. Every line competes for attention.

The Self-Improvement Loop

This is the single most impactful habit you can build:

After every correction you give Claude, end with:

"Update CLAUDE.md so you don't make that mistake again."

Claude is good at writing rules for itself. Over time, your CLAUDE.md becomes a living document that gets smarter with every session.

What Goes Where (Decision Guide)

Rule Where it goes Why
"Run tests after changes" Global You want this everywhere
"Use shadcn/ui components" Project Team convention
"I use Ghostty terminal" Local Only you need this
"Never use any in TypeScript" Project Team standard
"Ask before committing" Global Personal preference
"I have Context7 MCP configured" Local Your setup, not theirs
"Prices are in src/lib/config" Project Domain knowledge
"Keep code simple" Global Universal preference

Common Mistakes

Too long. If your project CLAUDE.md is over 80 lines, Claude starts ignoring parts of it. HumanLayer keeps theirs under 60 lines. That's a good benchmark.

Personality instructions. "Be a senior engineer" or "Think step by step" wastes tokens. Claude Code already has strong system-level instructions.

@-mentioning docs. Writing @docs/api-guide.md embeds the entire file into context every single session. Instead, pitch Claude on when to read it: "For Stripe integration issues, see docs/stripe-guide.md."

Formatting rules. "Use 2-space indentation" or "always add trailing commas" — use a linter/formatter for this. Never send an LLM to do a linter's job.

Duplicate rules. If your global file says "run tests" and your project file also says "run tests," you've wasted tokens saying the same thing twice.

Scaling Up: Module-Specific Files

For larger codebases, you can place CLAUDE.md files in subdirectories:

.claude/CLAUDE.md              -> Project root (always loaded)
src/auth/CLAUDE.md             -> Auth module (loaded when working in src/auth/)
src/api/CLAUDE.md              -> API module (loaded when working in src/api/)

Claude Code loads these on demand — only when working in that directory. This keeps your root file lean while giving Claude deep context where it matters.

Use this when your root CLAUDE.md pushes past 80 lines, or when different parts of the codebase have different conventions.

Included Files

File What it is When to use it
global/CLAUDE.md Personal preferences template Copy to ~/.claude/CLAUDE.md
project/nextjs-typescript.md Next.js/React/TS project template Copy to .claude/CLAUDE.md
project/python-fastapi.md Python/FastAPI project template Copy to .claude/CLAUDE.md
project/generic.md Fill-in-the-blank for any stack Copy to .claude/CLAUDE.md
local/local.md Personal overrides template Copy to .claude/local.md
workflows/self-improvement-rules.md Structured rules for planning, verification, self-correction Paste sections into your CLAUDE.md
workflows/prompting-patterns.md 11 copy-paste prompts from the Claude Code team Use directly in your sessions
cheatsheet.md One-page reference card Bookmark or print
principles.md The full research — why these patterns work Read when you want to go deeper

The Principles (Go Deeper)

principles.md contains everything we know about writing effective CLAUDE.md files:

  • The attention budget (why less is more)
  • Anthropic's official include/exclude table
  • Emphasis keywords that actually work (IMPORTANT, YOU MUST)
  • Module-specific CLAUDE.md files for scaling
  • Progressive disclosure patterns
  • Architecture diagrams (HumanLayer's pattern)
  • The "Don't X, Do Y" rule
  • Matt Pocock's plan loop
  • Real-world benchmarks from HumanLayer, Boris Cherny, Cloudflare, ChrisWiles
  • Skill activation mapping
  • TODO priority systems
  • Every anti-pattern and what to do instead

If you only read one file in this kit besides the templates, read that one.

Sources

This starter kit is based on:


Built by Claude Code Camp — a weekly newsletter teaching developers how to get 10x more from Claude Code.