android-screenshot-baseline-recordlisted
Install: claude install-skill damson/hard-won-skills
# Record Android screenshot baselines
A record run that writes nothing still exits 0 — skipped task, filter matching zero
tests, or output going somewhere you are not looking. Step 4 is what settles it.
## Procedure
### 1. Identify the framework before running anything
Its name decides the task, the baseline directory, and the failure modes:
```bash
grep -rn "roborazzi\|paparazzi\|screenshotTest" --include="*.gradle*" --include="*.toml" .
```
| Signal | Framework | Record task | Baselines live in |
|---|---|---|---|
| `io.github.takahirom.roborazzi` | Roborazzi | `recordRoborazzi<Variant>` | configured; often `src/test/screenshots` |
| `app.cash.paparazzi` | Paparazzi | `recordPaparazzi<Variant>` | `src/test/snapshots/images` |
| `com.android.compose.screenshot` | AGP preview screenshots | `update<Variant>ScreenshotTest` | `src/<variant>ScreenshotTest/reference` |
Where the variant sits differs by framework — last for Roborazzi and Paparazzi (`recordRoborazziDebug`), in the middle for AGP (`updateDebugScreenshotTest`). There is no single rule, so resolve the real names rather than assuming — `./gradlew :<module>:tasks --all | grep -i "screenshot\|roborazzi\|paparazzi"`. A task that does not appear is not wired to that module, and invoking it anyway is the quiet no-op this skill exists to catch.
### 2. Locate the baseline directory, then count what is in it
Do not guess it from the table — find where the PNGs actually are:
`<module>` is a Gradle path (`:app`, `:libra