Every session starts from nothing. That is by design — and a single file is what carries your project across the gap.
Last updated: 2026-09-20
A session has no memory of the one before it. That is not a bug to be worked around; it is why the tool is predictable. But it means everything your project needs to be understood has to be readable at the start of a session.
Without a briefing file, that means re-deriving your build from whatever is lying around — and a guess that was right yesterday can be wrong today.
# Project: your-app
## Commands
- Install: `npm install`
- Dev: `npm run dev`
- Test: `npm test`
- Lint: `npm run lint`
## Layout
- `src/`: app code
- `tests/`: tests mirror `src/` paths
## Rules
- Run the tests before saying anything is done. A clean build is not proof.
- Small diffs. One concern per commit.
- Match the surrounding code's style; don't reformat files you didn't change.
## Never
- Never read or print `.env*` files or secrets.
- Never force-push or rewrite shared history.
- Never add a dependency without saying why in the commit message.
Commit it. Every session from now on starts already knowing this.
Fill in the four commands with what actually works in your repo, exactly as you would type them, flags included. If your test command is pnpm vitest run --silent, write that. It gets copied, not interpreted.
Everything else in the file is useful. This part is the reason the file exists.
| Leave out | Why |
|---|---|
| Your architecture essay | It gets skimmed, and it goes stale faster than the code |
| Anything secret | The file is committed. Name the environment variable, never the value |
| Aspirational rules nobody follows | A rule contradicted by the code teaches the contradiction |
| Generated content | If it has to be regenerated to stay true, it will stop being true |
If your CLAUDE.md has grown past two screens, the useful parts are no longer being read. Cut it back to the commands, the layout and the never-list. That is not a compromise — it is the version that works.
The other half of week one is the permission prompts — see Claude Code keeps asking permission for the same command. The free starter repo has both files filled in.
Free starter repoFlat prices, written scope, stop at any rung. No call to book, no retainer.
| Rung | What you get | Clock |
|---|---|---|
| Free — starter repo | A real setup you copy yourself | now |
| $29 — Setup Lite | One project: CLAUDE.md, allowlist, one skill, as a pull request you review | 24 hours |
| $99 — Setup Sprint | 3–5 skills, hooks, up to 3 MCP servers, plus a runbook | 48 hours |
| $79 — Surface Audit | Already set up and still fighting it: contradictions and an exact fix list | 48 hours |
Clocks run from a complete intake, not from the Stripe receipt.