---
name: mobile-qa-scan
description: QA scan of an existing mobile app. Runs audit script and commands (lint, typecheck, test, build) to produce a structured QA report with pass/fail verdicts. Does not read source files unless a command failure requires diagnosis.
license: MIT
---

# Mobile QA Scan

Produce a structured QA report for an existing mobile app without deep source file reads.

## Token Rule

Run commands and use the audit script JSON. Do not read source files unless a command fails and the error cannot be diagnosed from its output alone.

## Steps

**1. Audit script**

```bash
node <mobile-app-audit-skill-dir>/scripts/mobile-app-audit.mjs <target-path>
```

Resolve `<mobile-app-audit-skill-dir>` from the installed sibling
`../mobile-app-audit` skill directory, not from the user's working directory.
Use the JSON for: framework, screens (implemented/partial/needs-review counts),
incomplete markers, nav, auth, state, storage, test libraries, build config, and
completion risks. Report `scanCoverage` limits; static signals do not prove breakage.

**2. Run commands**

Use the audit's `packageManager` and `scripts`, checking package.json's
`packageManager` field or repository instructions if detection is unknown or
conflicting. Run existing scripts with that manager's `run <script>` command.
Use fallbacks only when a script is absent, never to hide a failed check.

- **Lint**: lint script; otherwise locally installed `eslint .`.
- **Typecheck**: typecheck script; otherwise local `tsc --noEmit` with tsconfig.
- **Tests**: test script; otherwise a configured local runner (for example,
  Jest or `vitest run`). Do not default every project to Jest.
- **Expo compatibility**: `expo-doctor` and `expo install --check` for Expo apps.
- **Build smoke check**: build script; otherwise `expo export` for Expo apps.

Execute local binaries through the package manager's runner. If a tool is
unavailable, record that; install it only when authorized. Keep a failed script's
exit code and output even if further diagnostic commands succeed.

Record pass/fail and captured output for each — no ✅ without captured output
(see `../mobile-migration-plan/references/output-contracts.md`). If a command is
missing, record as "not configured."

**3. Write the QA Report**

Create `docs/mobile-qa/YYYY-MM-DD-qa-report.md` with:

- **Summary**: app name, framework, date.
- **Build Health**: lint, typecheck, build — ✅ Pass / ⚠️ Warning / ❌ Fail per check.
- **Test Coverage**: test libraries present, test file count, test run result.
- **Structure Overview**: sampled screen statuses, review signals, nav type, key deps.
- **Bundle Size**: report `expo export` output by platform and compare it
  with a recorded baseline or project budget. If no baseline exists, report the
  measurement without inventing universal pass/fail thresholds.
- **Incomplete Markers**: TODO/FIXME/placeholder counts by file.
- **Risks and Blockers**: from audit `completionRisks` plus command failures.
- **Verdict**: `Shippable` / `Needs Work` / `Blocked` — with one-sentence rationale per area and an overall verdict.

Return a brief summary to chat linking the report file.
