asc-shots-pipeline
Orchestrate iOS screenshot automation with xcodebuild/simctl for build-run, AXe for UI actions, JSON settings and plan files, Koubou-based framing (`asc screenshots frame`), and screenshot upload (`asc screenshots upload`). Use when users ask for automated screenshot capture, AXe-driven simulator fl
By rorkai · 6,276 installs
npx skills add rorkai/app-store-connect-cli-skills --skill asc-shots-pipeline
Source repository · Upstream listing
asc screenshots pipeline (xcodebuild AXe frame asc)
Use this skill for agent driven screenshot workflows where the app is built and launched with Xcode CLI tools, UI is driven with AXe, and screenshots are uploaded with asc .
Current scope
Implemented now: build/run, AXe plan capture, frame composition, and upload.
Device discovery is built in via asc screenshots list frame devices .
Local screenshot automation commands are experimental in asc cli.
Framing is pinned to Koubou 0.18.1 for deterministic output.
Feedback/issues: https://github.com/rorkai/App Store Connect CLI/issues/new/choose
Defaults
Settings file: .asc/shots.settings.json
Capture plan: .asc/screenshots.json
Raw screenshots dir: ./screenshots/raw
Framed screenshots dir: ./screenshots/framed
Default frame device: iphone air
1) Create settings JSON first
Create or update .asc/shots.settings.json :
If you intentionally skip framing, set:
"frame enabled": false
"upload.source dir": "./screenshots/raw"
2) Build and run app on simulator
Use Xcode CLI for build/install/launch:
Use xcodebuild showBuildSettings if the app bundle path differs from the default location.
3) Capture screenshots with AXe (or asc screenshots run )
Prefer plan driven capture:
Useful AXe primitives during plan authoring:
Minimal .asc/screenshots.json example:
4) Frame screenshots with asc screenshots frame
The asc CLI pins framing to Koubou 0.18.1 .
Install and verify before running framing steps:
List supported frame device values first:
Frame one screenshot (defaults to iphone air ):
Supported device values:
iphone air (default)
iphone 17 pro
iphone 17 pro max
iphone 16e
iphone 17
mac
5) Upload screenshots with asc
Generate and review artifacts before upload:
For reviewed multi locale sets, prefer the plan/apply flow so existing remote screenshot counts are included before upload:
Upload from the configured source directory (default ./screenshots/framed when framing is enabled):
List or validate before upload when needed:
Agent behavior
Always confirm exact flags with help before running commands.
Re check command paths with asc screenshots help because screenshot commands are evolving quickly.
Keep outputs deterministic: default to JSON for machine steps.
Prefer asc screenshots list frame devices output json before selecting a frame device.
Ensure screenshot files exist before upload.
Use explicit long flags ( app , output , version localization , etc.).
Treat screenshot local automation as experimental and call it out in user facing handoff notes.
Use asc screenshots plan / asc screenshots apply for reviewed batches when you need append limit guardrails across existing remote screenshots.
If framing fails with a version error, re install pinned Koubou: pip install koubou==0.18.1 .
If framing fails because device frames are missing, run kou setup frames once with network access.
6) Multi locale capture (optional)
Do not use xcrun simctl launch ... e AppleLanguages for localization.
e is an environment variable pattern and does not reliably switch app language.
For this pipeline, use simulator wide locale defaults per UDID. This works with
asc screenshots capture , which relaunches the app internally.
If you launch manually (outside asc screenshots capture ), use app launch arguments:
7) Parallel execution for speed
Run one locale per simulator UDID in parallel:
Or use xargs with locale:udid pairs:
8) Full multi locale pipeline example