Asc Ppp Pricing logo

Asc Ppp Pricing

Community
hanamizuki
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.

Overview

Publisherhanamizuki
Repositorysolopreneur
Skill nameasc-ppp-pricing
Stars
150
Forks
9
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by hanamizuki on GitHub. Read the source before you install it.

Installation

Install the Asc Ppp Pricing AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/hanamizuki/solopreneur.git /tmp/solopreneur
mkdir -p .claude/skills
cp -r /tmp/solopreneur/plugins/claude/ios-dev/skills/asc-ppp-pricing .claude/skills/asc-ppp-pricing
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Asc Ppp Pricing in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Asc Ppp Pricing on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Asc Ppp Pricing is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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.

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 \
  --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.

bash
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.

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

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:

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:

bash
asc subscriptions pricing prices import \
  --subscription-id "SUB_ID" \
  --input "./ppp-prices.csv" \
  --dry-run \
  --output table

Apply for real:

bash
asc subscriptions pricing prices import \
  --subscription-id "SUB_ID" \
  --input "./ppp-prices.csv" \
  --confirm \
  --output table

Notes:

  • --dry-run validates rows and resolves price points without creating prices.
  • --continue-on-error=false gives you a fail-fast mode.
  • CSV required columns: territory, price
  • CSV optional columns: currency_code, start_date, preserved, preserve_current_price, price_point_id
  • When price_point_id is omitted, the CLI resolves the matching price point for the row's territory and price automatically.
  • Territory inputs in import can be 3-letter IDs, 2-letter codes, or common territory names that map cleanly.

One-off subscription territory changes

For a small number of manual overrides, use the canonical set command.

bash
asc subscriptions pricing prices set --subscription-id "SUB_ID" --price "2.99" --territory "IND"
asc subscriptions pricing prices set --subscription-id "SUB_ID" --tier 5 --territory "BRA"
asc subscriptions pricing prices set --subscription-id "SUB_ID" --price-point "PRICE_POINT_ID" --territory "DEU"

Notes:

  • Add --start-date "YYYY-MM-DD" to schedule a future change.
  • Add --preserved when you want to preserve the current price relationship.
  • The command handles both initial pricing and later price changes.

Discover raw price points only when you need them

Use price-point lookup and equalizations when you want to inspect Apple's localized ladder directly or pin exact price point IDs.

bash
asc subscriptions pricing price-points list --subscription-id "SUB_ID" --territory "USA" --paginate --price "9.99"
asc subscriptions pricing price-points equalizations --price-point-id "PRICE_POINT_ID" --paginate
asc subscriptions pricing price-points adjusted-equalizations --price-point-id "PRICE_POINT_ID" --upfront-price-point-id "UPFRONT_PRICE_POINT_ID" --plan-type MONTHLY --subscription-id "SUB_ID" --paginate

Use equalizations for Apple's standard localized ladder. Use adjusted-equalizations when you need the API 4.4.1 subscription-specific adjustments. For a fresh adjusted-equalizations request, pass both --upfront-price-point-id and --plan-type; --subscription-id and --territory are optional filters. Treat --next as an opaque continuation URL. On a resumed equalizations or adjusted-equalizations request, pass only --next without the original owner --price-point-id, filters, sparse fields, includes, or limit; the continuation URL already carries that query state. --paginate and explicit output flags may still be used.

Verify after apply

Re-run the summary and raw list views after changes.

bash
asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "IND"
asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "BRA"
asc subscriptions pricing prices list --subscription-id "SUB_ID" --paginate

After the version metadata exists, you may rerun asc subscriptions setup with verification enabled to recheck the parent, pricing, screenshot, and availability state.

Subscription availability

The underlying subscription-availability resource is deprecated in App Store Connect API 4.4. Keep this command family only for compatibility when ordinary upfront territory availability still needs it; Apple does not provide a one-for-one replacement for that case. For Monthly with 12-Month Commitment, use asc subscriptions pricing monthly-commitment enable|disable|list instead.

bash
asc subscriptions pricing availability edit --subscription-id "SUB_ID" --territories "USA,CAN,IND,BRA"
asc subscriptions pricing availability view --subscription-id "SUB_ID"

IAP PPP workflow

New IAP: bootstrap the parent and price with setup

Use setup to create the product and initial price schedule. Its localization flags use the deprecated v1 resource, so add localization through an API 4.4.1 IAP version after setup.

bash
asc iap setup \
  --app "APP_ID" \
  --type NON_CONSUMABLE \
  --reference-name "Pro Lifetime" \
  --product-id "com.example.pro.lifetime" \
  --price "9.99" \
  --base-territory "USA" \
  --output json

Capture .iapId from the setup JSON, then create the version and metadata:

