Skip to main content

CLAUDE.md Starters

All levels

CLAUDE.md is the highest-leverage thing you can give Claude Code: persistent instructions it reads every session. Drop one of these at your repo root (or run /init to generate a starting point), then trim it to fit. Use the copy button on each block.

:::tip Keep it short and true A CLAUDE.md that's long, aspirational, or out of date hurts — Claude follows it literally. Describe how the project actually works, and prune ruthlessly. Details on the CLAUDE.md page. :::

Universal starter

# Project: <name>

## What this is
<One or two sentences: what the project does and who uses it.>

## Tech stack
- Language/runtime: <e.g. TypeScript, Node 20>
- Framework: <e.g. Next.js 14 App Router>
- Key libraries: <e.g. Prisma, tRPC, Tailwind>

## How to run
- Install: `<cmd>`
- Dev server: `<cmd>`
- Tests: `<cmd>`
- Lint/format: `<cmd>`

## Conventions
- <e.g. Use functional components; no class components.>
- <e.g. Co-locate tests as *.test.ts next to source.>
- <e.g. Conventional Commits for messages.>

## Guardrails
- Run the tests before saying a task is done.
- Don't edit files under `/generated` or `/vendor`.
- Never commit secrets or .env files.

## Good to know
- <Gotchas, non-obvious decisions, links to deeper docs.>

Node / TypeScript web app

# Project: <name> (Next.js + TypeScript)

## How to run
- Dev: `npm run dev`
- Build: `npm run build`
- Test: `npm test`
- Lint: `npm run lint` (must pass before commit)

## Conventions
- TypeScript strict; no `any` without a comment justifying it.
- Components in `src/components`, one folder per component.
- Data fetching via tRPC; never call the DB from a client component.
- Styling: Tailwind utility classes; no inline styles.

## Guardrails
- After any change, run `npm run lint && npm test`.
- Keep files under ~300 lines; split when larger.
- Do not modify `prisma/migrations` by hand.

Python service

# Project: <name> (FastAPI)

## How to run
- Install: `uv sync` (or `pip install -e .`)
- Dev: `uvicorn app.main:app --reload`
- Test: `pytest`
- Lint/format: `ruff check . && ruff format .`

## Conventions
- Type hints everywhere; prefer `pathlib` over `os.path`.
- Pydantic models for all request/response bodies.
- f-strings, not %-formatting.

## Guardrails
- Run `pytest` and `ruff check` before completing a task.
- Fail fast with descriptive errors; no silent excepts.

Tips that apply to all of them

  • Layer it. A repo-root CLAUDE.md for the whole project; nested CLAUDE.md files in subfolders for area-specific rules.
  • Use @imports to pull in existing docs instead of duplicating them (see the CLAUDE.md reference).
  • Review it monthly. Stale instructions are worse than none.