skills/tddworks/asc-cli-skills/asc-app-previews

asc-app-previews

SKILL.md

asc App Previews

Manage App Store preview video sets and video uploads via the asc CLI.

Commands

List preview sets for a localization

asc app-preview-sets list --localization-id <LOCALIZATION_ID>

Create a preview set

asc app-preview-sets create \
  --localization-id <LOCALIZATION_ID> \
  --preview-type <PREVIEW_TYPE>

--preview-type raw values have no APP_ prefix — unlike screenshot display types. Common values: IPHONE_67, IPHONE_65, IPAD_PRO_3GEN_129, APPLE_TV, APPLE_VISION_PRO, DESKTOP.

See preview-types.md for all valid values grouped by device.

List previews in a set

asc app-previews list --set-id <SET_ID>

Upload a preview video

asc app-previews upload \
  --set-id <SET_ID> \
  --file path/to/preview.mp4 \
  [--preview-frame-time-code 00:00:05]
  • Accepted formats: .mp4, .mov, .m4v
  • --preview-frame-time-code sets the poster frame shown in the App Store
  • Upload is a 3-step API flow: POST reserve → PUT chunks → PATCH MD5 confirm

State Fields

AppPreview has two independent state fields (unlike screenshots which only have one):

Field States Meaning
assetDeliveryState AWAITING_UPLOAD, UPLOAD_COMPLETE, COMPLETE, FAILED Upload progress
videoDeliveryState AWAITING_UPLOAD, UPLOAD_COMPLETE, PROCESSING, COMPLETE, FAILED Video encoding

videoDeliveryState: "COMPLETE" = video ready. PROCESSING is unique to previews (absent on screenshots).

Nil fields are omitted from JSON output. mimeType values containing / are escaped as \/ by JSONEncoder (e.g. "video\/mp4").

CAEOAS Affordances

Every JSON response includes affordances with ready-to-run follow-up commands:

AppPreviewSet:

{
  "affordances": {
    "listPreviews":    "asc app-previews list     --set-id <SET_ID>",
    "listPreviewSets": "asc app-preview-sets list --localization-id <LOCALIZATION_ID>"
  }
}

AppPreview:

{
  "affordances": {
    "listPreviews": "asc app-previews list --set-id <SET_ID>"
  }
}

Typical Workflow

# 1. Find the localization ID
asc version-localizations list --version-id <VERSION_ID> --output table

# 2. Create a preview set for the target device
asc app-preview-sets create \
  --localization-id <LOCALIZATION_ID> \
  --preview-type IPHONE_67

# 3. Upload the video (copy --set-id from affordances in step 2)
asc app-previews upload \
  --set-id <SET_ID> \
  --file preview.mp4 \
  --preview-frame-time-code 00:00:05

# 4. Check processing state
asc app-previews list --set-id <SET_ID> --pretty
Weekly Installs
2
First Seen
Today
Installed on
junie2
windsurf2
amp2
cline2
opencode2
cursor2