Appstore screenshot pipeline
Skill Xopoko/build-swift-apps/skills/appstore-screenshot-pipeline
Swift-focused AI agent skills for iOS and macOS: build, debug, simulator, SwiftUI, Xcode, App Store workflows. Part of Plug'n Skills.
npx -y skills add Xopoko/build-swift-apps --skill appstore-screenshot-pipelineAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Orchestrate iOS screenshot automation with xcodebuild/simctl, AXe plans, Koubou framing, review artifacts, and `asc screenshots` upload.
SKILL.md
4.0 KB, as published. Nobody here has run it
App Store Screenshot Pipeline
Build/run the app, capture deterministic screenshots, frame them, review them, then upload through asc.
Defaults: settings .asc/screenshot.settings.json, plan .asc/screenshots.json, raw ./screenshots/raw, framed ./screenshots/framed, frame device iphone-air, Koubou 0.18.1.
Workflow
-
Verify the current CLI surface with
asc screenshots --help, subcommand help, andaxe --version. Ifaxeis missing, install it withbrew install cameroncooke/axe/axeor run./scripts/install-deps.sh --profile screenshots. -
Create/update settings with bundle id, project/scheme, UDID, paths,
frame_enabled,upload_enabled, and upload target. -
Build/install/launch:
xcrun simctl boot "$UDID" || true xcodebuild -project "App.xcodeproj" -scheme "App" -configuration Debug \ -destination "platform=iOS Simulator,id=$UDID" -derivedDataPath ".build/DerivedData" build xcrun simctl install "$UDID" ".build/DerivedData/Build/Products/Debug-iphonesimulator/App.app" xcrun simctl launch "$UDID" "com.example.app"Use
xcodebuild -showBuildSettingsif the bundle path differs. -
Capture with plan:
asc screenshots run --plan ".asc/screenshots.json" --udid "$UDID" --output jsonDuring plan authoring use AXe primitives:
axe describe-ui,axe tap,axe type,axe screenshot. -
Frame with pinned Koubou:
pip install koubou==0.18.1 kou --version asc screenshots list-frame-devices --output json asc screenshots frame --input "./screenshots/raw/home.png" --output-dir "./screenshots/framed" --device "iphone-air" --output jsonIf frames are missing, run
kou setup-framesonce with network access. -
Review:
asc screenshots review-generate --framed-dir "./screenshots/framed" --output-dir "./screenshots/review" asc screenshots review-open --output-dir "./screenshots/review" asc screenshots review-approve --all-ready --output-dir "./screenshots/review" -
Prefer plan/apply for reviewed batches so existing remote screenshots are considered:
asc screenshots plan --app "APP_ID" --version "1.2.3" --review-output-dir "./screenshots/review" --output json asc screenshots apply --app "APP_ID" --version "1.2.3" --review-output-dir "./screenshots/review" --confirm --output jsonDirect upload:
asc screenshots upload --version-localization "LOC_ID" --path "./screenshots/framed" --device-type "IPHONE_65" --output json
Locale Capture
Do not rely on xcrun simctl launch ... -e AppleLanguages; it does not reliably switch app language. Prefer one simulator UDID per locale, set simulator-wide defaults, then capture:
set_simulator_locale() {
UDID="$1"; LOCALE="$2"; LANG="${LOCALE%%-*}"; APPLE_LOCALE="${LOCALE/-/_}"
xcrun simctl boot "$UDID" || true
xcrun simctl spawn "$UDID" defaults write NSGlobalDomain AppleLanguages -array "$LANG"
xcrun simctl spawn "$UDID" defaults write NSGlobalDomain AppleLocale -string "$APPLE_LOCALE"
}
set_simulator_locale "$UDID" "de-DE"
xcrun simctl terminate "$UDID" "com.example.app" || true
asc screenshots capture --bundle-id "com.example.app" --name "home" --udid "$UDID" --output-dir "./screenshots/raw/de-DE" --output json
For manual launches: xcrun simctl launch "$UDID" "com.example.app" -AppleLanguages "(de)" -AppleLocale "de_DE". Parallelize locales with distinct UDIDs and frame/review after wait.
Rules
Use explicit long flags and JSON for machine steps. Ensure files exist before upload. Treat local screenshot automation as experimental in user-facing notes. Use plan/apply for append-limit guardrails. If framing checks fail, reinstall koubou==0.18.1. Validate with asc screenshots sizes --output table and asc screenshots list --version-localization "LOC_ID" --output table.