asc-shots-pipeline
xcodebuild/simctl によるビルド・実行、AXe による UI 操作、JSON 設定・プランファイルの管理、Koubou ベースのフレーム合成(`asc screenshots frame`)、およびスクリーンショットのアップロード(`asc screenshots upload`)を組み合わせた iOS スクリーンショット自動化パイプラインを統括します。スクリーンショットの自動キャプチャ、AXe を使ったシミュレーター操作フロー、フレーム合成、アップロードまでの一連の処理を求められた際に使用してください。
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.
SKILL.md 本文
asc screenshots pipeline (xcodebuild -> AXe -> frame -> asc)
Xcode CLI ツールでアプリをビルド・起動し、AXe で UI を駆動し、asc でスクリーンショットをアップロードするエージェント駆動のスクリーンショットワークフローにこのスキルを使用します。
現在のスコープ
- 実装済み: ビルド/実行、AXe プラン キャプチャ、フレーム合成、アップロード。
- デバイス検出は
asc screenshots list-frame-devices経由で組み込まれています。 - ローカルスクリーンショット自動化コマンドは asc cli で実験的です。
- フレーミングは決定論的な出力のため Koubou
0.18.1に固定されています。 - フィードバック/問題報告: https://github.com/rorkai/App-Store-Connect-CLI/issues/new/choose
デフォルト値
- 設定ファイル:
.asc/shots.settings.json - キャプチャプラン:
.asc/screenshots.json - ロースクリーンショットディレクトリ:
./screenshots/raw - フレーム付きスクリーンショットディレクトリ:
./screenshots/framed - デフォルトフレームデバイス:
iphone-air
1) まず設定 JSON を作成
.asc/shots.settings.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"
}
}
フレーミングをスキップする場合は以下を設定します:
"frame_enabled": false"upload.source_dir": "./screenshots/raw"
2) シミュレータ上でアプリをビルドして実行
Xcode CLI でビルド/インストール/起動を実行します:
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"
アプリバンドルパスがデフォルト位置と異なる場合は xcodebuild -showBuildSettings を使用します。
3) AXe でスクリーンショットをキャプチャ (または asc screenshots run)
プラン駆動のキャプチャを推奨します:
asc screenshots run --plan ".asc/screenshots.json" --udid "$UDID" --output json
プランオーサリング時の便利な AXe プリミティブ:
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"
最小限の .asc/screenshots.json 例:
{
"version": 1,
"app": {
"bundle_id": "com.example.app",
"udid": "booted",
"output_dir": "./screenshots/raw"
},
"steps": [
{ "action": "launch" },
{ "action": "wait", "duration_ms": 800 },
{ "action": "screenshot", "name": "home" }
]
}
4) asc screenshots frame でスクリーンショットをフレーミング
asc cli はフレーミングを Koubou 0.18.1 に固定しています。
フレーミング手順を実行する前にインストールして検証します:
pip install koubou==0.18.1
kou --version # 0.18.1 が表示されることを確認
# Koubou がデバイスフレームが見つからないと報告する場合、ネットワークアクセスで一度実行します:
kou setup-frames
サポートされているフレームデバイス値を最初にリストアップします:
asc screenshots list-frame-devices --output json
1つのスクリーンショットをフレーミング (デフォルトは iphone-air):
asc screenshots frame \
--input "./screenshots/raw/home.png" \
--output-dir "./screenshots/framed" \
--device "iphone-air" \
--output json
サポートされている --device 値:
iphone-air(デフォルト)iphone-17-proiphone-17-pro-maxiphone-16eiphone-17mac
5) asc でスクリーンショットをアップロード
アップロード前にアーティファクトを生成して確認します:
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"
構成されたソースディレクトリからアップロード (フレーミングが有効な場合、デフォルトは ./screenshots/framed):
asc screenshots upload \
--version-localization "LOC_ID" \
--path "./screenshots/framed" \
--device-type "IPHONE_65" \
--output json
必要に応じてアップロード前にリストまたは検証します:
asc screenshots sizes --output table
asc screenshots list --version-localization "LOC_ID" --output table
エージェント動作
- コマンド実行前に常に
--helpで正確なフラグを確認します。 - スクリーンショットコマンドは急速に進化しているため、
asc screenshots --helpでコマンドパスを再確認します。 - 出力を決定論的に保つ: マシンステップでは JSON にデフォルト設定します。
- フレームデバイスを選択する前に
asc screenshots list-frame-devices --output jsonを推奨します。 - アップロード前にスクリーンショットファイルが存在することを確認します。
- 明示的なロングフラグを使用します (
--app,--output,--version-localizationなど)。 - スクリーンショットローカル自動化を実験的なものとして扱い、ユーザー向けハンドオフメモで明示します。
- フレーミングがバージョンエラーで失敗する場合、ピン止めされた Koubou を再インストールします:
pip install koubou==0.18.1。 - フレーミングがデバイスフレームの欠落で失敗する場合、ネットワークアクセスで
kou setup-framesを一度実行します。
6) マルチロケール キャプチャ (オプション)
ローカライゼーションに xcrun simctl launch ... -e AppleLanguages を使用しないでください。
-e は環境変数パターンで、アプリ言語の切り替えが確実ではありません。
このパイプラインでは、UDID ごとにシミュレータ全体のロケールデフォルトを使用します。これは
asc screenshots capture で機能し、内部的にアプリを再起動します。
# 各ロケールを専用シミュレータ UDID にマップします。
# (これらシミュレータを一度 `xcrun simctl create` で作成します。)
declare -A LOCALE_UDID=(
["en-US"]="UDID_EN_US"
["de-DE"]="UDID_DE_DE"
["fr-FR"]="UDID_FR_FR"
["ja-JP"]="UDID_JA_JP"
)
set_simulator_locale() {
local UDID="$1"
local LOCALE="$2" # e.g. de-DE
local LANG="${LOCALE%%-*}" # de
local APPLE_LOCALE="${LOCALE/-/_}" # de_DE
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"
}
for LOCALE in "${!LOCALE_UDID[@]}"; do
UDID="${LOCALE_UDID[$LOCALE]}"
echo "Capturing $LOCALE on $UDID..."
set_simulator_locale "$UDID" "$LOCALE"
xcrun simctl terminate "$UDID" "com.example.app" || true
asc screenshots capture \
--bundle-id "com.example.app" \
--name "home" \
--udid "$UDID" \
--output-dir "./screenshots/raw/$LOCALE" \
--output json
done
手動でアプリを起動する場合 (asc screenshots capture の外部):
xcrun simctl launch "$UDID" "com.example.app" -AppleLanguages "(de)" -AppleLocale "de_DE"
7) 速度向上のための並列実行
シミュレータ UDID ごとに 1 つのロケールを並列実行します:
#!/bin/bash
# parallel-capture.sh
declare -A LOCALE_UDID=(
["en-US"]="UDID_EN_US"
["de-DE"]="UDID_DE_DE"
["fr-FR"]="UDID_FR_FR"
["ja-JP"]="UDID_JA_JP"
)
capture_locale() {
local LOCALE="$1"
local UDID="$2"
local LANG="${LOCALE%%-*}"
local APPLE_LOCALE="${LOCALE/-/_}"
echo "Starting $LOCALE on $UDID"
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"
xcrun simctl terminate "$UDID" "com.example.app" || true
asc screenshots capture \
--bundle-id "com.example.app" \
--name "home" \
--udid "$UDID" \
--output-dir "./screenshots/raw/$LOCALE" \
--output json
echo "Completed $LOCALE"
}
for LOCALE in "${!LOCALE_UDID[@]}"; do
capture_locale "$LOCALE" "${LOCALE_UDID[$LOCALE]}" &
done
wait
echo "All captures done. Now framing..."
または xargs を locale:udid ペアで使用します:
printf "%s\n" \
"en-US:UDID_EN_US" \
"de-DE:UDID_DE_DE" \
"fr-FR:UDID_FR_FR" \
"ja-JP:UDID_JA_JP" | xargs -P 4 -I {} bash -c '
PAIR="{}"
LOCALE="${PAIR%%:*}"
UDID="${PAIR##*:}"
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"
xcrun simctl terminate "$UDID" "com.example.app" || true
asc screenshots capture --bundle-id "com.example.app" --name "home" --udid "$UDID" --output-dir "./screenshots/raw/$LOCALE" --output json
'
8) フル マルチロケール パイプライン例
#!/bin/bash
# full-pipeline-multi-locale.sh
declare -A LOCALE_UDID=(
["en-US"]="UDID_EN_US"
["de-DE"]="UDID_DE_DE"
["fr-FR"]="UDID_FR_FR"
["es-ES"]="UDID_ES_ES"
["ja-JP"]="UDID_JA_JP"
)
DEVICE="iphone-air"
RAW_DIR="./screenshots/raw"
FRAMED_DIR="./screenshots/framed"
# ステップ 1: シミュレータ ロケール デフォルト別の並列キャプチャ
for LOCALE in "${!LOCALE_UDID[@]}"; do
(
UDID="${LOCALE_UDID[$LOCALE]}"
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"
xcrun simctl terminate "$UDID" "com.example.app" || true
asc screenshots capture \
--bundle-id "com.example.app" \
--name "home" \
--udid "$UDID" \
--output-dir "$RAW_DIR/$LOCALE" \
--output json
echo "Captured $LOCALE"
) &
done
wait
# ステップ 2: 並列フレーミング
for LOCALE in "${!LOCALE_UDID[@]}"; do
(
asc screenshots frame \
--input "$RAW_DIR/$LOCALE/home.png" \
--output-dir "$FRAMED_DIR/$LOCALE" \
--device "$DEVICE" \
--output json
echo "Framed $LOCALE"
) &
done
wait
# ステップ 3: レビュー生成 (単一実行、すべてのロケールを集約)
asc screenshots review-generate \
--framed-dir "$FRAMED_DIR" \
--output-dir "./screenshots/review"
# ステップ 4: アップロード (必要に応じてロケール別に実行)
for LOCALE in "${!LOCALE_UDID[@]}"; do
asc screenshots upload \
--version-localization "LOC_ID_FOR_$LOCALE" \
--path "$FRAMED_DIR/$LOCALE" \
--device-type "IPHONE_65" \
--output json
done
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- rudrankriyam
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/rudrankriyam/app-store-connect-cli-skills / ライセンス: MIT
関連スキル
nano-banana-2
inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」
octocode-slides
洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。
gpt-image2-ppt
OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。
nano-banana
Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。
oiloil-ui-ux-guide
モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。
axiom-hig-ref
Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。