GlowHalo Skills

App Store Submission Preflight

Read-only store preflight: assets, signing, permissions vs privacy policy, versions, blockers first. Read-only preflight before you submit an app to Google Play, Amazon Appstore, Microsoft Store, itch.io or the Apple App Store. Give it a repo path or description plus the target store. It returns a required-assets checklist, a signing/packaging readiness check (never asks for or prints keys, passwords or tokens), manifest-permission versus privacy-policy/data-safety consistency findings, a version/build-number check, and a numbered submission runbook with typical rejection reasons to pre-empt. Items are tagged STABLE or VERIFY TODAY. Never builds, signs or submits, and never guarantees approval.

Gumroad · $2Groble · 2,900원SkillHQ · €2

Example input

Use the App Store Submission Preflight on this sample Android project (I wrote it for this demo, project folder notely/). Target: Google Play, this is an update; the live versionCode is 7. Files:

--- app/src/main/AndroidManifest.xml ---
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.notely">
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <application
        android:label="Notely"
        android:icon="@mipmap/ic_launcher"
        android:debuggable="true">
        <meta-data android:name="privacy_policy_url" android:value="https://notely.app/privacy" />
        <meta-data android:name="store_listing_privacy_url" android:value="https://notely.app/legal/privacy-policy" />
    </application>
</manifest>

--- app/build.gradle ---
android {
    defaultConfig {
        applicationId "com.example.notely"
        versionCode 7
        versionName "1.0.7"
    }
    signingConfigs {
        release {
            storeFile file("../release.jks")
            storePassword "NOT-A-REAL-PASSWORD"
            keyAlias "notely"
        }
    }
    buildTypes {
        release {
…

Example output

Mode R — Google Play — update (user says live versionCode is 7; test vs production track not stated) — BLOCKERS 7 / WARNINGS 4 / UNSURE 9 / OK 3

## Scope and evidence
- Mode R: project files at /tmp/qa2/notely were readable.
- Store: Google Play. App type: native Android (gradle). Release kind: update.
- Files read: app/src/main/AndroidManifest.xml, app/build.gradle (property names only), privacy-policy.md, release.jks (filename and git-tracked status only, never opened), ic_launcher.png (dimensions via `file`), git ls-files.
- Unavailable: any source code tree (manifest and gradle only), listing text, store console, the live published package ID, the store data-safety answers.
- User statement: "live version is 7".

## Stable practice vs verify today
STABLE:
- A square store icon, a feature/hero graphic and real screenshots are needed.
- Releases must be signed. Updates need the same signing identity and a higher build number.
- A release build must not be debuggable.
- Permissions need a feature behind them.
- The privacy policy must match behaviour and the listing's policy URL must match the policy.
- Signing keys must not be committed.

VERIFY TODAY (check the Play Console requirements, policy and "Data safety" help pages):
- Pixel sizes and counts for the store icon, feature graphic and screenshots.
- Target API level and its deadline.
- Package format (app bundle vs APK).
- Sensitive-permission declaration form for contacts.
- Data-safety form, content rating questionnaire and testing-track rules.
- Account type, verification and fees.

## Assets and sizes
| Asset | Needed? | Found in repo | Status | Tag |
|---|---|---|---|---|
| Launcher icon | Yes | app/src/main/res/mipmap-xxhdpi/ic_launcher.png, 192x192, square | FOUND-OK | STABLE (sizes VERIFY TODAY) |
| Store (high-res) icon | Yes | none; the 192px launcher icon is a different file with different rules | MISSING (usually 512x512, VERIFY TODAY) | STABLE / VERIFY TODAY |
| Feature graphic | Yes | none | MISSING (usually a wide banner of roughly 1024x500, from memory, may be stale, VERIFY TODAY) | STABLE / VERIFY TODAY |
| Screenshots | Yes | none | MISSING (count and device classes VERIFY TODAY) | STABLE / VERIFY TODAY |
| Short and full description | Yes | no listing text provided | UNSURE | STABLE |
| Content rating and data-disclosure answers | Yes | not provided | UNSURE | VERIFY TODAY |
| Privacy policy URL | Yes | see Permissions section: the two URLs in the manifest differ | BLOCKER (counted under Permissions) | STABLE |

…

Real output from running the skill on a sample problem, shortened. The skill file itself is not published here.

Also in a bundle

← All skills