store-screenshots skill: MCP use; iPhone required class (medium Dynamic Island) and why 6.9" stays the default

This commit is contained in:
CRTkafa 2026-10-10 22:24:58 +08:00
parent ccd48465a6
commit b63c5dc1cf
2 changed files with 15 additions and 2 deletions

View file

@ -12,7 +12,7 @@ iOS Simulator capture needs macOS + Xcode (`xcrun`); Android capture needs `adb`
## Sizes (what each store wants)
| size key | pixels | where |
|---|---|---|
| ios69 | 1320 x 2868 | App Store 6.9" (`APP_IPHONE_67`), required |
| ios69 | 1320 x 2868 | App Store 6.9" (`APP_IPHONE_67`, "Dynamic Island (large display)"); the set storebound requires |
| ios65 | 1284 x 2778 | App Store 6.5" (`APP_IPHONE_65`) |
| ipad13 | 2064 x 2752 | App Store 13" iPad (`APP_IPAD_PRO_3GEN_129`), required when the app runs on iPad; only with `apple.ipad: true` |
| play | 1080 x 1920 | Play phone (2-8, ratio at most 2:1) |
@ -24,6 +24,11 @@ Sources (re-check before a release; Apple renames display classes often):
- Apple "Screenshot specifications": https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications
(13" iPad: 2064 x 2752 or 2048 x 2732, landscape too, "Required if app runs on iPad"; 1-10 per size; JPEG / PNG,
no alpha or transparency).
As of October 2026 the page marks "iPhone with Dynamic Island (medium display)" (1206 x 2622 / 1179 x 2556) as the
required iPhone class, and says a class without its own screenshots gets scaled ones from the next class: medium
from Face ID large (6.5"), 6.5" from Dynamic Island large (6.9"). So the 6.9" (+ 6.5") set still covers every
iPhone, and storebound keeps 6.9" as the default. If App Store Connect ever refuses to submit without the medium
set, render a 1206 x 2622 copy by hand (and open an issue so it becomes a size key).
- ASC API `ScreenshotDisplayType`: https://developer.apple.com/documentation/appstoreconnectapi/screenshotdisplaytype
(there is no "13 inch" value: the 13" iPad set is `APP_IPAD_PRO_3GEN_129`).
- Play graphics: https://support.google.com/googleplay/android-developer/answer/9866151 (screenshots 320-3840 px, at
@ -105,6 +110,12 @@ images there), so only do that after a test has a winner. What the stores offer,
- Test one thing per experiment (usually the first screenshot or the order), give it real traffic, and do not read
results early.
## From an AI tool (MCP)
`storebound mcp` exposes `shots_check` (read-only) and `shots_capture`, `shots_render`, `shots_gallery` (local files,
`dry_run: true` by default: run it once dry, show the plan, then with `dry_run: false`). Uploads (`apple_screenshots`,
`play_images`, both with `variant`) are store writes: dry first, and only for real after the owner agreed. Rendering
many languages takes minutes: in a terminal prefer `storebound shots render > .storebound/render.log 2>&1 &`.
## Gotchas
- Output is 24-bit RGB PNG: Play rejects alpha / palette PNGs, Apple rejects alpha.
- Arabic: `rtl: true` on the language; numbers stay LTR inside RTL text automatically.