Plan
Tools and rules
Write down every tech choice, then give your agent the memory it reads before every session.
Plan
Write down every tech choice, then give your agent the memory it reads before every session.
Your stack is the set of tools your app is built with, one for each job. Decide them all now, from your PRD: leave one open and the agent picks its own halfway through the build. This is ours, and the headings of your TechDesign.md:
Read docs/PRD.md. Create docs/TechDesign.md with one heading per layer: App, Look, Data, Payments, Builds. Under each, one line: the simplest, most robust tool for this app and why. Pick popular, boring tools. No login unless the PRD truly needs one. If Data uses Supabase, add: Row Level Security on every table, only the publishable (anon) key in the app, never the service_role key.✓ Example: Data: saved on the phone, a lift log doesn't need an account.
npm install -g eas-cli eas login eas init
sudo in front.eas whoami✓ Your Expo username. EAS is connected.
Done when Every tool has one line with a reason, and eas whoami prints your username.
Stuck? Watch someone do this stepHow to set up EAS for your React Native projectCoding NerdsEvery new session starts blank. AGENTS.md is one page of rules your agent reads first, so it stops guessing how your project works. Claude Code opens CLAUDE.md, so that file holds one line pointing to AGENTS.md.
@AGENTS.md. Keep both. Let Claude Code add your project's part below Expo's:Read docs/PRD.md, docs/TechDesign.md, package.json and AGENTS.md. Keep every line Expo wrote in AGENTS.md. Below it, add four headings, the whole file under 150 lines. Stack: one line from TechDesign.md, with the Expo SDK version. Folders: where screens and shared parts live in this project. Rules: no file over 500 lines, never overwrite without asking, 3 tests per feature. Never touch: .env and package-lock.json, and never write secrets in this file. If CLAUDE.md is missing, create it with one line: @AGENTS.md✓ Example: ask before adding a new package.
What are the rules of this project?✓ Missing a rule? Add it to AGENTS.md and ask again.
Done when A new session lists your rules without you pasting them.
Stuck? Watch someone do this stepHow I write my AGENTS.md files, best practicesNeuralNineA skill is a how-to guide your agent loads when it needs it. Expo and Callstack, a React Native company, publish their own, so the agent follows today's best practice instead of old habits.
The Expo plugin also connects Expo's MCP server. It works with a free Expo account; only its docs search needs a paid EAS plan. MCP lets the agent use a service directly: it reads Expo's docs, adds packages that fit your SDK, and reads why an EAS build failed or a TestFlight build crashed, without you copying anything over.
.claude/settings.json, so Claude Code offers to install it when you open the folder: say yes. Not asked? Type /plugins, search expo and click Install. These are Expo's own skills, and they update themselves.npx skills@latest add callstackincubator/agent-skills --skill react-native-best-practices -a claude-code -y
/mcp, pick expo and sign in with your Expo account in the browser./mcp again:claude mcp add --transport http expo https://mcp.expo.dev/mcpWhich skills and MCP servers do you have for Expo and React Native?✓ It names Expo skills, react-native-best-practices and the expo MCP server. Missing one? Install it again.
/plugins list. Add it the day you add the tool.Done when A new session names the Expo and Callstack skills and the expo MCP server.
Stuck? Watch someone do this stepAdd plugins in VS Code using the Claude Code extensionKashif Aziz AwanAGENTS.md is advice, a hook is a rule. The agent can forget a line in AGENTS.md. A hook is a small command Claude Code runs every time, whatever the agent thinks. Ours do two things: block every edit to .env, and run the type check and tests before the agent may call a task done.
.claude folder: .claude/settings.json. Ours keeps Expo's plugin line and adds the two hooks./hooks.✓ Two hooks: PreToolUse guards .env, Stop runs the checks.
Add a line TEST=1 to .env✓ Blocked: .env holds the secret keys. The hook works.
npx tsc --noEmit and your tests. Something fails? The agent gets the error and keeps fixing instead of saying done.git add . git commit -m "Add stack, rules, skills and hooks" git push
Done when The agent can't edit .env, and a failing check sends it back to fixing.
Stuck? Watch someone do this stepClaude Code hooks, explained and demoedTechXion