Every page after this one hands you a prompt instead of code to type. This is the one-time setup that makes those prompts land.
Why this repo behaves differently
Claude Code reads a file called CLAUDE.md from the project root before it answers anything, and this repo ships 12 KB of it. The opening line is addressed to the agent, not to you:
This file is loaded into Claude Code's context every session in this repo. It's the single source of truth for how to code in this project.
Underneath that: a 37-row table mapping what you might ask for to the exact rule or recipe to read first, 8 conventions marked "RULES, not suggestions", and a closing section of 7 things not to do in this codebase.
In an empty project an agent has to guess all of that, and it guesses differently each time. Here it does not have to.
1. Install Claude Code
On Windows, in PowerShell:
irm https://claude.ai/install.ps1 | iexOn macOS, Linux or WSL:
curl -fsSL https://claude.ai/install.sh | bashHomebrew and WinGet also work, and signing in is covered in Anthropic's quickstart. You need a Claude subscription or a Console account.
2. Open the repo
From the folder you cloned:
cd expo-native-starter
claudeThere is nothing to configure. CLAUDE.md is in the root, so it is already loaded.
3. Make it prove it read the file
Do not start with a feature. Start with a question whose answer you can check.
Read CLAUDE.md and tell me in your own words: where a new screen file goes, the rule about what apps/mobile/ may import, and where auth tokens are allowed to be stored. Then name which of the 7 items under "What NOT to do" you are most likely to break. Do not write any code yet.
A good answer says a new screen is a file under apps/mobile/app/, that nothing in apps/mobile/ may import from apps/api/ because the app talks only through @repo/api-client against EXPO_PUBLIC_API_URL, and that tokens go in expo-secure-store on native and never in AsyncStorage. It should be able to point at the "What NOT to do" list rather than inventing one.
A bad answer talks about React Native in general, suggests react-navigation instead of Expo Router, or recommends AsyncStorage for the token. That means it answered from training data rather than from the file.
That is the generic React Native pattern, not this repo's. Open CLAUDE.md in the project root, read the Conventions section, and answer again using only what is written there.
Thirty seconds spent here is what stops the next ten features drifting.
What it can reach for
The table in CLAUDE.md is a router, not a summary. When you ask for something in the left column, the agent opens the file in the right one:
- 11 rule files in
.claude/rules/: new screen, new API call, new form, new translation, add a paywall, gate with a flag, auth-gated content, disable auth, swap to Clerk, push notification, add a tracked event. - 27 task recipes in
docs/recipes/: the offline queue, optimistic updates, deep linking, infinite scroll, large lists, file uploads, camera and scanner, maps and location, background fetch, App Store listing, Sentry source maps, and the Apple rules for non-IAP payments. - 4 slash commands that scaffold the wiring outright:
/new-screen,/new-api-call,/new-form,/add-paywall.
All 37 rows point at files that exist. None of them sends the agent somewhere that is not there.
If you use Cursor or Copilot instead
Everything in these docs still applies. The difference is loading: neither tool picks up CLAUDE.md by convention the way Claude Code does, so say it once at the start of a session:
Read CLAUDE.md in the project root and follow it for everything in this session. It overrides your defaults for this codebase.
Next: Build Your First Screen.