bash
asc iap versions list --iap-id "IAP_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json
# If and only if the list has zero matches:
asc iap versions create --iap-id "IAP_ID" --output json
# For one match, reuse .data[0].id. For more than one, stop and require an explicit IAP_VERSION_ID.
asc iap versions localizations list --version-id "IAP_VERSION_ID" --paginate --output json
# If and only if en-US is missing:
asc iap versions localizations create --version-id "IAP_VERSION_ID" --locale "en-US" --name "Pro Lifetime" --description "Unlock everything forever"
# Otherwise, if and only if the resolved en-US values differ:
asc iap versions localizations update --localization-id "IAP_LOC_ID" --name "Pro Lifetime" --description "Unlock everything forever"
# Otherwise, do nothing.

Reuse the single PREPARE_FOR_SUBMISSION version. Create only when the list is empty, and stop for an explicit version ID if multiple matches are returned. Create the localization only when en-US is absent, update its resolved ID only when values differ, and otherwise do nothing.

Notes:

  • setup verifies the created IAP and price schedule by default; verify the version localization with its version-scoped list command.
  • Use --start-date for scheduled pricing.
  • Use --tier or --price-point-id when you want deterministic tier- or ID-based setup.

Inspect current IAP pricing before changes

Use asc iap pricing summary as the main current-state summary for PPP work.

bash
asc iap pricing summary --iap-id "IAP_ID" --territory "USA"
asc iap pricing summary --iap-id "IAP_ID" --territory "IND"

This returns the base territory, current price, estimated proceeds, and scheduled changes for the requested territory.

Discover candidate IAP price points

Use price-point lookup when you want to inspect or pin exact price point IDs.

bash
asc iap pricing price-points list --iap-id "IAP_ID" --territory "USA" --paginate --price "9.99"
asc iap pricing price-points equalizations --id "PRICE_POINT_ID"

Create or update an IAP price schedule

For manual PPP updates, create a price schedule directly.

bash
asc iap pricing schedules create --iap-id "IAP_ID" --base-territory "USA" --price "4.99" --start-date "2026-04-01"
asc iap pricing schedules create --iap-id "IAP_ID" --base-territory "USA" --tier 5 --start-date "2026-04-01"
asc iap pricing schedules create --iap-id "IAP_ID" --base-territory "USA" --prices "PRICE_POINT_ID:2026-04-01"

Use these when you are intentionally creating or replacing schedule entries. For deeper inspection:

bash
asc iap pricing schedules view --iap-id "IAP_ID"
asc iap pricing schedules manual-prices --schedule-id "SCHEDULE_ID" --paginate
asc iap pricing schedules automatic-prices --schedule-id "SCHEDULE_ID" --paginate

Verify after apply

Use the summary command again after scheduling or applying pricing changes.

bash
asc iap pricing summary --iap-id "IAP_ID" --territory "USA"
asc iap pricing summary --iap-id "IAP_ID" --territory "IND"

For future-dated schedules, expect scheduled changes rather than an immediately updated current price.

Common PPP strategy patterns

Base territory first

  • Pick one baseline territory, usually USA.
  • Set the baseline price there first.
  • Derive lower or higher territory targets from that baseline.

Tiered regional pricing

  • High-income markets stay close to baseline.
  • Mid-income markets get moderate discounts.
  • Lower-income markets get stronger PPP adjustments.

Spreadsheet-driven rollout

  • Build the target territory list in a CSV.
  • Dry-run the import.
  • Fix any resolution failures.
  • Apply the import.
  • Re-run summary checks for the most important territories.

Notes

  • Prefer canonical commands in docs and automation: asc subscriptions pricing ...
  • asc subscriptions pricing ... is the supported subscription pricing family; do not use the removed asc subscriptions prices ... path.
  • Prefer canonical IAP commands in docs and automation: asc iap pricing ...
  • asc subscriptions pricing prices import --dry-run is the safest subscription batch PPP path today.
  • asc subscriptions setup and asc iap setup already provide built-in post-create verification.
  • There is not yet a single first-class before/after PPP diff command; use the current summary commands before and after apply.
  • Price changes may take time to propagate in App Store Connect and storefronts.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Asc Ppp Pricing AI skill do?

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.

Why use Asc Ppp Pricing on TypingMind?

Because you install it once and use it with any model. Asc Ppp Pricing is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Asc Ppp Pricing in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/hanamizuki/solopreneur/tree/main/plugins/claude/ios-dev/skills/asc-ppp-pricing. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Asc Ppp Pricing?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Asc Ppp Pricing?

As many as you like. As long as a model supports skills, you can use Asc Ppp Pricing with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Asc Ppp Pricing AI skill free?

Yes. It is published on GitHub by hanamizuki under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