### Install and Setup Koubou Framing Tool Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Before using the screenshot pipeline, install the Koubou framing tool and set up device frames. This is a one-time setup that requires a network connection. ```bash # Install pinned Koubou framing tool pip install koubou==0.18.1 kou setup-frames # download device frames (once, needs network) ``` -------------------------------- ### Bootstrap New IAP with Setup Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-ppp-pricing/SKILL.md Use the `setup` command to create a new IAP, its first localization, and initial price schedule in a single verified flow. This command verifies the created IAP, localization, and price schedule by default. Use `--start-date` for scheduled pricing, or `--tier` or `--price-point-id` for deterministic tier- or ID-based setup. ```bash asc iap setup \ --app "APP_ID" \ --type NON_CONSUMABLE \ --reference-name "Pro Lifetime" \ --product-id "com.example.pro.lifetime" \ --locale "en-US" \ --display-name "Pro Lifetime" \ --description "Unlock everything forever" \ --price "9.99" \ --base-territory "USA" \ --output json ``` -------------------------------- ### Workflow Configuration Example Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Example `.asc/workflow.json` file demonstrating environment variables, before_all hook, and definitions for 'beta' and 'release' workflows with conditional steps. ```json // .asc/workflow.json { "env": { "APP_ID": "123456789", "VERSION": "2.1.0" }, "before_all": "asc auth status", "workflows": { "beta": { "description": "Resolve latest build and distribute to TestFlight", "steps": [ { "name": "resolve_build", "run": "asc builds info --app $APP_ID --latest --platform IOS --output json", "outputs": { "BUILD_ID": "$.data.id" } }, { "name": "add_to_group", "if": "GROUP_ID", "run": "asc builds add-groups --build-id ${steps.resolve_build.BUILD_ID} --group $GROUP_ID" } ] }, "release": { "description": "Stage and submit an App Store version", "steps": [ { "run": "asc validate --app $APP_ID --version $VERSION --platform IOS --output json" }, { "run": "asc release stage --app $APP_ID --version $VERSION --build $BUILD_ID --confirm" }, { "if": "SUBMIT_FOR_REVIEW", "run": "asc review submit --app $APP_ID --version $VERSION --build $BUILD_ID --confirm" } ] } } } ``` -------------------------------- ### Manage Signing Setup with `asc-signing-setup` Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Utilize the signing setup skill to manage bundle IDs, capabilities, certificates, and provisioning profiles. This includes listing existing bundle IDs. ```bash # List existing bundle IDs asc bundle-ids list --paginate ``` -------------------------------- ### Bootstrap New Subscription with Setup Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-ppp-pricing/SKILL.md Use `setup` to create a new subscription, including its group, localization, initial price, and availability in a single verified flow. Ensure credentials and app ID are set. Use `--tier` or `--price-point-id` instead of `--price` if your workflow is tier-driven. ```bash asc subscriptions setup \ --app "APP_ID" \ --group-reference-name "Pro" \ --reference-name "Pro Monthly" \ --product-id "com.example.pro.monthly" \ --subscription-period ONE_MONTH \ --locale "en-US" \ --display-name "Pro Monthly" \ --description "Unlock everything" \ --price "9.99" \ --price-territory "USA" \ --territories "USA,CAN,GBR" \ --output json ``` -------------------------------- ### Post-Create Setup and Availability Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-app-create-ui/SKILL.md Configure initial app settings such as primary locale, categories, and availability in new territories immediately after creation. Use the web flow for initial setup and consider the `asc pricing availability edit` command for subsequent territory changes. ```bash asc app-setup info set --app "APP_ID" --primary-locale "en-US" asc app-setup categories set --app "APP_ID" --primary GAMES asc web apps availability create \ --app "APP_ID" \ --territory "USA,GBR" \ --available-in-new-territories true ``` -------------------------------- ### Version Localization .strings File Example Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-localize-metadata/SKILL.md Example of a .strings file for version localizations, specifying translations for description, keywords, whatsNew, and promotionalText in Dutch. ```strings // nl-NL.strings "description" = "Je app-beschrijving hier"; "keywords" = "wiskunde,kinderen,tafels,leren"; "whatsNew" = "Bugfixes en verbeteringen"; "promotionalText" = "Leer de tafels van vermenigvuldiging!"; ``` -------------------------------- ### App-Info Localization .strings File Example Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-localize-metadata/SKILL.md Example of a .strings file for app-info localizations, specifically for the subtitle field in Dutch. ```strings // nl-NL.strings "subtitle" = "Leer tafels spelenderwijs"; ``` -------------------------------- ### Build and Launch App on Simulator Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt These commands build your application, install it on a specified simulator, and then launch it. Ensure the simulator is booted and its UDID is correctly specified. ```bash UDID="YOUR-SIMULATOR-UDID" xcr run 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" ``` -------------------------------- ### Install and Verify Koubou for Framing Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-shots-pipeline/SKILL.md Ensure Koubou version `0.18.1` is installed for deterministic screenshot framing. Run `kou setup-frames` if device frames are missing. ```bash pip install koubou==0.18.1 ``` ```bash kou --version # expect 0.18.1 ``` ```bash # If Koubou reports missing device frames, run once with network access: kou setup-frames ``` -------------------------------- ### Full Example: Add nl-NL and ru to Roxy Math Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-localize-metadata/SKILL.md A comprehensive example demonstrating the workflow to add Dutch and Russian localizations to an app. It includes resolving IDs, downloading source files, translating, writing new files, uploading, and verifying. ```bash # 1) Resolve IDs deterministically (do not auto-pick the "first" row) # If you only have names, use asc-id-resolver skill. asc apps list --output table APP_ID="APP_ID_HERE" asc versions list --app "$APP_ID" --state PREPARE_FOR_SUBMISSION --output table VERSION_ID="VERSION_ID_HERE" asc apps info list --app "$APP_ID" --output table APP_INFO_ID="APP_INFO_ID_HERE" # 2) Download English source (or your chosen source locale) asc localizations download --version "$VERSION_ID" --path "./localizations" asc localizations download --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations" # 3) Read en-US.strings, translate to nl-NL and ru (LLM step) # 4) Write nl-NL.strings and ru.strings to: # - ./localizations/ (version localization fields) # - ./app-info-localizations/ (subtitle/name/privacy fields) # 5) Upload all asc localizations upload --version "$VERSION_ID" --path "./localizations" asc localizations upload --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations" # 6) Verify asc localizations list --version "$VERSION_ID" --output table asc localizations list --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --output table ``` -------------------------------- ### Install asc cli skills Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/README.md Use this command to add the rorkai/app-store-connect-cli-skills pack to your asc cli. ```bash npx skills add rorkai/app-store-store-connect-cli-skills ``` -------------------------------- ### Build and Run App on Simulator with Xcode CLI Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-shots-pipeline/SKILL.md Use `xcrun simctl` and `xcodebuild` to boot a simulator, build the app, install it, and launch it. Verify the app bundle path if it deviates from the default. ```bash xcrun simctl boot "$UDID" || true xcodebuild \ -project "MyApp.xcodeproj" \ -scheme "MyApp" \ -configuration Debug \ -destination "platform=iOS Simulator,id=$UDID" \ -derivedDataPath ".build/DerivedData" \ build cncrun simctl install "$UDID" ".build/DerivedData/Build/Products/Debug-iphonesimulator/MyApp.app" cncrun simctl launch "$UDID" "com.example.app" ``` -------------------------------- ### Set up signing for new app Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/README.md Use this command to set up signing assets for a new app, including bundle IDs, capabilities, certificates, and provisioning profiles. This example configures iCloud, a distribution certificate, and an App Store profile. ```bash Set up signing for com.example.app with iCloud enabled, a distribution certificate, and an App Store profile. ``` -------------------------------- ### Example Workflow Definition JSON Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-workflow/SKILL.md Defines a multi-step workflow for distributing builds to TestFlight, staging releases, and submitting for review. Includes environment variables, pre/post-workflow commands, and conditional steps. ```json { "env": { "APP_ID": "123456789", "VERSION": "1.0.0", "GROUP_ID": "" }, "before_all": "asc auth status", "after_all": "echo workflow_done", "error": "echo workflow_failed", "workflows": { "beta": { "description": "Resolve the latest build and distribute it to TestFlight", "steps": [ { "name": "resolve_build", "run": "asc builds info --app $APP_ID --latest --platform IOS --output json", "outputs": { "BUILD_ID": "$.data.id" } }, { "name": "list_groups", "run": "asc testflight groups list --app $APP_ID --limit 20 --output json" }, { "name": "add_build_to_group", "if": "GROUP_ID", "run": "asc builds add-groups --build-id ${steps.resolve_build.BUILD_ID} --group $GROUP_ID" } ] }, "release": { "description": "Validate, stage, and submit an App Store version", "steps": [ { "name": "validate", "run": "asc validate --app $APP_ID --version $VERSION --platform IOS --output json" }, { "name": "stage", "run": "asc release stage --app $APP_ID --version $VERSION --build $BUILD_ID --metadata-dir ./metadata/version/$VERSION --confirm --output json" }, { "name": "submit", "if": "SUBMIT_FOR_REVIEW", "run": "asc review submit --app $APP_ID --version $VERSION --build $BUILD_ID --confirm --output json" } ] }, "publish-appstore": { "description": "High-level upload plus App Store review submission", "steps": [ { "name": "publish", "run": "asc publish appstore --app $APP_ID --ipa ./build/MyApp.ipa --version $VERSION --wait --submit --confirm --output json" } ] } } } ``` -------------------------------- ### Edit App Setup Availability Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-cli-usage/SKILL.md Use the 'edit' verb for app setup availability. This command allows modification of availability for specific app setup configurations. ```bash asc app-setup availability edit --app "APP_ID" --territory "USA,GBR" --available true ``` -------------------------------- ### List Pre-release Versions Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-id-resolver/SKILL.md Get a list of pre-release versions for a specific app and platform. Use `--paginate` to ensure all pre-release versions are retrieved. ```bash asc testflight pre-release list --app "APP_ID" --platform IOS --paginate ``` -------------------------------- ### Get Latest Build Information Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-id-resolver/SKILL.md Fetch information about the latest build for a specific app, version, and platform. Ensure the `APP_ID`, version, and platform are correctly specified. ```bash asc builds info --app "APP_ID" --latest --version "1.2.3" --platform IOS ``` -------------------------------- ### Sign a PKG file Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-notarization/SKILL.md Sign an unsigned .pkg file using the productsign tool with your Developer ID Installer certificate before submission. ```bash productsign --sign "Developer ID Installer: YOUR NAME (TEAM_ID)" unsigned.pkg signed.pkg ``` -------------------------------- ### Create asc workflow for release staging and submission Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/README.md Define and run repo-local automation graphs using `asc workflow`. This example creates a workflow that stages a release, validates it, and conditionally submits it based on the CONFIRM_RELEASE environment variable. ```bash Create an asc workflow that stages a release, validates it, and only submits when CONFIRM_RELEASE=true. ``` -------------------------------- ### Create IAP Pricing Schedule Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Create a pricing schedule for an in-app purchase in a specific territory, with a defined start date. This allows for future price changes. ```bash asc iap pricing schedules create --iap-id "IAP_ID" --base-territory "USA" --price "4.99" --start-date "2026-06-01" ``` -------------------------------- ### Missing Fields Example Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md An example of an error indicating that a required field, such as subtitle, is empty for a specific locale. ```text Severity: ❌ Error Example: subtitle is empty for locale en-US ``` -------------------------------- ### Parallel Execution with xargs Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-shots-pipeline/SKILL.md This example demonstrates parallel screenshot capture using `xargs` to process locale-UDID pairs. It pipes a list of locale:UDID strings into `xargs`, which then executes a bash command in parallel for each pair. The bash command configures the simulator locale and captures screenshots. ```bash 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 ' ``` -------------------------------- ### Cross-Locale Keyword Gaps Example Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md A warning example indicating that keywords in a non-primary locale are identical to the primary locale, suggesting a lack of localization. ```text Severity: ⚠️ Warning Example: ar keywords identical to en-US — likely not localized for Arabic market ``` -------------------------------- ### Bootstrap New Subscription with Pricing Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Set up a new subscription with initial pricing and availability details. This command is used for bootstrapping subscriptions with PPP strategies. ```bash asc subscriptions setup \ --app "APP_ID" \ --group-reference-name "Pro" \ --reference-name "Pro Monthly" \ --product-id "com.example.pro.monthly" \ --subscription-period ONE_MONTH \ --locale "en-US" --display-name "Pro Monthly" --description "Unlock everything" \ --price "9.99" --price-territory "USA" \ --territories "USA,CAN,GBR" \ --output json ``` -------------------------------- ### Bootstrap Initial App Availability Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Use the experimental web-session flow to create the first app availability record when none exists. Specify territories and whether to make available in new territories. ```bash asc web apps availability create \ --app "APP_ID" \ --territory "USA,GBR" \ --available-in-new-territories true ``` -------------------------------- ### Create RevenueCat Offering with Packages Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-revenuecat-catalog-sync/examples.md Creates a default offering in RevenueCat and configures it with specified packages. ```bash Create offering default with packages $rc_monthly and $rc_annual ``` -------------------------------- ### One-Command App Upload and Submit (Dry Run) Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Upload an IPA, prepare the build, and submit for review in a single command. Use `--dry-run` to preview the entire process. The `--wait` flag can be added to wait for build processing. ```bash asc publish appstore --app "APP_ID" --ipa "./App.ipa" --version "1.2.3" --submit --dry-run --output table ``` -------------------------------- ### Bad Keyword Separators Example Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md Demonstrates an error for incorrect keyword separators, such as spaces after commas, which can waste characters. ```text Severity: ❌ Error Example: keywords contain spaces after commas — wastes 3 characters ``` -------------------------------- ### Keyword Waste Example Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md Illustrates a warning for a keyword that appears in both the subtitle and the keywords field, indicating wasted budget. ```text Severity: ⚠️ Warning Example: "quran" appears in subtitle AND keywords — remove from keywords to free 6 characters ``` -------------------------------- ### Quick Field Updates (App-Info) Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-metadata-sync/SKILL.md Sets app-info fields using the `asc app-setup` command. Specify the primary locale and privacy policy URL, or locale-specific fields like name and subtitle. ```bash asc app-setup info set --app "APP_ID" --primary-locale "en-US" --privacy-policy-url "https://example.com/privacy" ``` ```bash asc app-setup info set --app "APP_ID" --locale "en-US" --name "Your App Name" --subtitle "Your subtitle" ``` -------------------------------- ### Underutilized Fields Example Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md Shows a warning for fields not meeting minimum character requirements, highlighting unused indexing opportunities. ```text Severity: ⚠️ Warning Example: keywords is 62/100 characters (62%) — 38 characters of indexing opportunity unused ``` -------------------------------- ### Bootstrap App Availability in Territories Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Set up the initial availability of your app across different territories. Use `asc pricing availability view` to see current settings and `asc web apps availability create` to define new territories and availability. ```bash # First-time: bootstrap app availability asc pricing availability view --app "APP_ID" asc web apps availability create \ --app "APP_ID" \ --territory "USA,GBR,AUS" \ --available-in-new-territories true ``` -------------------------------- ### Get Keyword Suggestions Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md Provides additional keyword recommendations based on an analysis of the app's category. Useful for expanding keyword strategy. ```python get_keyword_suggestions(app_id) ``` -------------------------------- ### Create Development Provisioning Profile Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-signing-setup/SKILL.md Use to create a development or ad-hoc provisioning profile. Include device IDs if needed for specific device targeting. ```bash asc profiles create --name "Dev Profile" --profile-type IOS_APP_DEVELOPMENT --bundle "BUNDLE_ID" --certificate "CERT_ID" --device "DEVICE_ID" ``` -------------------------------- ### Show Complete RevenueCat Offering Configuration Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-revenuecat-catalog-sync/examples.md Retrieves and displays the full configuration of a RevenueCat offering, including its associated packages and products. ```bash Show complete offering configuration including packages and attached products ``` -------------------------------- ### Get Accepted Screenshot Sizes Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-screenshot-resize/SKILL.md Fetch the current accepted screenshot dimensions from App Store Connect. Use `--all` to include all device types. ```bash asc screenshots sizes --output table ``` ```bash asc screenshots sizes --all --output table ``` -------------------------------- ### Preflight: Register Bundle ID and Verify App Existence Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-app-create-ui/SKILL.md Before creating a new app, register the bundle ID if it doesn't exist and then verify that no app record already exists for that bundle ID. ```bash # Register the bundle ID via public API (if not already registered) asc bundle-ids create --identifier "com.example.app" --name "My App" --platform IOS # Confirm no app record exists yet asc apps list --bundle-id "com.example.app" --output json ``` -------------------------------- ### Set Up In-App Purchase with Pricing Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Configure a new non-consumable in-app purchase with initial pricing and availability details. This command sets up the base IAP configuration. ```bash asc iap setup \ --app "APP_ID" --type NON_CONSUMABLE \ --reference-name "Pro Lifetime" --product-id "com.example.pro.lifetime" \ --locale "en-US" --display-name "Pro Lifetime" --description "Unlock everything forever" \ --price "9.99" --base-territory "USA" --output json ``` -------------------------------- ### Set upload timeout for large files Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-notarization/SKILL.md Increase the upload timeout for large files by setting the ASC_UPLOAD_TIMEOUT environment variable. This example sets it to 5 minutes. ```bash ASC_UPLOAD_TIMEOUT=5m asc notarization submit --file ./LargeApp.zip --wait ``` -------------------------------- ### Create TestFlight Build Test Notes Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-testflight-orchestration/SKILL.md Create 'What to Test' notes for a specific build and locale. ```bash asc builds test-notes create --build-id "BUILD_ID" --locale "en-US" --whats-new "Test instructions" ``` -------------------------------- ### Get Review Details for App Version Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Retrieve the current review details for a specific app version. This is useful for checking existing information before making updates. ```bash asc review details-for-version --version-id "VERSION_ID" ``` -------------------------------- ### Inspect Current Subscription Pricing Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-ppp-pricing/SKILL.md Use `summary` for a quick snapshot of current pricing before making changes, and `prices list` for raw price records. This is useful for before/after spot checks. ```bash asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "USA" asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "IND" asc subscriptions pricing prices list --subscription-id "SUB_ID" --paginate ``` -------------------------------- ### Get Current App Keywords Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md Retrieves the list of currently tracked keywords and their rankings for a given app ID. This is a foundational step for keyword gap analysis. ```python get_app_keywords(app_id) ``` -------------------------------- ### Get Latest Build ID Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-crash-triage/SKILL.md Retrieves the ID of the latest build for a given App ID and platform (e.g., IOS). This is often needed for performance diagnostics. ```bash asc builds info --app "APP_ID" --latest --platform IOS ``` -------------------------------- ### Create App Review Details Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Use this command to create review details for a new app version. Ensure all required contact information and notes are provided. ```bash asc review details-create \ --version-id "VERSION_ID" \ --contact-first-name "Dev" --contact-last-name "Support" \ --contact-email "dev@example.com" --contact-phone "+1 555 0100" \ --notes "Use the guest login on the sign-in screen." ``` -------------------------------- ### Create and Download Provisioning Profiles Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Commands to create App Store provisioning profiles and download them to a local directory. You need the profile name, type, bundle ID, and certificate ID to create, and the profile ID to download. ```bash asc profiles create \ --name "AppStore Profile" \ --profile-type IOS_APP_STORE \ --bundle "BUNDLE_ID" \ --certificate "CERT_ID" ``` ```bash asc profiles download --id "PROFILE_ID" --output "./profiles/AppStore.mobileprovision" ``` -------------------------------- ### Fetch All Apps Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-id-resolver/SKILL.md Retrieve all application details. The `--paginate` flag is recommended for commands that list multiple items to ensure all results are returned. ```bash asc apps --paginate ``` -------------------------------- ### Set One-off Territory Price Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Set a specific price for a subscription in a single territory, with an optional scheduled start date. Useful for targeted price adjustments. ```bash asc subscriptions pricing prices set --subscription-id "SUB_ID" --price "2.99" --territory "IND" --start-date "2026-04-01" ``` -------------------------------- ### Authenticate and Discover `asc` Commands Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Learn how to authenticate with App Store Connect CLI using keychain or environment variables. Discover available commands and flags, and view basic app information. ```bash # Authenticate via keychain (preferred) asc auth login ``` ```bash # Or use environment variables export ASC_KEY_ID="MY_KEY_ID" export ASC_ISSUER_ID="MY_ISSUER_ID" export ASC_PRIVATE_KEY_PATH="/path/to/AuthKey.p8" export ASC_APP_ID="1234567890" ``` ```bash # Discover available commands and flags asc --help asc builds list --help ``` ```bash # Read-only canonical verb: view asc apps view --id "APP_ID" asc versions view --version-id "VERSION_ID" asc pricing availability view --app "APP_ID" ``` ```bash # Canonical edit verb for update-only surfaces asc pricing availability edit --app "APP_ID" --territory "USA,GBR" --available true ``` ```bash # Paginate all results as JSON (machine-readable, piped or non-interactive) asc builds list --app "APP_ID" --paginate --output json ``` ```bash # Set timeouts for long operations export ASC_TIMEOUT=120 export ASC_UPLOAD_TIMEOUT=600 ``` -------------------------------- ### List Apps by Bundle ID or Name Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-id-resolver/SKILL.md Use these commands to list applications by their bundle identifier or name. Ensure the correct bundle ID or name is provided. ```bash asc apps list --bundle-id "com.example.app" ``` ```bash asc apps list --name "My App" ``` -------------------------------- ### Get Latest Processed Build Information Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Retrieve information about the latest processed build for a specific app version and platform. Requires App ID, version, and platform. ```bash asc builds info --app "APP_ID" --latest --version "2.1.0" --platform IOS ``` -------------------------------- ### Validate Product Readiness Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Run readiness checks for in-app purchases (IAP) and subscriptions. Output is formatted as a table. ```bash asc validate iap --app "APP_ID" --output table ``` ```bash asc validate subscriptions --app "APP_ID" --output table ``` -------------------------------- ### Sync Signing Assets from Git Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-signing-setup/SKILL.md Pull and decrypt signing assets from an encrypted git repository into a local directory. Note that keychain import or profile installation is a separate step. ```bash asc signing sync pull \ --repo "git@github.com:team/certs.git" \ --password "$MATCH_PASSWORD" \ --output-dir "./signing" ``` -------------------------------- ### Upload App-Info Localizations (Dry Run and Apply) Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-metadata-sync/SKILL.md Uploads app-info localization files. Includes a dry-run option to preview changes before applying them. ```bash asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations" --dry-run ``` ```bash asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations" ``` -------------------------------- ### Add Keywords for Multi-Store Tracking Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-aso-audit/SKILL.md Ensures that keyword tracking is enabled for specific locales/App Store territories. This is necessary to get accurate search ranking data for non-US stores. ```python add_keywords(app_id, locale) ``` -------------------------------- ### Inspect Specific Build Processing State Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-build-lifecycle/SKILL.md Get detailed information about a specific build using its unique build ID. Use this to check the current processing status of a build. ```bash asc builds info --build-id "BUILD_ID" ``` -------------------------------- ### Stage App Release Metadata Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Prepare your app's metadata and attach a build for release without submitting it for review. Use `--dry-run` to preview the staging process. The `--confirm` flag proceeds with staging. ```bash # 2. Stage (prepare metadata + attach build, no submission) asc release stage \ --app "APP_ID" \ --version "2.1.0" \ --build "BUILD_ID" \ --metadata-dir "./metadata/version/2.1.0" \ --dry-run --output table asc release stage \ --app "APP_ID" \ --version "2.1.0" \ --build "BUILD_ID" \ --metadata-dir "./metadata/version/2.1.0" \ --confirm ``` -------------------------------- ### Get Next Available Build Number Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-build-lifecycle/SKILL.md Determine the next sequential build number for a given app version and platform. Useful for ensuring unique build numbers before uploading. ```bash asc builds next-build-number --app "APP_ID" --version "1.2.3" --platform IOS ``` -------------------------------- ### Download Version Localizations Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-localize-metadata/SKILL.md Download per-release metadata like description, keywords, and 'what's new' to local `.strings` files. This command requires the version ID and a path to store the files. ```bash # Download version localizations to local .strings files # (description, keywords, whatsNew, promotionalText, supportUrl, marketingUrl, ...) asc localizations download --version "VERSION_ID" --path "./localizations" ``` -------------------------------- ### Discover `asc` Command Flags Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-localize-metadata/SKILL.md Always verify command-specific flags using the `--help` option for your installed `asc` version. Prefer explicit long flags for clarity and consistency. ```bash asc localizations --help ``` ```bash asc localizations download --help ``` ```bash asc localizations upload --help ``` ```bash asc apps info edit --help ``` -------------------------------- ### Verify Developer ID Export Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-notarization/SKILL.md Verifies the exported application bundle. Check that the Authority chain starts with 'Developer ID Application' and a Timestamp is present. Adjust the path to your exported app. ```bash codesign -dvvv "/tmp/YourAppExport/YourApp.app" 2>&1 | grep -E "Authority|Timestamp" ``` -------------------------------- ### Discover ASC Commands with --help Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-cli-usage/SKILL.md Use the --help flag to explore available commands and their options at different levels of the CLI. ```bash asc --help ``` ```bash asc builds --help ``` ```bash asc builds list --help ``` -------------------------------- ### Verify Subscription Pricing Summary Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-ppp-pricing/SKILL.md Re-run summary and raw list views after making changes to subscription pricing. ```bash asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "IND" asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "BRA" ``` ```bash asc subscriptions pricing prices list --subscription-id "SUB_ID" --paginate ``` -------------------------------- ### Get Next Available Build Number Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Determine the next safe build number to use for an app version and platform, helping to avoid rejections. Requires App ID, version, and platform. ```bash asc builds next-build-number --app "APP_ID" --version "2.1.0" --platform IOS ``` -------------------------------- ### Stage App Release (Dry Run) Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Prepare an app version for submission by applying metadata and validating, without actually submitting. Use `--dry-run` to preview changes. Metadata can be specified via `--metadata-dir` or by copying from another version. ```bash asc release stage \ --app "APP_ID" \ --version "1.2.3" \ --build "BUILD_ID" \ --metadata-dir "./metadata/version/1.2.3" \ --dry-run \ --output table ``` -------------------------------- ### Paginate Beta Feedback by Build Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Retrieve all beta feedback for a specific build ID using pagination. ```bash asc testflight feedback list --app "APP_ID" --build "BUILD_ID" --paginate ``` -------------------------------- ### Get Latest Tag and Commits (Bash) Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-whats-new-writer/SKILL.md Use these bash commands to find the latest git tag and list all commits made since that tag. This is useful for identifying changes to include in release notes. ```bash git describe --tags --abbrev=0 ``` ```bash git log $(git describe --tags --abbrev=0)..HEAD --oneline --no-merges ``` -------------------------------- ### Bulk Localize Subscriptions in an App Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-subscription-localization/SKILL.md This multi-step process outlines how to bulk-localize all subscriptions within an app, starting with listing groups, localizing groups, listing subscriptions per group, and finally localizing each subscription. ```bash # 1. List all groups asc subscriptions groups list --app "APP_ID" --paginate # 2. For each group, localize the group itself # (repeat group localization workflow above) # 3. For each group, list subscriptions asc subscriptions list --group-id "GROUP_ID" --paginate # 4. For each subscription, localize it # (repeat subscription localization workflow above) ``` -------------------------------- ### List App Versions Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-id-resolver/SKILL.md Fetch a list of all available versions for a specific application. The `--paginate` flag is recommended to ensure all versions are retrieved. ```bash asc versions list --app "APP_ID" --paginate ``` -------------------------------- ### Sync App Store metadata and update privacy URL Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/README.md Use this command to synchronize your App Store metadata and localizations. This example pulls metadata into a local directory, updates the privacy policy URL, and pushes the changes back. ```bash Pull my App Store metadata into ./metadata, update the privacy policy URL, and push the changes back safely. ``` -------------------------------- ### List Beta Feedback with Screenshots Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Fetch beta feedback, including screenshots, sorted by creation date. Limit the results to the latest 10 entries. ```bash # Beta feedback with screenshots asc testflight feedback list --app "APP_ID" --sort -createdDate --limit 10 --include-screenshots ``` -------------------------------- ### One-Command App Upload and Submit (Confirm) Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Execute the full flow of uploading an IPA, preparing the build, and submitting for review. Use `--confirm` to finalize the process. The `--wait` flag can be added to wait for build processing. ```bash asc publish appstore --app "APP_ID" --ipa "./App.ipa" --version "1.2.3" --submit --confirm ``` -------------------------------- ### Create RevenueCat Entitlement and Attach Product Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-revenuecat-catalog-sync/examples.md Creates a new entitlement in RevenueCat and associates a specified product with it. ```bash Create entitlement premium and attach product PRODUCT_ID ``` -------------------------------- ### Preview and Apply Build Expiration Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Commands to preview (dry run) and then apply the expiration of old TestFlight builds older than a specified duration. Requires App ID and duration. ```bash asc builds expire-all --app "APP_ID" --older-than 90d --dry-run ``` ```bash asc builds expire-all --app "APP_ID" --older-than 90d --confirm ``` -------------------------------- ### Inspect Current IAP Pricing Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-ppp-pricing/SKILL.md Use `asc iap pricing summary` to get a summary of the current state for IAP pricing, including base territory, current price, estimated proceeds, and scheduled changes for a specific territory. ```bash asc iap pricing summary --iap-id "IAP_ID" --territory "USA" asc iap pricing summary --iap-id "IAP_ID" --territory "IND" ``` -------------------------------- ### List and Download App-Info Localizations Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-metadata-sync/SKILL.md Manages app-info localization files. Use `list` to view available localizations for a specific app and app-info ID, and `download` to fetch them. ```bash asc apps info list --app "APP_ID" --output table ``` ```bash asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --output table ``` ```bash asc localizations download --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations" ``` -------------------------------- ### Push Metadata for What's New (Bulk) Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-whats-new-writer/SKILL.md This command pushes metadata, including 'What's New' text, from a local directory to App Store Connect. Use --dry-run to preview changes before applying them. The directory should contain locale-specific JSON files. ```bash asc metadata push --app "APP_ID" --version "1.2.3" --dir "./metadata" --dry-run ``` ```bash asc metadata push --app "APP_ID" --version "1.2.3" --dir "./metadata" ``` -------------------------------- ### Manage TestFlight What to Test Notes Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Commands to create and update the 'What to Test' notes for a build in specific locales. Requires Build ID, locale, and the notes content. ```bash asc builds test-notes create --build-id "BUILD_ID" --locale "en-US" --whats-new "Test the new onboarding flow and subscription screen" ``` ```bash asc builds test-notes update --localization-id "LOCALIZATION_ID" --whats-new "Updated test instructions" ``` -------------------------------- ### Configure Screenshot Settings Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Create a settings file to configure the screenshot pipeline. This file specifies app details, paths for plans and output directories, and pipeline options like framing and upload. ```bash # Settings file: .asc/shots.settings.json cat > .asc/shots.settings.json << 'EOF' { "version": 1, "app": { "bundle_id": "com.example.app", "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" } } EOF ``` -------------------------------- ### Upload and Submit App in One Flow Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-submission-health/SKILL.md Upload an IPA file and submit it for review in a single command. Add --wait to ensure the command waits for build processing. Use --dry-run for validation before confirming. ```bash asc publish appstore --app "APP_ID" --ipa "./App.ipa" --version "1.2.3" --submit --dry-run --output table ``` ```bash asc publish appstore --app "APP_ID" --ipa "./App.ipa" --version "1.2.3" --submit --confirm ``` -------------------------------- ### Manage Bundle IDs and Capabilities Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Commands to create new bundle IDs and add capabilities like iCloud. Ensure the correct bundle identifier and name are provided. ```bash asc bundle-ids create --identifier "com.example.app" --name "Example" --platform IOS ``` ```bash asc bundle-ids capabilities add --bundle "BUNDLE_ID" --capability ICLOUD \ --settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]' ``` -------------------------------- ### Download Provisioning Profile Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-signing-setup/SKILL.md Use to download a provisioning profile by its ID to a specified output file path. ```bash asc profiles download --id "PROFILE_ID" --output "./profiles/AppStore.mobileprovision" ``` -------------------------------- ### Create RevenueCat Subscription Product Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-revenuecat-catalog-sync/examples.md Creates a new product in RevenueCat designated as a subscription for a specific app. ```bash Create RevenueCat product com.example.premium.monthly as subscription in app APP_ID ``` -------------------------------- ### Manage Version Metadata and Localizations Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-submission-health/SKILL.md View version details including build and submission information, list localizations, and manage metadata by pulling, validating, and pushing it. Use --dry-run for validation before pushing. ```bash asc versions view --version-id "VERSION_ID" --include-build --include-submission ``` ```bash asc localizations list --version "VERSION_ID" --output table ``` ```bash asc metadata pull --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" ``` ```bash asc metadata validate --dir "./metadata" --output table ``` ```bash asc metadata push --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" --dry-run --output table ``` ```bash asc metadata push --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" ``` -------------------------------- ### High-Level Upload and Submission Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Perform a high-level upload of the app and submit it for review in a single command. This is a streamlined process for app submission. ```bash asc publish appstore --submit --confirm ``` -------------------------------- ### List App Infos Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-submission-health/SKILL.md Retrieve a list of app information entries for a given app ID. Use `--output table` for human-readable output or omit for JSON. ```bash asc apps info list --app "APP_ID" --output table ``` -------------------------------- ### Create Review Details Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-release-flow/SKILL.md Create new review details for an app version. This includes contact information and notes for the App Review team. Demo account fields should only be set if necessary. ```bash asc review details-create \ --version-id "VERSION_ID" \ --contact-first-name "Dev" \ --contact-last-name "Support" \ --contact-email "dev@example.com" \ --contact-phone "+1 555 0100" \ --notes "Explain the reviewer access path here." ``` -------------------------------- ### Create and Staple DMG for Distribution Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-notarization/SKILL.md Creates a Disk Image (DMG) containing the notarized application and then staples the notarization ticket to the DMG itself. This is useful for drag-and-drop distribution. Adjust volume name, source folder, and output path as needed. ```bash # Create DMG hdiutil create -volname "YourApp" -srcfolder "/tmp/YourAppExport/YourApp.app" -ov -format UDZO "/tmp/YourApp.dmg" xcrun stapler staple "/tmp/YourApp.dmg" ``` -------------------------------- ### Download and Upload Localizations Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Use these commands to download existing localizations for app versions or app info, and to upload translated .strings files. Ensure the path points to the directory containing the locale-specific .strings files. ```bash asc apps list --output table # get APP_ID asc versions list --app "$APP_ID" --state PREPARE_FOR_SUBMISSION --output table # get VERSION_ID asc apps info list --app "$APP_ID" --output table # get APP_INFO_ID ``` ```bash asc localizations download --version "$VERSION_ID" --path "./localizations" asc localizations download --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" \ --path "./app-info-localizations" ``` ```bash # ./localizations/de-DE.strings: # "description" = "Ihre App-Beschreibung hier"; # "keywords" = "mathe,kinder,lernen,tabellen"; # "whatsNew" = "Fehlerbehebungen und Verbesserungen"; ``` ```bash asc localizations upload --version "$VERSION_ID" --path "./localizations" asc localizations upload --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" \ --path "./app-info-localizations" ``` ```bash asc localizations list --version "$VERSION_ID" --output table asc localizations list --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --output table ``` -------------------------------- ### Import Subscription Pricing via CSV (Dry Run) Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Perform a dry run of importing subscription prices from a CSV file. This allows you to preview changes without applying them. ```bash asc subscriptions pricing prices import \ --subscription-id "SUB_ID" \ --input "./ppp-prices.csv" \ --dry-run --output table ``` -------------------------------- ### Verify App Creation via API Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-app-create-ui/SKILL.md After the app creation process, verify that the app record was successfully created by fetching its details using its ID or by listing apps associated with the bundle ID. ```bash asc apps view --id "APP_ID" --output json --pretty # or asc apps list --bundle-id "com.example.app" --output json ``` -------------------------------- ### View App Information Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-cli-usage/SKILL.md Use the 'view' verb to retrieve information about specific App Store Connect resources. Ensure you provide the correct resource ID. ```bash asc apps view --id "APP_ID" ``` ```bash asc versions view --version-id "VERSION_ID" ``` ```bash asc pricing availability view --app "APP_ID" ``` -------------------------------- ### Submit a PKG file for notarization Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-notarization/SKILL.md Submit a signed .pkg file for notarization using the asc CLI. Use the --wait flag to block until notarization is complete. ```bash asc notarization submit --file signed.pkg --wait ``` -------------------------------- ### Upload App-Info Localizations Command Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-localize-metadata/SKILL.md Command to upload app-info localizations, specifying the app, type, app-info ID, and the path to the localization files. ```bash asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations" ``` -------------------------------- ### Create App Store Provisioning Profile Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-signing-setup/SKILL.md Use to create an App Store provisioning profile. Requires a name, profile type, bundle ID, and certificate ID. ```bash asc profiles create --name "AppStore Profile" --profile-type IOS_APP_STORE --bundle "BUNDLE_ID" --certificate "CERT_ID" ``` -------------------------------- ### Command Guardrails Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-id-resolver/SKILL.md Recommendations for using list commands effectively. Prefer `--paginate` to avoid missing IDs and use `--sort` for deterministic results where available. ```bash asc --paginate ``` ```bash asc --sort ``` -------------------------------- ### List and Download Localizations Source: https://github.com/rorkai/app-store-connect-cli-skills/blob/main/skills/asc-metadata-sync/SKILL.md Manages version-specific localization files in `.strings` format. Use `list` to view available localizations, and `download` to fetch them. ```bash asc localizations list --version "VERSION_ID" --output table ``` ```bash asc localizations download --version "VERSION_ID" --path "./localizations" ``` -------------------------------- ### Manage App Store Keywords Source: https://context7.com/rorkai/app-store-connect-cli-skills/llms.txt Commands for diffing, importing from CSV, and applying keyword changes for an app version. Requires App ID, version, platform, metadata directory, and locale. ```bash asc metadata keywords diff --app "APP_ID" --version "2.1.0" --platform IOS --dir "./metadata" ``` ```bash asc metadata keywords import --dir "./metadata" --version "2.1.0" --locale "en-US" --input "./keywords.csv" ``` ```bash asc metadata keywords apply --app "APP_ID" --version "2.1.0" --platform IOS --dir "./metadata" --confirm ```