Works with Claude Code, Gemini CLI, Cursor, Antigravity, and most agentic coding tools as-is. If your tool looks for a specific filename, duplicate this file as
CLAUDE.mdorGEMINI.md— identical content, no changes needed.
00-START-HERE.md — index and source-of-truth map01-PRD.md — what to build, in priority order02-ARCHITECTURE-AND-DATA.md — tech stack, folder structure, schema, API contracts03-DESIGN-SYSTEM-AND-SCREENS.md — tokens and per-screen spec04-SCENARIO-PROMPTS.md — copy this content verbatim, do not regenerate itThis project is small and fully specified on purpose. That means there should be zero cases where you need to guess. If you find yourself about to invent any of the following, stop and do the listed action instead:
| If you’re about to… | Do this instead |
|---|---|
| Guess a package name or version | Check 02-ARCHITECTURE-AND-DATA.md §4 — it’s listed, or it shouldn’t be installed |
| Guess a gluestack-ui component’s props | Run npx gluestack-ui add [component] and read the actual source it generates in components/ui/ |
| Guess a color, font size, or spacing value | Check 03-DESIGN-SYSTEM-AND-SCREENS.md §2–3 — every value is enumerated |
| Guess what a screen should contain | Check 03-DESIGN-SYSTEM-AND-SCREENS.md §5 — every screen has an explicit spec including loading/empty/error states |
| Guess the scenario/persona content or prompt wording | Copy verbatim from 04-SCENARIO-PROMPTS.md — never paraphrase it |
| Guess a database column name or type | Check 02-ARCHITECTURE-AND-DATA.md §10 — full schema with types is given |
| Guess an API request/response shape | Check 02-ARCHITECTURE-AND-DATA.md §11 — every contract is typed |
Add a feature not listed in 01-PRD.md §3/§6 |
Don’t. Flag it as a suggestion instead of building it silently |
| Resolve an apparent contradiction between two files by picking one | Flag it explicitly instead — treat it as a spec bug, not a judgment call for you to make silently |
| Debug an upstream LLM error from status codes alone | Check the Supabase dashboard function logs first (Edge Functions → llm-proxy → Logs) for the literal upstream error message. A changing status code (e.g. 401→400) can look like progress while actually meaning something unrelated — this exact mistake cost real time during backend build. The log has the true answer in one line; status-code deltas don’t. |
If something is genuinely not covered anywhere in these 5 files, say so explicitly (e.g., as a comment or a direct message back) rather than filling the gap with a plausible-sounding invention.
00-START-HERE.md, empty screens for every route in the folder structure (02-ARCHITECTURE-AND-DATA.md §5), tab bar working, no real content yetconstants/theme.ts, fonts loaded, base components added via CLIuser_profilesconstants/scenarios.ts and lib/llm/roleplayPrompts.ts from 04-SCENARIO-PROMPTS.md, Home screen rendering real scenario cards02-ARCHITECTURE-AND-DATA.md §10llm-proxy) — both the roleplay-turn and feedback-generation contracts from §11pro, Paywalls v2, tested purchase via sandbox/Test Storeuser_profiles.notification_time, functions standalone even before step 13 wires OneSignal to it), “Restore purchases” via the restoreProPurchases() helper already built in step 10, and the communication-practice-only disclaimer text, per 03-DESIGN-SYSTEM-AND-SCREENS.md §5.8. This step was missing a number until now — always came right after RevenueCat, never actually undefined.02-ARCHITECTURE-AND-DATA.md §8Stopping partway through this list still leaves you with a coherent, demoable app — that’s why it’s ordered this way. Don’t jump ahead to OneSignal or voice mode while core screens are unfinished.
01-PRD.md §402-ARCHITECTURE-AND-DATA.md §403-DESIGN-SYSTEM-AND-SCREENS.md §5 calls for them01-PRD.md §302-ARCHITECTURE-AND-DATA.md §11.2.env.local with an EXPO_PUBLIC_ prefix — it belongs only in the Edge Function’s server-side secrets