AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Android Polish

skill-mcgrass-ops-android-studio-pipeline-android-polish · by Mcgrass-ops

Final polish + ship-readiness gate for a built Android app. Use LAST in the pipeline - after the MCP has written the code and the app builds - to take it from "works" to "passes Google Play review and feels finished." Runs a severity-ordered checklist (P0 ship-blockers first - target-API gate, AAB + Play App Signing, 16 KB page size, themed-icon monochrome layer, release crashes/ANRs; then P1 qua…

No reviews yet
0 installs
5 views
0.0% view→install

Install

$ agentstack add skill-mcgrass-ops-android-studio-pipeline-android-polish

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-mcgrass-ops-android-studio-pipeline-android-polish)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Android Polish? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Android Polish & Ship Gate

This is the final stage of the Android app pipeline. The app exists and builds; this pass closes the gap between "functionally complete" and "passes Google Play review and feels finished." It is the last gate, so it carries the strictest rule in the whole pipeline: every item is verified with a command, a tool, or a snapshot - never an eyeball.

Pipeline position:

research -> planning -> monetization -> design -> MCP code -> > POLISH / SHIP GATE  compliant."
- **Themed icon monochrome layer.** Android 13+ themed icons need a `` layer in the adaptive icon (108x108dp single-color silhouette) or the system auto-generates a poor one. *Verify:* `` contains ``.
- **No release-build crashes / ANRs on the core journey.** *Verify:* run the **release** variant through the primary flow; confirm crash/ANR reporting (Crashlytics/Sentry) is actually wired; treat planning's stability budget + Android Vitals thresholds as the explicit gate.
- **Release build is shrunk and clean.** R8 + `shrinkResources` on; `isDebuggable = false`; no secrets in source; keep-rules don't strip anything used by reflection. *Verify:* `./gradlew bundleRelease` + APK Analyzer; grep the source tree for keys/tokens.
- **Edge-to-edge not broken.** Mandatory at targetSdk 35+. *Verify:* content respects insets, nothing hidden under the system bars (check a tall and a short device).

## P1 - Quality (fix before a public launch)

