asc-cli-usage について
App Store Connect 向けの `asc` コマンドの実行と設計を支援するスキルです。コマンドの探索、ネイティブコマンドの選択、認証、出力処理、安全な操作を扱います。
主な機能
- 01help と search によるコマンド探索
- 02エンドポイントスキーマと対応範囲の確認
- 03`asc api` よりネイティブコマンドを優先
- 04認証と出力形式の処理
- 05ページネーションと変更時の安全策
活用シーン
- 01App Store Connect の作業に使うコマンドと引数の特定
- 02コマンド設計前の API フィールド確認
- 03API 操作や Web セッション操作の認証方式選択
- 04安全確認を伴う読み取りと書き込みの自動化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rorkai/ app-store-connect-cli-skills --skill asc-cli-usageインストール後、Claude Code で/asc-cli-usageを入力して読み込まれたか確認します。
詳細
asc CLI の使用方法
App Store Connect 用の asc コマンドを実行または設計する必要がある場合は、このスキルを使用してください。
コマンドの確認
- コマンドとフラグを確認するには、必ず
--helpを使用してください。asc --helpasc builds --helpasc builds list --help
- ワークフローは分かっているものの、コマンドのパスが分からない場合は、ローカルで決定的にコマンドを確認できる
asc searchを使用してください。asc search "submit app for review"asc search --output table "upload build"
- API 対応コマンドを設計する前に、バンドルされている App Store Connect エンドポイントのスキーマとリクエスト/クエリフィールドを確認するには、
asc schemaを使用してください。asc schema --pretty "GET /v1/apps"asc schema --method POST appStoreVersions
- CLI がサポートするワークフロー、部分的にサポートするワークフロー、Web セッションが必要なワークフロー、公開 API では制限されるワークフローの範囲を説明するには、
asc capabilitiesを使用してください。asc capabilities --area release --output tableasc capabilities --status web-session --output tableasc capabilities --status not-public-api --output markdown
asc api よりネイティブコマンドを優先する
- 読み取りと書き込みには、必ずネイティブコマンドを使用してください。
asc apiを使う前に、asc search "TASK"または--helpでコマンドを探してください。 --includeに対応するネイティブの読み取りでは、関連レコードをリレーションごとにリクエストするのではなく、1 回の呼び出しで取得するために--includeを使用してください。関連リソースをincluded配列で確認するには、--output jsonを使用してください。asc versions view --version-id "VERSION_ID" --include build,appStoreVersionSubmissionasc builds info --build-id "BUILD_ID" --include buildBetaDetail,betaAppReviewSubmission,betaGroupsasc iap view --id "IAP_ID" --include inAppPurchaseLocalizations,appStoreReviewScreenshotasc review submissions-get --id "SUBMISSION_ID" --include items,appStoreVersionForReview
- 単一リソースの読み取りや子リストの読み取りには、それぞれ専用のコマンドがあります。例:
asc localizations view --id "LOCALIZATION_ID"、asc testflight groups builds list --group-id "GROUP_ID"、asc pricing availability territory-availabilities --app "APP_ID"。 - タスクに対応するネイティブコマンドがない場合に限り、
asc api <METHOD> <PATH>を使用してください。このコマンドで書き込みを行うには--confirmが必要です。asc auth tokenを使ってcurlリクエストを手書きしないでください。
標準動詞(現在の asc)
- ドキュメントや自動化では、読み取り専用コマンドにおいて、旧式の
getエイリアスよりviewを優先してください。asc apps view --id "APP_ID"asc versions view --version-id "VERSION_ID" --include build--includeを指定しない場合、asc versions viewは非推奨の要約を出力します。JSON 出力でも stderr に警告が表示されます。--include-buildの代わりに--include buildを、--include-submissionの代わりに--include appStoreVersionSubmissionを使用してください。asc pricing availability view --app "APP_ID"
- 更新のみの提供状況関連機能や、その他の標準的な編集フローでは、
editを優先してください。asc pricing availability edit --app "APP_ID" --territory "USA,GBR" --available trueasc app-setup availability edit --app "APP_ID" --territory "USA,GBR" --available trueasc xcode version edit --build-number "42"
- 更新のみの
editコマンドを使用する前に、アプリの提供状況を初期設定するにはasc pricing availability createを使用してください。Apple が公開 API による初期設定を拒否した場合は、Web セッションで認証してasc web apps availability createを使用するか、App Store Connect で「価格および配信状況」を設定してください。asc pricing availability create --app "APP_ID" --territory "USA,GBR" --available true --available-in-new-territories trueasc web apps availability create --app "APP_ID" --territory "USA,GBR" --available-in-new-territories true
- CLI が意図的に上位レベルの置換/設定フローとしてモデル化しており、
--helpでも引き続きsetが標準動詞として表示される場合は、setを使用してください。
フラグの規則
- 明示的なロングフラグを使用します(例:
--app、--output)。 - 自動化では明示的なフラグを優先します。新しいコマンドの一部は、対話形式で実行すると不足しているフィールドの入力を求めることがあります。
- 破壊的な操作には
--confirmが必要です。 - ユーザーがすべてのページを求めている場合は、
--paginateを使用します。 - コマンド固有のフラグは、末端のサブコマンドの後に指定します。親コマンドグループでは、誤った位置に置かれたフラグは受け付けられません。
--nextの URL は不透明な継続情報として扱います。新しいフィルター、並べ替え、ページサイズのフラグと組み合わせず、必要なセレクターについては選択したコマンドのヘルプに従ってください。
出力形式
- 出力のデフォルトは TTY を認識して切り替わります。対話型ターミナルでは
table、パイプ接続時または非対話型ではjsonです。 - 人が読みやすい出力にする場合に限り、
--output tableまたは--output markdownを使用します。 --prettyは JSON 出力でのみ有効です。- stdout だけでなく、終了ステータスも確認してください。バッチ操作が失敗しても部分的なレシートが出力される場合があります。変更操作を再試行する前に、完了したアクションとリソース ID を確認してください。
認証とデフォルト値
asc auth loginによるキーチェーン認証を優先します。- フォールバック用の環境変数:
ASC_KEY_ID、ASC_ISSUER_ID、ASC_PRIVATE_KEY_PATH、ASC_PRIVATE_KEY、ASC_PRIVATE_KEY_B64。 ASC_APP_IDをデフォルトのアプリ ID として指定できます。- App Store Server API の読み取り(トランザクション、サブスクリプションのステータス、返金、通知履歴)は
asc storekitの配下にあり、asc authのプロファイルではなく、asc storekit auth loginで登録した別のアプリ内課金キーを使用します。 - 権限が不明な場合は、
asc web auth capabilitiesで API キーの権限範囲を正確に確認してください。- これはウェブセッション認証の機能です。
- デフォルトでは現在のローカル認証を確認できます。また、
--key-idを指定して特定のキーを確認することもできます。
- キャッシュされた Apple Account のウェブセッションを使って、
asc web api-keys createで App Store Connect チーム API キーを作成します。- Account Holder または Admin のセッションが必要です。必要に応じて、先に
asc web auth login --apple-id "[email protected]"を実行してください。 - コマンドは一度限りの P8 を
AuthKey_<KEY_ID>.p8として保存し、内容は出力しません。--output-dirで明示的なプライベートディレクトリを指定してください。 - 例:
asc web api-keys create --name "CI uploads" --role APP_MANAGER --output-dir "./keys" --output json。
- Account Holder または Admin のセッションが必要です。必要に応じて、先に
別のコードをリクエストする前に認証を再利用する
- API キー認証(
asc auth)と Apple Account のウェブセッション(asc web auth)は別々です。対応している操作では既存のキーチェーン API プロファイルを優先し、ウェブログインを開始する前にasc auth statusとコマンドの機能を確認してください。プロファイル名はローカルのラベルであり、アプリレベルの権限境界ではありません。 - ウェブ限定の作業では、まず
asc web auth status --apple-id "[email protected]" --output jsonを確認してください。認証済みのキャッシュ済みセッションを再利用し、変更を加える前に、そのプロバイダーが意図したアカウントと一致することを確認してください。通常の準備としてログアウトしたり、信頼状態やセッション状態をクリアしたりしないでください。 - Apple Account の対話型サインインは、1 つのプロセスだけが担当するようにしてください。コード入力のプロンプトが表示されている間は、同じプロセスを続行してください。チャレンジが無効になる可能性のある別のログインを開始するのではなく、他のエージェントと調整するか、順番に実行してください。
- コードは現在のプロンプトに対応するものを使用してください。信頼済みデバイスの通知コードと SMS の代替コードは、異なる認証手順で使うものです。CLI が電話への送信を通知した後は、先ほどの通知コードではなく、新しく電話に届いたコードを使用してください。通常の再送戦略として、意図的に誤ったコードを送信しないでください。サポートされている復旧方法については、インストール済みコマンドのヘルプを確認してください。
- 失敗した場合は、コードが拒否されたのか、認証またはプロバイダー選択後にタイムアウトしたのかを区別してください。詳細なエラーとインストール済みのバージョンを確認してから、追加のコードをリクエストしてください。リクエストのタイムアウトを延長しても、対話型セッションの問題が解決したことにはなりません。
- ログイン後、別途ステータスを読み取り、
authenticatedと選択されたプロバイダーを確認してください。成功を報告する前に、次のウェブ操作でキャッシュが再利用されることを確認してください。Apple は後からセッションを期限切れにすることがあるため、永続的な無人認証を約束しないでください。 - サポートされている
--two-factor-code-commandを設定する前に、asc web auth login --helpを確認してください。認証情報やコードをログ、ソース、シェル履歴、PR に含めないでください。CLI にパスワードマネージャーのパスキーを渡せる、あるいはブラウザーでのサインインによってキャッシュが更新されると決めつけず、インストール済みの CLI が明示的にサポートする認証方法だけを使用してください。 - 新規の非対話型ウェブサインインでは、
--two-factor-code-commandまたはASC_WEB_2FA_CODE_COMMANDが必要です。どちらも指定しない場合、パスワードを送信する前に失敗します。キャッシュ済みセッションの再利用に、新たなサインインは必要ありません。 - 公開チーム ID は
--public-provider-idで選択してください。--provider-idには Apple の数値のプロバイダー ID を指定します。どちらの ID にも API プロファイル名を代用しないでください。
Apple Ads
- コマンドを選ぶ前に
asc ads --helpを使用してください。 - Apple Ads では
asc ads auth、--ads-profile、ASC_ADS_*変数を使用します。App Store Connect API の認証情報は使用しません。 - 直接リソースを操作するコマンドは
--ad-accountまたはASC_ADS_AD_ACCOUNT_IDを指定して Platform API v1 を使用します。非推奨の Campaign Management API v5 コマンドはasc ads v5の下にあり、--orgまたはASC_ADS_ORG_IDを使用します。一方の ID をもう一方の代わりに使用しないでください。 - 広告アカウントへのアクセス権は
asc ads auth discover --output jsonで確認するか、asc ads acls list --output jsonで ACL のレスポンスを確認してください。 - ボディを指定するコマンドでは、リーフコマンドのヘルプに記載された正確なスキーマを使用して
--fileを指定してください。V1 のクエリフィルターでは単数形のvalueを使用し、一括処理のボディでは v5 の配列ではなくラッパーオブジェクトを使用する場合があります。 - Apple Ads のリソース操作コマンドは JSON を出力します。ヘルプに記載されている場合に限り
--paginateを使用してください。レポートとほとんどのクエリボディでは、ページネーションの設定を JSON ファイル内に記述します。 - 削除、および支出、請求、配信、ターゲティング、アクセスに影響する変更には
--confirmが必要です。明示的に一時停止状態で作成するキャンペーンは、文書化されている主な安全例外です。 - 実環境で変更をテストする場合は、明確なテスト名を付けてリソースを一時停止状態で作成し、すべての ID を保存してください。支出を伴うリソースは先に一時停止し、テストで作成したリソースだけを削除してください。
タイムアウト
ASC_TIMEOUT/ASC_TIMEOUT_SECONDSはリクエストのタイムアウトを設定します。ASC_UPLOAD_TIMEOUT/ASC_UPLOAD_TIMEOUT_SECONDSはアップロードのタイムアウトを設定します。
コメント
Markdown 対応