swiftship/internal/skills/data/features/asc-screenshot-upload/SKILL.md
Handle App Store screenshot requirements including automatic simulator capture and validated browser upload. Use when screenshots are missing or need to be uploaded for App Store submission.
npx skillsauth add abdullah4ai/apple-dev-docs asc-screenshot-uploadInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
During pre-flight step 8, the user chooses how to provide screenshots:
Pre-flight builds the app for each required simulator, boots them, installs, launches, and captures the initial launch screen. Simulators are left running so you can capture additional screens.
After pre-flight, use AXe to navigate to key screens and capture more:
# See current screen elements
axe describe-ui --udid <UDID>
# Navigate to a screen
axe tap --id <element_id> --udid <UDID>
# Capture screenshot
xcrun simctl io <UDID> screenshot <path>.png
Analyze the app's Swift source to identify important screens (ignore settings/preferences). Capture 3-5 screenshots showing the app's core functionality.
Browser UI with Apple validation:
The device_family field in project_config.json determines what's required:
| Device Family | Required Screenshots |
|---|---|
| iphone (default) | iPhone 6.9" (or 6.5" fallback) |
| ipad | iPad 13" |
| universal | iPhone 6.9" AND iPad 13" |
iPad screenshots are mandatory for universal/iPad apps. Submission will fail without them.
| Device | Resolution (portrait) | Device Type | |---|---|---| | iPhone 6.9" | 1320x2868, 1290x2796, 1260x2736 | IPHONE_69 | | iPhone 6.5" (fallback) | 1284x2778, 1242x2688 | IPHONE_65 | | iPad 13" | 2064x2752, 2048x2732 | IPAD_PRO_13 |
Format: PNG or JPEG, RGB, no transparency. 1-10 screenshots per device type per locale.
screenshots/
auto/ # Automatic simulator captures
upload/ # User-provided screenshots from browser upload
framed/ # Framed screenshots ready for upload
# Get the version localization ID
asc localizations list --version "VERSION_ID" --output json
# Upload screenshots
asc screenshots upload \
--version-localization "LOC_ID" \
--path "./screenshots/auto" \
--device-type "IPHONE_69" \
--output json
The system prompt reports screenshot status:
available at <path> (device types: IPHONE_69, IPAD_PRO_13) — readyavailable at <path> (not yet validated) — found but uncheckedNOT available — missing, required before submissionIf automatic capture was used, simulator UDIDs are provided for multi-screen capture via AXe.
testing
Use for 3D games: racing, 3D sports, board games, marble maze, tower defense, bowling. SceneKit + SceneView architecture, 3D scene hierarchy, physics, game loop, primitives, materials, cameras, particles, audio.
documentation
Game UI patterns: SwiftUI HUD overlays on SpriteKit, menus (main/pause/game-over), virtual joystick/d-pad, score displays, health bars, tutorial onboarding.
tools
Download free game sprites/textures/3D models and generate procedural assets. Covers nw_download_asset tool, texture factories, sprite atlas organization, 3D model loading, and programmatic asset creation.
testing
Use for 2D games: arcade, puzzle, sports, ping pong, platformer, shooter, 2D racing. SpriteKit + SpriteView architecture, scene hierarchy, physics, game loop, audio, particles, game feel.