release-screenshots

SKILL.md

Release Screenshots

Quick Ref: Capture App Store screenshots across all required device sizes (6.9", 6.5", 5.5") using simulator automation.

YOU MUST EXECUTE THIS WORKFLOW. Do not just describe it.


Pre-flight: Git Safety Check

git status --short

If uncommitted changes exist:

AskUserQuestion with questions:
[
  {
    "question": "You have uncommitted changes. Commit before proceeding?",
    "header": "Git",
    "options": [
      {"label": "Commit first (Recommended)", "description": "Save current work so you can revert if this skill modifies files"},
      {"label": "Continue without committing", "description": "Proceed — I accept the risk"}
    ],
    "multiSelect": false
  }
]

If "Commit first": Ask for a commit message, stage changed files, and commit. Then proceed.


Step 1: Gather Requirements

AskUserQuestion with questions:
[
  {
    "question": "Which screens do you want to capture?",
    "header": "Screens",
    "options": [
      {"label": "Main screens", "description": "Home, list, detail, settings — the typical set"},
      {"label": "All screens", "description": "Every major screen in the app"},
      {"label": "I'll specify", "description": "I'll list the exact screens to capture"}
    ],
    "multiSelect": false
  },
  {
    "question": "Which device sizes do you need?",
    "header": "Devices",
    "options": [
      {"label": "All iPhone (Recommended)", "description": "6.9\" + 6.5\" + 5.5\" — covers all App Store requirements"},
      {"label": "6.9\" only", "description": "iPhone 16 Pro Max — newest required size"},
      {"label": "Custom selection", "description": "I'll specify which sizes"}
    ],
    "multiSelect": false
  }
]

App Store Required Sizes

iPhone Screenshots (Required)

Display Size Simulator Name Resolution
6.9" iPhone 16 Pro Max 1320 x 2868
6.5" iPhone 11 Pro Max 1242 x 2688
5.5" iPhone 8 Plus 1242 x 2208

iPad Screenshots (If Universal App)

Display Size Simulator Name Resolution
12.9" iPad Pro 12.9-inch (6th generation) 2048 x 2732

Step 2: Setup

# Create output directories
mkdir -p ~/Downloads/AppStoreScreenshots/{iPhone-6.9,iPhone-6.5,iPhone-5.5}

# Find available schemes
xcodebuild -list -json 2>/dev/null | head -30

# List available simulators
xcrun simctl list devices available | grep -E "iPhone|iPad"

Step 3: Capture Screenshots

For each device size, repeat this process:

Boot and prepare simulator

# Boot the target simulator
xcrun simctl boot "iPhone 16 Pro Max"

# Set clean status bar (9:41, full battery, full signal)
xcrun simctl status_bar "iPhone 16 Pro Max" override \
  --time "9:41" \
  --batteryState charged \
  --batteryLevel 100 \
  --cellularMode active \
  --cellularBars 4

# Optional: Set appearance mode
xcrun simctl ui "iPhone 16 Pro Max" appearance light

Build and install

# Find bundle ID
xcodebuild -showBuildSettings -scheme <SCHEME> 2>/dev/null | grep PRODUCT_BUNDLE_IDENTIFIER

# Build for the simulator
xcodebuild build \
  -scheme <SCHEME> \
  -destination 'platform=iOS Simulator,name=iPhone 16 Pro Max' \
  2>&1 | tail -5

# Launch the app
xcrun simctl launch "iPhone 16 Pro Max" <BUNDLE_ID>

Capture each screen

# Wait for app to fully launch
sleep 3

# Capture screenshot
xcrun simctl io "iPhone 16 Pro Max" screenshot \
  ~/Downloads/AppStoreScreenshots/iPhone-6.9/01-Home.png

Navigate to the next screen (manually or via UI test), then capture again.

Repeat for next device

# Shutdown current simulator
xcrun simctl shutdown "iPhone 16 Pro Max"

# Boot next device
xcrun simctl boot "iPhone 11 Pro Max"
# ... repeat status bar, build, install, capture

Step 4: Verify Output

# Check all screenshots were captured
ls -la ~/Downloads/AppStoreScreenshots/*/

# Verify dimensions match App Store requirements
for f in ~/Downloads/AppStoreScreenshots/**/*.png; do
  echo "=== $f ==="
  sips -g pixelWidth -g pixelHeight "$f" 2>/dev/null
done

Display a verification summary inline:

## Screenshot Capture Summary

| Device | Screenshots | Status |
|--------|------------|--------|
| iPhone 16 Pro Max (6.9") | 5 of 5 | ✓ All captured |
| iPhone 11 Pro Max (6.5") | 5 of 5 | ✓ All captured |
| iPhone 8 Plus (5.5") | 5 of 5 | ✓ All captured |

### Dimension Verification

| File | Expected | Actual | Status |
|------|----------|--------|--------|
| iPhone-6.9/01-Home.png | 1320x2868 | 1320x2868 ||
| ... | ... | ... | ... |

**Output:** ~/Downloads/AppStoreScreenshots/

Expected folder structure

~/Downloads/AppStoreScreenshots/
├── iPhone-6.9/
│   ├── 01-Home.png
│   ├── 02-ItemList.png
│   └── 03-Detail.png
├── iPhone-6.5/
│   └── ...
└── iPhone-5.5/
    └── ...

Step 5: Follow-up

AskUserQuestion with questions:
[
  {
    "question": "How would you like to proceed?",
    "header": "Next",
    "options": [
      {"label": "Add device frames", "description": "Use fastlane frameit to add device bezels"},
      {"label": "Capture dark mode set", "description": "Repeat with appearance set to dark"},
      {"label": "Capture localized set", "description": "Switch language and repeat for another locale"},
      {"label": "Done", "description": "Screenshots are ready for upload"}
    ],
    "multiSelect": false
  }
]

Localization Workflow

If user selects "Capture localized set":

# Set simulator language (e.g., Spanish)
xcrun simctl shutdown "iPhone 16 Pro Max"
xcrun simctl boot "iPhone 16 Pro Max" -- -AppleLanguages "(es)" -AppleLocale "es_ES"

# Re-apply status bar, build, install, capture
# Save to locale-specific subfolder:
mkdir -p ~/Downloads/AppStoreScreenshots/es/iPhone-6.9/

Tips for Best Results

  • Reset simulator state for clean screenshots: xcrun simctl erase "iPhone 16 Pro Max"
  • Wait 2-3 seconds after navigation for animations to complete
  • Status bar override resets when simulator restarts — set it after boot
  • 6.9" and 6.7" screenshots can be reused (same aspect ratio)
  • Create a test account with sample data for consistent screenshots

Troubleshooting

Problem Solution
Simulator won't boot Run xcrun simctl shutdown all && killall Simulator then retry
Wrong screen captured Wait longer between navigation and capture
Screenshots too small/large Verify correct simulator with xcrun simctl list devices booted
Status bar shows wrong time Re-run xcrun simctl status_bar after boot
App not launching Check bundle ID with xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER
Weekly Installs
2
GitHub Stars
36
First Seen
10 days ago
Installed on
opencode2
github-copilot2
claude-code2
windsurf1
amp1
cline1