3. This file (routing + project-level constraints)
4. Subdomain rules (backend/apps)
## Mandatory Routing
-`backend/**` must follow `backend/AGENTS.md`.
-`apps/**` must follow `apps/AGENTS.md`.
- Cross-domain changes must satisfy all relevant subdomain rules.
-`infra/**` follows this file plus `infra/` conventions.
## Project-Wide Constraints
- Default development branch is `dev`; do not develop directly on `main`.
- Never push unless explicitly requested by the user.
- Keep AGENTS layered and lean: shared rules at root, domain rules in sub-AGENTS.
- **No Error Swallowing**: All exceptions must propagate or be converted to typed errors. Never catch an exception, log it, and silently continue. This destroys debuggability.
## Protocol Source of Truth
`docs/protocols/` is the single source of truth for protocol and data format.
- Update protocol docs before changing data/API/UI contracts.
- Document compatibility strategy (backward-compatible vs migration).
- Keep frontend/backend implementations aligned with documented protocol.
When viewing data in the database, use `supabase mcp` tools (`supabase_execute_sql`, `supabase_list_tables`, etc.) instead of direct queries or other methods.
If the user asks to open app, navigate pages, tap, input text, scroll, verify UI, reproduce bug, or run mobile tests → treat as executable automation, not just explanation.
### Platform
- iOS → use Midscene iOS (requires WebDriverAgent at http://localhost:8100/status)
- Android → use Midscene Android (requires `adb devices` available)
If platform not specified:
- Use current project platform if obvious
- Otherwise ask
### Preconditions
- iOS: WDA must be ready
- Android: device/emulator must be connected
If not ready → stop and report missing requirement
### Execution
- Perform actual UI actions via Midscene Skills
- Do not only describe test plan
- Capture result (screen state / success / failure step)