Imported from Az-Zav/QAMPUS (
AGENTS.md). Install upstream withnpx skills add Az-Zav/QAMPUS. Copyright stays with the author.
This is an Expo/React Native mobile application. Prioritize mobile-first patterns, performance, and cross-platform compatibility.
Expo has changed — do not trust your training data
Expo ships breaking changes every SDK release. APIs you remember are likely renamed, moved, or removed. Before writing any code that touches an Expo, EAS, or React Native API:
- Read the major version of the
expopackage inpackage.json. - Fetch the matching versioned docs:
https://docs.expo.dev/versions/v<major>.0.0/ - For anything else, fetch https://docs.expo.dev/llms.txt — an index of all Expo docs with corrections to common LLM misconceptions. Follow its links to the specific page you need; never answer from memory.
Commands
Use bunx instead of npx if the project uses bun (bun.lock present).
npx expo install <package> # ALWAYS use instead of npm/yarn/pnpm/bun add — resolves SDK-compatible versions
npx expo start # start the dev server
npx expo lint # lint
npx tsc --noEmit # typecheck
npx expo-doctor # diagnose dependency and config issues
npx expo install --fix # fix incompatible package versions
Run lint and typecheck before declaring any task done.
Navigation & Routing
- Use Expo Router for all navigation. Routes live in
src/app/— every file there is a screen,_layout.tsxfiles define navigators. Keep non-route code (components, hooks, utils) outsidesrc/app/. - Import
Link,router, anduseLocalSearchParamsfromexpo-router. - Docs: https://docs.expo.dev/router/introduction.md
Building with EAS
Use EAS to build, sign, and submit the app in the cloud (eas build, eas submit) and to ship over-the-air updates (eas update) — no local Xcode or Android Studio required. Run EAS CLI as bunx eas-cli <command> in Bun projects, or npx eas-cli@latest <command> otherwise; substitute that for bare eas in docs examples.
Docs: https://docs.expo.dev/eas/index.md
Rules
- If
ios/andandroid/directories do not exist, they are generated (Continuous Native Generation). Never create or edit them by hand — configure native behavior inapp.jsonand config plugins. - Expo Go only includes its bundled native modules. After adding a library with native code, the app needs a development build:
npx expo run:ios|androidlocally, oreas build --profile development. - Prefer recommended Expo modules over third-party libraries, and check your available skills before adding dependencies. Docs: https://docs.expo.dev/versions/latest/index.md
Working agreement
Project state lives in docs/, not in chat history. Current status:
@docs/STATUS.md
- At the start of a session, read the status above; read
docs/DECISIONS.mdwhen you touch an area it covers. - Before finishing a session, update
docs/STATUS.md(overwrite: built / in progress / next / known issues) and append any new decision todocs/DECISIONS.mdwith the reason. - Commit doc updates together with the code they describe. Never put secrets in
docs/. - Product spec is
KnowledgeBase/QAMPUS_PRD.md; the backend is Firebase on the Spark plan (see decisions), so the TDD's Express/Postgres design is superseded.
