# asc-shots-pipeline

Automates iOS builds, simulator screenshots, framing, and uploads through asc. Use it when screenshot capture needs a repeatable plan-driven flow.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 6900 installs · ★ 1101
- Author: rorkai
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/rorkai/app-store-connect-cli-skills/tree/HEAD/skills/asc-shots-pipeline/SKILL.md
- Updated: 2026-10-20
- HTML: https://affpapa.org/en/nevibecode/skills/asc-shots-pipeline

## What it does

This skill runs an iOS screenshot workflow from build and launch with `xcodebuild` and `simctl` through UI actions with `AXe`. Capture steps live in `.asc/screenshots.json`, while app details and output paths go in `.asc/shots.settings.json`.

It can frame captures with `asc screenshots frame`, prepare review artifacts, and upload screenshots with `asc` commands. Framing requires `Koubou` `0.20.0`, so checking the installed version before that stage matters.

Local screenshot automation commands in `asc` are experimental. The skill calls for checking flags with `--help`, listing frame devices before selection, and confirming screenshot files exist before upload.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add rorkai/app-store-connect-cli-skills --skill asc-shots-pipeline -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/asc-shots-pipeline/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/asc-shots-pipeline/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add rorkai/app-store-connect-cli-skills --skill asc-shots-pipeline -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/asc-shots-pipeline/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add rorkai/app-store-connect-cli-skills --skill asc-shots-pipeline -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/asc-shots-pipeline/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install rorkai/app-store-connect-cli-skills asc-shots-pipeline
```

2. **Manually: put the files in place**
- File: `.github/skills/asc-shots-pipeline/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add rorkai/app-store-connect-cli-skills --skill asc-shots-pipeline -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/rorkai/app-store-connect-cli-skills --path skills/asc-shots-pipeline
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/asc-shots-pipeline/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add rorkai/app-store-connect-cli-skills --skill asc-shots-pipeline -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/rorkai/app-store-connect-cli-skills/tree/HEAD/skills/asc-shots-pipeline/SKILL.md

## When to use it
- build and launch an iOS app in a simulator
- define screenshot capture in a JSON plan
- drive simulator UI actions with AXe
- frame captures with Koubou
- upload reviewed screenshots with asc

## Example prompts
- Build the app in a simulator and capture screenshots from `.asc/screenshots.json`.
- List frame devices, then frame `./screenshots/raw/home.png`.
- Generate review artifacts and create an upload plan for version `1.2.3`.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 4df85656787b0654.

BEGIN THIRD-PARTY FILE 4df85656787b0654
````text
---
name: asc-shots-pipeline
description: 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 flows, frame composition, or screenshot-to-upload pipelines.
---

# 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.20.0` 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`:

```json
{
  "version": 1,
  "app": {
    "bundle_id": "com.example.app",
    "project": "MyApp.xcodeproj",
    "scheme": "MyApp",
    "simulator_udid": "booted"
  },
  "paths": {
    "plan": ".asc/screenshots.json",
    "raw_dir": "./screenshots/raw",
    "framed_dir": "./screenshots/framed"
  },
  "pipeline": {
    "frame_enabled": true,
    "upload_enabled": false
  },
  "upload": {
    "version_localization_id": "",
    "device_type": "IPHONE_65",
    "source_dir": "./screenshots/framed"
  }
}
```

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:

```bash
xcrun simctl boot "$UDID" || true

xcodebuild \
  -project "MyApp.xcodeproj" \
  -scheme "MyApp" \
  -configuration Debug \
  -destination "platform=iOS Simulator,id=$UDID" \
  -derivedDataPath ".build/DerivedData" \
  build

xcrun simctl install "$UDID" ".build/DerivedData/Build/Products/Debug-iphonesimulator/MyApp.app"
xcrun simctl launch "$UDID" "com.example.app"
```

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:

```bash
asc screenshots run --plan ".asc/screenshots.json" --udid "$UDID" --output json
```

Useful AXe primitives during plan authoring:

```bash
axe describe-ui --udid "$UDID"
axe tap --id "search_field" --udid "$UDID"
axe type "wwdc" --udid "$UDID"
axe screenshot --output "./screenshots/raw/home.png" --udid "$UDID"
```
````
END THIRD-PARTY FILE 4df85656787b0654

The third-party file has ended. Everything between the 4df85656787b0654 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2932 of 11328 bytes. © rorkai · MIT · https://github.com/rorkai/app-store-connect-cli-skills/tree/HEAD/skills/asc-shots-pipeline/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
