android-go-live-checklist — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited android-go-live-checklist (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate, maintain, and walk a user through a Play Store launch checklist for any Android app or game project, regardless of stack (native Android, Flutter, React Native, Unity, etc.).
This skill operates in five distinct modes. Detect which one the user wants from their message:
go-live-checklist.md (default if file does not exist).If a mode is ambiguous, ask the user which they want. Do not guess.
Before doing anything else, verify this is an Android project. Check for ANY of these signals:
android/ directory at repo root (Flutter, React Native, Cordova, Ionic projects)app/build.gradle or app/build.gradle.ktsAndroidManifest.xml anywhere in treepubspec.yaml with flutter: section AND an android/ subdirectorypackage.json with react-native dependency AND an android/ subdirectoryProjectSettings/ directory with Unity Android build target enabledsrc/main/java/ or src/main/kotlin/If NONE of these signals are present, stop immediately. Tell the user: "This does not appear to be an Android project. Skill only runs on Android apps/games. Detected: [briefly say what kind of project it looks like, or 'no recognizable project structure']."
Do not proceed past this gate. The user can override by explicitly saying "force-run anyway".
Use WebSearch + WebFetch to research the current Play Console publishing process. The Play Store rules change frequently - never rely on training-data knowledge alone. Research at minimum:
Cite the official support.google.com / developer.android.com / play.google.com/console URLs in the checklist so the user can verify.
Use the project's available tooling first. If the code-review-graph MCP is available, prefer get_architecture_overview_tool, semantic_search_nodes_tool, and query_graph_tool over Grep/Glob - they are faster and give structural context. Fall back to Grep/Read for anything the graph doesn't cover.
Determine the stack and adapt the analysis. At minimum, check:
Universal (every Android project)
applicationId in build.gradle(.kts) - is it production-ready (not com.example.*)?versionCode and versionName - sane values?minSdk, targetSdk, compileSdk - meet current Play Store requirements?keystore.properties referenced? Is there a .gitignore entry to keep secrets out of git?minifyEnabled true for release? Custom rules for any reflection-heavy libs?mipmap-anydpi-v26/ic_launcher.xml)? Or still default Flutter/RN icon?AndroidManifest.xml - still default?INTERNET permission and any network security config*Firebase (if `google-services.json` present or `firebase_` deps in pubspec)**
google-services.json present and matches production project (not dev/staging)?".read": true / ".write": true)?In-App Purchases (if `billing-client`, `in_app_purchase`, `react-native-iap`, RevenueCat detected)
Ads (if `play-services-ads`, `google_mobile_ads`, AdMob detected)
AndroidManifest.xml - production ID, not test?Game-specific (if Unity, Unreal, Flame, or game engines detected)
Flutter-specific
flutter build appbundle succeeds in release mode?--dart-defines for production set in build script / CI?--obfuscate --split-debug-info for release?React Native-specific
react-native-config env vars set for production?Google Sign-In / OAuth (if `google-sign-in`, `firebase_auth` with Google provider, `play-services-auth`, or `GoogleSignIn` detected)
APIs & Services > OAuth consent screen > Publishing statusGoogle Maps SDK (if `play-services-maps`, `google_maps_flutter`, or `mapbox` detected)
AndroidManifest.xml restricted to production applicationId + release SHA-256 (not unrestricted)MY_MAP_KEY or similar: not the same key used in dev/staging (rotate if shared)Meta / Facebook SDK (if `facebook-android-sdk`, `flutter_facebook_auth`, `react-native-fbsdk`, or `com.facebook.android` detected)
Meta App Dashboard > App > Settings > StatusapplicationId and release key hash (not just debug key hash)Twitter / X API (if `twitter-kit`, `twitter-android-sdk`, or OAuth Twitter flow detected)
Backend / API
Play Console account-level manual setup (always check, not code-detectable)
Play Console > Setup > Payments profileMake the list specific to what was actually found. Do not include generic "set up Firebase" if Firebase isn't used. Do not list "configure IAP" if there's no billing dependency.
go-live-checklist.mdWrite to repo root: go-live-checklist.md. Use this exact structure:
# Go-Live Checklist
**Created:** YYYY-MM-DD HH:MM (timezone)
**Last updated:** YYYY-MM-DD HH:MM (timezone)
**Project:** <detected project name>
**Stack:** <e.g., Flutter + Firebase + Flame + RTDB>
## Summary
| Severity | Total | PENDING | DONE | SKIPPED | CANCELLED |
|---|---|---|---|---|---|
| CRITICAL | N | N | N | N | N |
| HIGH | N | N | N | N | N |
| MEDIUM | N | N | N | N | N |
| LOW | N | N | N | N | N |
**Top blockers (CRITICAL, PENDING):**
- [ ] Item 1
- [ ] Item 2
## CRITICAL
### [PENDING] C1. <Short title>
**What:** <one-sentence description>
**Why critical:** <why this blocks launch>
**Where:** <file path or "Play Console > Setup > App Integrity">
**How:** <concrete steps; include exact form fields or code snippets>
**Reference:** <URL>
### [PENDING] C2. ...
## HIGH
### [PENDING] H1. ...
## MEDIUM
...
## LOW
...
---
## Change log
- YYYY-MM-DD HH:MM - Created
- YYYY-MM-DD HH:MM - Marked C1 DONEGroup external-console manual actions into their own labeled block within the appropriate severity tier so they stand out from code-level items. Use a comment like <!-- External console action: cannot be verified from code --> in the markdown (hidden from rendered view) so future recreations know not to auto-resolve these from code analysis. Example heading:
### [PENDING] C3. Publish OAuth consent screen in Google Cloud Console
**What:** OAuth app status is "In testing" - production users outside the test list receive Error 403: access_denied when signing in with Google.
**Why critical:** Silent auth failure for all real users; blocks launch.
**Where:** Google Cloud Console > APIs & Services > OAuth consent screen > Publishing status
**How:** Click "Publish App". If app requests sensitive/restricted scopes, a Google verification form appears - submit it before launch (verification can take weeks).
**Reference:** https://support.google.com/cloud/answer/10311615Severity definitions (include these as a footer):
Use stable IDs (C1, C2, H1, ...) so they can be referenced in conversation and survive recreations.
After writing the file, output a short summary to the user: total items per severity, top 3 CRITICAL blockers, and an offer: "Want me to walk through these one at a time?"
go-live-checklist.md to capture current statuses.Created, refresh Last updated. Append change log entry.The user wants to be guided through the items. Present one task at a time in severity order (CRITICAL first, then HIGH, MEDIUM, LOW) and within each tier in numeric order (C1, C2, ...).
For each PENDING item:
go-live-checklist.md immediately (do not batch). Append a change log entry.Skip items that are already DONE / SKIPPED / CANCELLED.
When done with a severity tier, briefly announce "All CRITICAL items handled, moving to HIGH" so the user knows where they are.
User says something like "mark C1 done" or "skip H3 and H4". Parse the IDs, update the file, append change log, confirm the change.
Read the file. Output the summary table plus all PENDING items grouped by severity. No code analysis or web research - fast read-only mode.
Only these four values, all uppercase:
PENDING - not yet acted on (default)DONE - user completed the taskSKIPPED - user explicitly skippedCANCELLED - user explicitly cancelled (different from SKIPPED - implies item is not applicable / abandoned)Always render in the heading bracket: ### [DONE] C3. App icon.
The checklist's value depends entirely on how specific and accurate it is. A generic "set up Firebase rules" is useless; "Review database.rules.json lines 14-22 - currently allows unauthenticated writes to /matches/" is actionable.
Play Console > [App] > Policy > App content > Data safety.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.