--- name: ios-app-store-screenshots description: >- Capture App Store Connect screenshots on fixed Simulators across device size classes and UI languages, drive one product storyboard, verify ASC pixel sizes, and stage versioned PNGs for upload. Use when the user needs App Store screenshots, localised store shots, iPad 13-inch screenshots, ASC media, or "Unable to Add for Review" screenshot gaps. Prefer this skill over ad-hoc Simulator screenshots. --- # App Store screenshots (iOS) Produce **App Store Connect listing screenshots** for an iOS (or iPad-capable) app: fixed Simulator devices, one scripted product storyboard, optional multi-language fan-out, and versioned PNG folders ready for Media Manager. **This skill never uploads to App Store Connect.** ## When to use - User asks for App Store screenshots, ASC media, or listing screenshots - iPad 13" class is missing and Add for Review is blocked - Localised screenshots for every store language the listing uses - Replacing hand-captured Simulator shots with a repeatable matrix ## Suggested layers Adapt names to your repo. The pattern matters more than the labels. | Layer | Role | |-------|------| | Staged `.app` | Release binary from your RC pipeline (or an explicit `--app` path) | | Device matrix | Deterministic Simulator names for each ASC size class | | Language matrix | `--lang` / `--langs` → Simulator `AppleLanguages` + `AppleLocale` | | Storyboard | One scripted flow (Maestro, XCUITest, or equivalent) identical on every form factor | | Output | `release//app-store-screenshots//{iphone,ipad}/` + README checklist | ## Agent contract (mandatory) 1. **Call the project capture script** (or create one that follows this skill). Do not invent a parallel ad-hoc recipe or swap device names casually. 2. Prefer a staged Release `.app`. Do not rely on "whatever Simulator is already open." 3. After a run, read the generated README checklist and surface pass/fail sizes + paths. 4. If the app supports iPad and the 13" set is missing → **fail the gate**. Do not tell the user to upload an incomplete set. 5. **Never** auto-upload screenshots to App Store Connect from this skill. ## Default workflow 1. Resolve version and staged `.app` (or accept an explicit app path). 2. Boot the fixed Simulator set for the slots you need (iPhone size class; iPad 13" when dual-family). 3. For each language: set Simulator language + region, uninstall/reinstall so UI strings pick up, dismiss overlays, run the storyboard, post-process to flat RGB PNG. 4. Verify each file matches an accepted ASC portrait size for that slot. 5. Write per-language and index README checklists under the versioned output folder. 6. Tell the human where to upload in App Store Connect (Media Manager → matching localization → iPhone + 13" iPad wells). ## Device matrix (ASC slots) | Slot | Typical Simulator | Accepted portrait px (examples) | |------|-------------------|----------------------------------| | iPhone (largest class) | iPhone 16 Pro Max class | 1320×2868, 1290×2796, or 1260×2736 | | iPad 13" | iPad Pro 13-inch (M4) class | 2064×2752 or 2048×2732 | Official sizes: [Upload app previews and screenshots](https://developer.apple.com/help/app-store-connect/manage-app-information/upload-app-previews-and-screenshots). iPhone is usually portrait-only for listing. iPad portrait is required when iPad is supported; landscape is optional. ## Languages Maintain a language table in **your** repo mapping store codes → Simulator `AppleLanguages` / `AppleLocale` (and any app-specific i18n key aliases). Pass one language (`--lang`) or a batch (`--langs`). Prefer a search/query string that returns content in that catalogue when the storyboard includes search. ## Storyboard design choices - **Deterministic devices**, not whatever is already running - **One scripted story**, identical across form factors - **Overlay dismissal** before every shot (ATT, StoreKit, onboarding, offline popups) - **Audio / playback** when a "playing" frame matters - **Versioned artifacts + checklist** next to the release folder - **Partial re-run modes** when only one slot or shot failed ## What not to copy from Play Store pipelines - Play's **longest ≤ 2× shortest** crop — ASC wants **native device resolutions** - Separate 7"/10" tablet slots — ASC is iPhone + **one** iPad size class (13" when iPad is supported) - UIAutomator text scraping — prefer accessibility IDs / Maestro `testID`s ## After the run 1. Quote language(s), which slots are OK / FAIL, and exact paths. 2. Point the human to App Store Connect → Previews and Screenshots for each localization. 3. Keep ownership of review: layout breakage per locale and which shots earn a place on the listing still need a human. ## Do not - Upload to ASC from the skill - Soft-pass a missing iPad 13" set when iPad is supported - Hardcode another app's bundle ID, Maestro IDs, or private product storyboard into a public fork - Publish credentials, absolute home paths, or private release internals ## Related - Pair with a Play Store screenshots skill for Android so both stores share the same product narrative - Pair with iOS What's New release notes when the same ship also needs localised store copy