- **Every screen has loading / empty / error states.** Not just the happy path. Loads under ~2s use skeletons; known-progress uses a determinate indicator; cached/instant content shows no loader. *Verify:* a screenshot/snapshot test per state - see `references/02-testing.md`.
- **Process-death restoration.** The common production failure, harder than rotation. *Verify:* enable **Developer Options -> Don't keep activities** (or background-kill), reopen, confirm `rememberSaveable` / `SavedStateHandle` restore the user's place.
- **Accessibility (WCAG 2.2 AA).** Labels, semantic headings, `stateDescription` for toggles, `liveRegion` for dynamic content, focus order, `mergeDescendants` for compound items; SC 2.5.8 target size (Material's 48dp clears it), SC 1.4.11 non-text contrast 3:1 for icons/controls. *Verify:* Accessibility Scanner + a TalkBack pass + a 200%-font screenshot. Full list in `references/05-accessibility.md`.
- **Static analysis & code hygiene.** `./gradlew lint` (with a baseline), detekt / ktlint / Spotless formatting, prune unused resources & dependencies, sweep dead code / `TODO` / debug `Log` (no PII; strip verbose logging in release), LeakCanary for leaks, and the architecture anti-patterns (no `GlobalScope` / `runBlocking`, `collectAsStateWithLifecycle` not `collectAsState`, no state stranded in `MainActivity`). See `references/03-static-analysis-and-hygiene.md`.
- **Automated tests exist and pass.** Unit tests on core logic, Compose UI tests on critical flows, and screenshot/snapshot tests that lock visual states - dark mode, 200% font, RTL, key locales (Paparazzi / Roborazzi / Compose Preview Screenshot Testing; Roborazzi can run a11y checks in the same pass). This is how "every screen has its three states" becomes *verified* instead of asserted. *Verify:* `./gradlew test connectedCheck` + your snapshot task. See `references/02-testing.md`.
- **Performance.** Baseline **and** Startup Profiles generated and wired into the release build; measured before/after with Macrobenchmark **on a real device** (not an emulator); per-second/streaming updates don't recompose the whole screen. *Verify:* recomposition counts (Layout Inspector), the Compose compiler stability report, and Macrobenchmark numbers. See `references/04-performance.md`.
- **Localization beyond strings.xml.** "No hardcoded strings" is necessary, not sufficient: RTL/mirroring, pseudolocales (`en-XA` / `ar-XB`) to surface truncation + string concatenation, positional format args, ``, locale-aware number/date formatting. *Verify:* run in a pseudolocale and an RTL locale.
- **Dark mode + configuration breadth.** A real dark variant on every screen (not auto-inverted); large-screen/foldable layout, landscape, and split-screen/multi-window actually opened and checked. *Verify:* snapshot tests across configurations.
- **Motion.** 2-3 meaningful spring-based moments; no celebration on routine actions. *Verify:* watch the transitions; confirm no dropped frames (JankStats).

## P2 - Spit-shine

- **Adaptive launcher icon** (foreground + background + the P0 monochrome layer). Pull from the asset library if present (below), else place into `res/mipmap-*` manually.
- **Splash screen** uses the Splash Screen API, does not appear on warm starts, and hands off without a flash.
- **Play listing assets** - screenshots (phone + any supported larger form factors) from real screens, short/full description seeded from the research ASO keywords, Data Safety form matching what the app actually collects.

## Using the asset library (optional)

If an asset-library MCP is available (`list_assets` / `read_asset` / `copy_asset_to_project`), pull icons, fonts, and imagery from it and copy them into `res/mipmap-*`, `res/font`, etc. **If it is not available, that is fine** - generate or source the asset and place it manually into the right `res/` folder. Never block the polish pass on the asset library.

## Note on building

Building and running happen with the buttons in **Android Studio** (the MCP server doesn't build). Run the gradle verification tasks above from Studio or the terminal; have the user report results, or read them back via the MCP where possible.

## Independent review before sign-off

Polish is the last gate, so it most needs an outside check. Before declaring the app shippable, run an independent adversarial pass: where subagents are available, launch a separate one (the Task tool) briefed to *"find what still makes this feel like a prototype, and what would fail Google Play review."* Otherwise red-team it in a fresh frame. Record what it finds and fix or explicitly accept each item. A self-passed checklist from the same agent that built the app is the failure mode to avoid.

## Output

A polish report, severity-ordered: each **P0** item marked pass/fail **with the verification evidence** (the command output, the tool result, the snapshot), then **P1**, then **P2**, then any remaining items that need the user (signing keys, real-device battery testing, store screenshots). The app is shippable only when every P0 passes with evidence.

## Lessons learned / v-next candidates

- **v1 -> v2 (this pass).** v1 was a flat memory-jogger: no verification method, no severity, and missing the 2026 Play ship-blockers (16 KB pages, target-API gate, AAB + Play App Signing, themed-icon monochrome layer). It also hard-depended on an asset-library MCP and omitted whole categories (automated testing, static analysis). v2 adds severity ordering, a verification method per item, the ship-blockers, conditional asset use, an independent review step, and reference files for depth.
- Watch for the agent still eyeballing instead of running the verification command - if reports lack command output/snapshots, tighten the wording.
- Candidate: a machine-checkable subset (lint + tests + bundle + size) the MCP could run directly and diff between runs.
- Reference files date fast - re-check the Play target-API floor, the 16 KB deadline, and tool names each cycle.

## File map

android-polish/ ├── SKILL.md <- this file └── references/ ├── 01-ship-blockers.md <- 2026 Play submission gates ├── 02-testing.md <- unit + Compose UI + screenshot/a11y snapshots ├── 03-static-analysis-and-hygiene.md <- lint, detekt/ktlint, pruning, leaks, anti-patterns ├── 04-performance.md <- baseline+startup profiles, macrobenchmark, recomposition ├── 05-accessibility.md <- WCAG 2.2, semantics, tooling └── 06-release-and-security.md <- AAB, signing, shrinking, security hygiene


## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Mcgrass-ops](https://github.com/Mcgrass-ops)
- **Source:** [Mcgrass-ops/android-studio-pipeline](https://github.com/Mcgrass-ops/android-studio-pipeline)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.