Loading...
Loading...
Manage auto-renewable subscriptions using the `asc` CLI tool. Use this skill when: (1) Subscription groups: "asc subscription-groups list|create" (2) Subscriptions: "asc subscriptions list|create|submit" (3) Subscription localizations: "asc subscription-localizations list|create" (4) Introductory offers: "asc subscription-offers list|create" (FREE_TRIAL, PAY_AS_YOU_GO, PAY_UP_FRONT) (5) Offer codes: "asc subscription-offer-codes list/create/update" (6) Custom codes: "asc subscription-offer-code-custom-codes list/create/update" (7) One-time codes: "asc subscription-offer-code-one-time-codes list/create/update" (8) User says "subscription group", "subscription tier", "subscription offer code", "custom code", "one-time codes", "free trial", "promo code"
npx skill4agent add tddworks/asc-cli-skills asc-subscriptionsasc# List
asc subscription-groups list --app-id <APP_ID>
# Create
asc subscription-groups create \
--app-id <APP_ID> \
--reference-name "Premium Plans"# List
asc subscriptions list --group-id <GROUP_ID>
# Create
asc subscriptions create \
--group-id <GROUP_ID> \
--name "Monthly Premium" \
--product-id "com.app.monthly" \
--period ONE_MONTH \
[--family-sharable] \
[--group-level 1]--periodONE_WEEKONE_MONTHTWO_MONTHSTHREE_MONTHSSIX_MONTHSONE_YEAR# List
asc subscription-localizations list --subscription-id <SUBSCRIPTION_ID>
# Create
asc subscription-localizations create \
--subscription-id <SUBSCRIPTION_ID> \
--locale en-US \
--name "Monthly Premium" \
[--description "Full access, billed monthly"]# List
asc subscription-offers list --subscription-id <SUBSCRIPTION_ID>
# Create free trial
asc subscription-offers create \
--subscription-id <SUBSCRIPTION_ID> \
--duration ONE_MONTH \
--mode FREE_TRIAL \
--periods 1
# Create paid intro offer (price point required for PAY_AS_YOU_GO / PAY_UP_FRONT)
asc subscription-offers create \
--subscription-id <SUBSCRIPTION_ID> \
--duration THREE_MONTHS \
--mode PAY_AS_YOU_GO \
--periods 3 \
--territory USA \
--price-point-id <PRICE_POINT_ID>--durationTHREE_DAYSONE_WEEKTWO_WEEKSONE_MONTHTWO_MONTHSTHREE_MONTHSSIX_MONTHSONE_YEAR--modeFREE_TRIALPAY_AS_YOU_GOPAY_UP_FRONT--price-point-idasc subscription-offer-codes list --subscription-id <SUBSCRIPTION_ID> [--pretty]asc subscription-offer-codes create \
--subscription-id <SUBSCRIPTION_ID> \
--name "SUMMER2026" \
--duration ONE_MONTH \
--mode FREE_TRIAL \
--periods 1 \
--eligibility NEW \
--eligibility LAPSED \
--offer-eligibility STACKABLE--eligibilityNEWLAPSEDWIN_BACKPAID_SUBSCRIBER--offer-eligibilitySTACKABLEINTRODUCTORYSUBSCRIPTION_OFFER--duration--modeFREE_TRIALPAY_AS_YOU_GOPAY_UP_FRONTasc subscription-offer-codes update --offer-code-id <ID> --active false# List
asc subscription-offer-code-custom-codes list --offer-code-id <ID>
# Create
asc subscription-offer-code-custom-codes create \
--offer-code-id <ID> \
--custom-code "SUMMER2026" \
--number-of-codes 1000 \
[--expiration-date 2026-12-31]
# Deactivate
asc subscription-offer-code-custom-codes update --custom-code-id <ID> --active false# List
asc subscription-offer-code-one-time-codes list --offer-code-id <ID>
# Create
asc subscription-offer-code-one-time-codes create \
--offer-code-id <ID> \
--number-of-codes 5000 \
--expiration-date 2026-12-31
# Deactivate
asc subscription-offer-code-one-time-codes update --one-time-code-id <ID> --active false{
"affordances": {
"listSubscriptions": "asc subscriptions list --group-id <ID>",
"createSubscription": "asc subscriptions create --group-id <ID> --name <name> --product-id <id> --period ONE_MONTH"
}
}{
"affordances": {
"createIntroductoryOffer": "asc subscription-offers create --subscription-id <ID> --duration ONE_MONTH --mode FREE_TRIAL --periods 1",
"createLocalization": "asc subscription-localizations create --subscription-id <ID> --locale en-US --name <name>",
"listIntroductoryOffers": "asc subscription-offers list --subscription-id <ID>",
"listLocalizations": "asc subscription-localizations list --subscription-id <ID>",
"listOfferCodes": "asc subscription-offer-codes list --subscription-id <ID>"
}
}{
"affordances": {
"listOfferCodes": "asc subscription-offer-codes list --subscription-id <SUBSCRIPTION_ID>",
"listCustomCodes": "asc subscription-offer-code-custom-codes list --offer-code-id <ID>",
"listOneTimeCodes": "asc subscription-offer-code-one-time-codes list --offer-code-id <ID>",
"deactivate": "asc subscription-offer-codes update --offer-code-id <ID> --active false"
}
}deactivateisActive == true.asc/project.jsonasc apps listAPP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')
# If empty: ask user or run `asc apps list | jq -r '.data[0].id'`
# 1. Create a subscription group
GROUP_ID=$(asc subscription-groups create \
--app-id "$APP_ID" \
--reference-name "Premium Plans" \
| jq -r '.data[0].id')
# 2. Create subscription tiers
MONTHLY_ID=$(asc subscriptions create \
--group-id "$GROUP_ID" \
--name "Monthly Premium" \
--product-id "com.app.monthly" \
--period ONE_MONTH \
--group-level 1 \
| jq -r '.data[0].id')
ANNUAL_ID=$(asc subscriptions create \
--group-id "$GROUP_ID" \
--name "Annual Premium" \
--product-id "com.app.annual" \
--period ONE_YEAR \
--family-sharable \
--group-level 2 \
| jq -r '.data[0].id')
# 3. Add localizations
asc subscription-localizations create --subscription-id "$MONTHLY_ID" --locale en-US --name "Monthly Premium" --description "Full access, billed monthly"
asc subscription-localizations create --subscription-id "$ANNUAL_ID" --locale en-US --name "Annual Premium" --description "Full access, billed annually — save 30%"
# 4. Create an offer code with custom codes
OC_ID=$(asc subscription-offer-codes create \
--subscription-id "$MONTHLY_ID" \
--name "SUMMER2026" \
--duration ONE_MONTH \
--mode FREE_TRIAL \
--periods 1 \
--eligibility NEW \
--eligibility LAPSED \
--offer-eligibility STACKABLE \
| jq -r '.data[0].id')
asc subscription-offer-code-custom-codes create \
--offer-code-id "$OC_ID" \
--custom-code "SUMMER2026" \
--number-of-codes 1000 \
--expiration-date 2026-12-31
# 5. Or generate one-time use codes
asc subscription-offer-code-one-time-codes create \
--offer-code-id "$OC_ID" \
--number-of-codes 5000 \
--expiration-date 2026-12-31SubscriptionState| Boolean | True when state is |
|---|---|
| |
| |
| |
SubscriptionCustomerEligibilityNEWLAPSEDWIN_BACKPAID_SUBSCRIBERSubscriptionOfferEligibilitySTACKABLEINTRODUCTORYSUBSCRIPTION_OFFERdescriptionstategroupLeveltotalNumberOfCodes