--- name: mobile-app-audit description: Audit an existing unfinished Expo React Native or Swift mobile app. Identifies what is complete, partial, and missing across screens, navigation, APIs, auth, storage, tests, and build config. Use before mobile-completion-plan. license: MIT --- # MobileApp Audit Inspect an existing mobile app before completion planning. ## Inputs Accept one target: - No target: current workspace. - GitHub repository URL. - Local folder path. ## Required Behavior Do not propose implementation until the audit is complete. For local repos, run the bundled audit script when available: ```bash node /scripts/mobile-app-audit.mjs ``` Resolve `` from the directory containing this loaded `SKILL.md`; do not resolve it from the user's working directory. Use the JSON for discovery; read targeted files to resolve signals before proposing fixes. `scanCoverage` reports capped samples, unreadable files, and walks that reached their file limit. Counts describe reported samples, not necessarily the whole app. A reached file limit means completeness is unknown, even if no omitted file was confirmed. ## Completion States The static audit reports: - **implemented** — no incomplete markers were detected; runtime behavior still requires validation. - **partial** — TODO/FIXME or explicit placeholder/not-implemented comment; confirm that the marker describes unfinished screen behavior. - **needs-review** — null return or `@ts-ignore` without an explicit unfinished marker. Inspect context; conditional null rendering can be intentional. Each screen includes `signals`; `verification: static-only` is not runtime proof. `brokenScreenCount` remains for compatibility and is zero: static patterns cannot prove breakage. Report broken behavior only with command/runtime evidence. Prioritize confirmed breakage, then unresolved suppression signals and partial work. ## Expo Router Awareness For `expo-router`, `app/` or `src/app/` uses file-based routing. Exclude `_layout.*` and files ending in `+api.*`; retain screen routes such as `+not-found.tsx`. Group directories like `(auth)` are transparent routing segments. ## What To Identify - Framework: Expo SDK version, React Native version, or Swift/SwiftUI. - Package manager and scripts: start, build, test, lint, typecheck, eas build. - Navigation structure: stacks, tabs, drawers, file-based routing, and screen inventory. - Screen completion status and evidence (see Completion States above). - API integration: implemented calls, stubbed or mocked endpoints, missing integrations. - Auth flow: implemented, partial, or missing. Session handling and secure storage status. - State management: complete, partial, or missing. - Native permissions: configured, missing, or untested. - Assets: present, placeholder, or missing. - Tests: present, partial, or missing by area. - Build config: `app.json`, `eas.json`, environment variables, signing. - Known blockers: broken imports, missing deps, type errors, or failing builds. ## Output Write raw findings directly into `## Audit Findings` in `docs/mobile-resume/YYYY-MM-DD-mobile-completion-plan.md` (create the file with that section and `Plan Status: Audit complete — planning pending` if the full plan is not ready). Use concrete evidence: file paths, screen names, dep names, error messages, and TODO locations. Return a brief summary to chat. End with a clear handoff to `mobile-completion-plan`.