4.8 KiB
| name | description |
|---|---|
| store-preflight | Run and read the storebound readiness checks before submitting a mobile app or game - `storebound check` (offline config, copy limits, files), `storebound check --aso`, `storebound validate` (read-only App Store Connect + Google Play report with ordered blockers) and `storebound privacy-manifest`. Use before every submission, when the user asks "is my app ready to submit", or after changing listings, builds, IAPs or SDKs. |
Store preflight
CLI: storebound (or the MCP tools check, check_aso, validate, privacy_manifest). All four are read-only on
the stores; run them freely.
Order
storebound check: config, both listing files (limits are checked locally: title 30, subtitle 30, keywords 100 bytes, Play short 80, notes 500 ...), screenshot copy, Data safety answers, IAP texts (Apple description 45), files the config points at,.storebound/gitignored, and the app profile: accounts needaccounts.deletionUrl(+inApp), a sign-in for review needs the demo account in.storebound/, subscriptions needapp.termsUrl. Fix everything it lists; it exits 1 on problems.storebound check --aso: keyword field use, repeats, stuffing (aso-basics). Errors exit 1, warnings are advice.storebound privacy-manifest --ios ios/App(iOS): app manifest, required-reason APIs, SDKs without manifests (privacy-manifestskill).storebound validate(or--apple/--play): talks to both APIs read-only and prints findings in fix order. Exit 1 while there is a blocker.--jsonfor scripts.- With in-app products or subscriptions:
storebound catalog diff(read-only): both stores against the config, prices per region, offers. Exit 1 on missing or mismatched items.
Reading validate
Each line: number, level (BLOCKER, warn, ok), store, message, and a fix: with the command or skill.
| finding | means | fix |
|---|---|---|
| no build attached / build PROCESSING | the version has no usable binary | wait for VALID, then apple listing --version x --build N (explicit number) |
| export compliance not answered | the build has no encryption answer | export-compliance skill |
<locale>: missing description / keywords / subtitle |
text not pushed for a locale | edit store/appstore.md, apple listing |
| no APP_IPHONE_67 screenshots | 6.9" set missing (required) | apple screenshots; iPad apps add the 13" type to apple.screenshotTypes |
| review contact missing | App Review information incomplete | apple review-details |
| age rating unanswered | new questions Apple added | apple appinfo |
| no app price schedule / availability | pricing never set | apple appinfo; if the API refuses the first availability record, set it once in App Store Connect > Pricing and Availability |
| IAP MISSING_METADATA / no review screenshot | product incomplete | apple iap, apple iap-review |
| privacy policy HTTP 404 / unreachable | URL broken | privacy-policy skill |
| subscription MISSING_METADATA / no review screenshot / no group localization | subscription incomplete | apple subscriptions (store-subscriptions) |
| Play subscription base plan DRAFT | not active | play subscriptions |
| accounts.deletionUrl not set / unreachable | Play needs a delete-account page | account-deletion skill |
| sign-in required but no demo account | App Review cannot get in (2.1) | review-access skill, apple review-details |
| no Terms of Use URL / description without a Terms link | subscriptions need the EULA link (3.1.2) | store-subscriptions skill |
Play <lang>: phoneScreenshots 1/2 |
graphics missing | shots render, play images |
| app-ads.txt lacks lines / 404 | ad networks cannot verify you | ads-mediation-checks; the file lives at the root of the developer website |
| no release on any track | nothing uploaded | play release <aab> |
| product purchase option DRAFT | not active | play products |
| user-perceived crash / ANR rate over 1.09 % / 0.47 % (live apps) | Play's bad behavior threshold is crossed | store-health skill: storebound health, fix the top issues, ship a higher versionCode |
| Apple metric rated poor / heavy diagnostic signature | hangs, launches, disk writes | store-health skill (Xcode Organizer for the stack) |
Vitals need the Play Developer Reporting API enabled for the service account; without it validate only notes
"vitals not readable". --no-health skips these checks.
What validate cannot see (UI-only, check by hand)
App Privacy labels published, Play App content declarations (ads, target audience, content rating, advertising ID,
App access with the demo account), in-app account deletion working, first subscriptions added to the version,
agreements / tax / banking, countries for production on Play. (TestFlight groups and testers: storebound apple testflight status.) Tell the owner which are still open.