/asc-ppp-pricing
Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands. Use when adjusting prices by country or implementing localized PPP strategies.
$ npx -y skills add rudrankriyam/asc-skills --skill asc-ppp-pricing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/asc-ppp-pricing
Context preview
The summary Claude sees to decide when to auto-load this skill.
Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands. Use when adjusting prices by country or implementing localized PPP strategies.
SKILL.md
asc-ppp-pricing.SKILL.mdname: asc-ppp-pricing
description: Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands. Use when adjusting prices by country or implementing localized PPP strategies.
PPP pricing (per-territory pricing)
Use this skill to create or update localized pricing across territories based on purchasing power parity (PPP) or your own regional pricing strategy.
Prefer the current high-level flows:
- `asc subscriptions setup` and `asc iap setup` for parent creation and pricing,
followed by version-scoped metadata commands
- `asc subscriptions pricing ...` for subscription pricing changes
- `asc iap pricing summary` and `asc iap pricing schedules ...` for IAP pricing changes
Preconditions
- Ensure credentials are set (`asc auth login` or `ASC_*` env vars).
- Prefer `ASC_APP_ID` or pass `--app` explicitly.
- Decide your base territory (usually `USA`) and baseline price.
- Use `asc pricing territories list --paginate` if you need supported territory IDs.
Subscription PPP workflow
New subscription: bootstrap the parent and price with `setup`
Use `setup` to create the group and subscription, upload the App Review screenshot, materialize the complete equalized price matrix, and set sale availability. Create the API 4.4.1 group and subscription versions afterward; the localization flags on `setup` use deprecated v1 resources and must not be used for new workflows.
asc subscriptions setup \
--app "APP_ID" \
--group-reference-name "Pro" \
--reference-name "Pro Monthly" \
--product-id "com.example.pro.monthly" \
--subscription-period ONE_MONTH \
--review-screenshot "./review.png" \
--price "9.99" \
--price-territory "USA" \
--territories "USA,CAN,GBR" \
--no-verify \
--output json
Capture `.groupId` and `.subscriptionId` from the setup JSON, then add version-scoped metadata. `--no-verify` is intentional here: without deprecated v1 localizations, the parent can remain `MISSING_METADATA` until the v2 steps finish.
asc subscriptions groups versions list --group-id "GROUP_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json
# If and only if the list has zero matches:
asc subscriptions groups versions create --group-id "GROUP_ID" --output json
# For one match, reuse .data[0].id. For more than one, stop and require an explicit GROUP_VERSION_ID.
asc subscriptions groups versions localizations list --version-id "GROUP_VERSION_ID" --paginate --output json
# If and only if en-US is missing:
asc subscriptions groups versions localizations create --version-id "GROUP_VERSION_ID" --locale "en-US" --name "Pro"
# Otherwise, if and only if the resolved en-US name differs:
asc subscriptions groups versions localizations update --id "GROUP_LOC_ID" --name "Pro"
# Otherwise, do nothing.
asc subscriptions versions list --subscription-id "SUB_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json
# If and only if the list has zero matches:
asc subscriptions versions create --subscription-id "SUB_ID" --output json
# For one match, reuse .data[0].id. For more than one, stop and require an explicit SUBSCRIPTION_VERSION_ID.
asc subscriptions versions localizations list --version-id "SUBSCRIPTION_VERSION_ID" --paginate --output json
# If and only if en-US is missing:
asc subscriptions versions localizations create --version-id "SUBSCRIPTION_VERSION_ID" --locale "en-US" --name "Pro Monthly" --description "Unlock everything"
# Otherwise, if and only if the resolved en-US values differ:
asc subscriptions versions localizations update --id "SUBSCRIPTION_LOC_ID" --name "Pro Monthly" --description "Unlock everything"
# Otherwise, do nothing.
asc subscriptions groups versions localizations list --version-id "GROUP_VERSION_ID" --paginate --output table
asc subscriptions versions localizations list --version-id "SUBSCRIPTION_VERSION_ID" --paginate --output table
asc validate subscriptions --app "APP_ID" --output table
For each version list, reuse its single `PREPARE_FOR_SUBMISSION` result. Create only when the result is empty; if more than one result is returned, stop and require an explicit version ID instead of creating another non-deletable version. Each localization create/update pair is also conditional: create for a missing locale, update the resolved localization only when values differ, and do nothing when it already matches.
Notes:
- `setup` materializes Apple's complete equalized price matrix from the selected
base price. This split workflow defers final verification until the v2 localizations exist.
- Outside this split v2 bootstrap, omit `--no-verify` so setup performs its
normal readback verification.
- Use `--tier` or `--price-point-id` instead of `--price` when your workflow is tier-driven.
- If an existing subscription remains `MISSING_METADATA` with the same selected base price, re-run the setup inputs with `--repair` to atomically rebuild and re-save the matrix.
Inspect current subscription pricing before changes
Use the summary view first when you want a compact current-state snapshot.
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
Use `summary` for quick before/after spot checks and `prices list` when you need raw price records.
Preferred bulk PPP update: import a CSV with dry run
For broad PPP rollouts, prefer the subscription pricing import command instead of manually adding territory prices one by one.
Example CSV:
territory,price,start_date,preserved
IND,2.99,2026-04-01,false
BRA,4.99,2026-04-01,false
MEX,4.99,2026-04-01,false
DEU,8.99,2026-04-01,false
Dry-run first:
asc subscriptions pricing prices import \
--subscription-id "SUB_ID" \
--input "./ppp-prices.csv" \
--dry-run \
--output ta
Read more
name: asc-ppp-pricing description: Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands. Use when adjusting prices by country or implementing localized PPP strategies.
PPP pricing (per-territory pricing)
Use this skill to create or update localized pricing across territories based on purchasing power parity (PPP) or your own regional pricing strategy.
Prefer the current high-level flows:
- `asc subscriptions setup` and `asc iap setup` for parent creation and pricing,
followed by version-scoped metadata commands
- `asc subscriptions pricing ...` for subscription pricing changes
- `asc iap pricing summary` and `asc iap pricing schedules ...` for IAP pricing changes
Preconditions
- Ensure credentials are set (`asc auth login` or `ASC_*` env vars).
- Prefer `ASC_APP_ID` or pass `--app` explicitly.
- Decide your base territory (usually `USA`) and baseline price.
- Use `asc pricing territories list --paginate` if you need supported territory IDs.
Subscription PPP workflow
New subscription: bootstrap the parent and price with `setup`
Use `setup` to create the group and subscription, upload the App Review screenshot, materialize the complete equalized price matrix, and set sale availability. Create the API 4.4.1 group and subscription versions afterward; the localization flags on `setup` use deprecated v1 resources and must not be used for new workflows.
asc subscriptions setup \ --app "APP_ID" \ --group-reference-name "Pro" \ --reference-name "Pro Monthly" \ --product-id "com.example.pro.monthly" \ --subscription-period ONE_MONTH \ --review-screenshot "./review.png" \ --price "9.99" \ --price-territory "USA" \ --territories "USA,CAN,GBR" \ --no-verify \ --output json
Capture `.groupId` and `.subscriptionId` from the setup JSON, then add version-scoped metadata. `--no-verify` is intentional here: without deprecated v1 localizations, the parent can remain `MISSING_METADATA` until the v2 steps finish.
asc subscriptions groups versions list --group-id "GROUP_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json # If and only if the list has zero matches: asc subscriptions groups versions create --group-id "GROUP_ID" --output json # For one match, reuse .data[0].id. For more than one, stop and require an explicit GROUP_VERSION_ID. asc subscriptions groups versions localizations list --version-id "GROUP_VERSION_ID" --paginate --output json # If and only if en-US is missing: asc subscriptions groups versions localizations create --version-id "GROUP_VERSION_ID" --locale "en-US" --name "Pro" # Otherwise, if and only if the resolved en-US name differs: asc subscriptions groups versions localizations update --id "GROUP_LOC_ID" --name "Pro" # Otherwise, do nothing. asc subscriptions versions list --subscription-id "SUB_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json # If and only if the list has zero matches: asc subscriptions versions create --subscription-id "SUB_ID" --output json # For one match, reuse .data[0].id. For more than one, stop and require an explicit SUBSCRIPTION_VERSION_ID. asc subscriptions versions localizations list --version-id "SUBSCRIPTION_VERSION_ID" --paginate --output json # If and only if en-US is missing: asc subscriptions versions localizations create --version-id "SUBSCRIPTION_VERSION_ID" --locale "en-US" --name "Pro Monthly" --description "Unlock everything" # Otherwise, if and only if the resolved en-US values differ: asc subscriptions versions localizations update --id "SUBSCRIPTION_LOC_ID" --name "Pro Monthly" --description "Unlock everything" # Otherwise, do nothing. asc subscriptions groups versions localizations list --version-id "GROUP_VERSION_ID" --paginate --output table asc subscriptions versions localizations list --version-id "SUBSCRIPTION_VERSION_ID" --paginate --output table asc validate subscriptions --app "APP_ID" --output table
For each version list, reuse its single `PREPARE_FOR_SUBMISSION` result. Create only when the result is empty; if more than one result is returned, stop and require an explicit version ID instead of creating another non-deletable version. Each localization create/update pair is also conditional: create for a missing locale, update the resolved localization only when values differ, and do nothing when it already matches.
Notes:
- `setup` materializes Apple's complete equalized price matrix from the selected
base price. This split workflow defers final verification until the v2 localizations exist.
- Outside this split v2 bootstrap, omit `--no-verify` so setup performs its
normal readback verification.
- Use `--tier` or `--price-point-id` instead of `--price` when your workflow is tier-driven.
- If an existing subscription remains `MISSING_METADATA` with the same selected base price, re-run the setup inputs with `--repair` to atomically rebuild and re-save the matrix.
Inspect current subscription pricing before changes
Use the summary view first when you want a compact current-state snapshot.
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
Use `summary` for quick before/after spot checks and `prices list` when you need raw price records.
Preferred bulk PPP update: import a CSV with dry run
For broad PPP rollouts, prefer the subscription pricing import command instead of manually adding territory prices one by one.
Example CSV:
territory,price,start_date,preserved IND,2.99,2026-04-01,false BRA,4.99,2026-04-01,false MEX,4.99,2026-04-01,false DEU,8.99,2026-04-01,false
Dry-run first:
asc subscriptions pricing prices import \ --subscription-id "SUB_ID" \ --input "./ppp-prices.csv" \ --dry-run \ --output ta
A collection of Agent Skills for shipping with the asc cli (asc). These skills help agents run builds, TestFlight, metadata, submissions, signing, and Apple Ads workflows. This is a community-maintained, unofficial skill pack and is not affiliated with Apple.
Other skills on asc.
- /asc-app-create-ui
Create a new App Store Connect app record via browser automation. Use when there is no public API for app creation and you need an agent to drive the New App form.
Open skill - /asc-apple-ads
Use when managing Apple Ads with asc, including auth, org lookup, campaigns, ad groups, ads, keywords, reports, raw API calls, and safe live testing.
Open skill - /asc-aso-audit
Run an offline ASO audit on canonical App Store metadata under `./metadata` and surface keyword gaps using Astro MCP. Use after pulling metadata with `asc metadata pull`.
Open skill - /asc-build-lifecycle
Track build processing, find latest builds, and clean up old builds with asc. Use when managing build retention or waiting on processing.
Open skill - /asc-cli-usage
Guidance for using asc cli in this repo (flags, output formats, pagination, auth, and discovery). Use when asked to run or design asc commands or interact with App Store Connect via the CLI.
Open skill - /asc-crash-triage
Triage TestFlight crashes, beta feedback, and performance diagnostics using asc. Use when the user asks about TF crashes, TestFlight crash reports, beta tester feedback, app hangs, disk writes, launch diagnostics, or wants a crash summary for a build or app.
Open skill

