preprounds

AGENTS.md

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.md or GEMINI.md — identical content, no changes needed.

Read First

  1. 00-START-HERE.md — index and source-of-truth map
  2. 01-PRD.md — what to build, in priority order
  3. 02-ARCHITECTURE-AND-DATA.md — tech stack, folder structure, schema, API contracts
  4. 03-DESIGN-SYSTEM-AND-SCREENS.md — tokens and per-screen spec
  5. 04-SCENARIO-PROMPTS.md — copy this content verbatim, do not regenerate it

The Anti-Hallucination Protocol

This 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.


Build Order (follow this sequence — don’t reorder without reason)

  1. Scaffold + navigation shell — bootstrap commands from 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 yet
  2. Design tokens + gluestack setup — constants/theme.ts, fonts loaded, base components added via CLI
  3. Onboarding flow (US-1) — fully working, writes to Supabase user_profiles
  4. Scenario library data — constants/scenarios.ts and lib/llm/roleplayPrompts.ts from 04-SCENARIO-PROMPTS.md, Home screen rendering real scenario cards
  5. Supabase schema + RLS — run the migration in 02-ARCHITECTURE-AND-DATA.md §10
  6. Edge Function (llm-proxy) — both the roleplay-turn and feedback-generation contracts from §11
  7. Roleplay screen (US-3) — wired to the Edge Function, transcript persisted on end
  8. Feedback screen (US-4) — wired to the Edge Function, schema-validated rendering
  9. History screen (US-5)
  10. RevenueCat integration (US-6) — entitlement pro, Paywalls v2, tested purchase via sandbox/Test Store
  11. Settings screen — notification time picker (writes user_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.
  12. RevenueCat Ads bonus session (US-7) — only after core loop + subscription both work
  13. OneSignal (US-8) — deliberately last; this is the point where you switch from Expo Go to an EAS development build, per 02-ARCHITECTURE-AND-DATA.md §8
  14. Voice mode — only if everything above is done and there’s real time left; cut without hesitation otherwise

Stopping 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.


Definition of Done (per feature)

Hard Prohibitions