subscription-localization
Bulk-localize subscription and in-app purchase display names across all App Store locales using asc. Use when you want to fill in subscription/IAP names for every language without clicking through App Store Connect manually.
Best use case
subscription-localization is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Bulk-localize subscription and in-app purchase display names across all App Store locales using asc. Use when you want to fill in subscription/IAP names for every language without clicking through App Store Connect manually.
Teams using subscription-localization should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/subscription-localization/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How subscription-localization Compares
| Feature / Agent | subscription-localization | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Bulk-localize subscription and in-app purchase display names across all App Store locales using asc. Use when you want to fill in subscription/IAP names for every language without clicking through App Store Connect manually.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# asc subscription localization Use this skill to bulk-create or bulk-update display names (and descriptions) for subscriptions, subscription groups, and in-app purchases across all App Store Connect locales. This eliminates the tedious manual process of clicking through each language in App Store Connect to set the same display name. ## Preconditions - Auth configured (`asc auth login` or `ASC_*` env vars). - Know your app ID (`ASC_APP_ID` or `--app`). - Subscription groups and subscriptions already exist. ## Supported App Store Locales These are the locales supported by App Store Connect for subscription and IAP localizations: ``` ar-SA, ca, cs, da, de-DE, el, en-AU, en-CA, en-GB, en-US, es-ES, es-MX, fi, fr-CA, fr-FR, he, hi, hr, hu, id, it, ja, ko, ms, nl-NL, no, pl, pt-BR, pt-PT, ro, ru, sk, sv, th, tr, uk, vi, zh-Hans, zh-Hant ``` ## Workflow: Bulk-Localize a Subscription ### 1. Resolve IDs ```bash # Find subscription groups asc subscriptions groups list --app "APP_ID" --output table # Find subscriptions within a group asc subscriptions list --group "GROUP_ID" --output table ``` ### 2. Check existing localizations ```bash asc subscriptions localizations list --subscription-id "SUB_ID" --paginate --output table ``` This shows which locales already have a name set. Only create localizations for missing locales. ### 3. Create localizations for all missing locales For each locale that does not already have a localization, run: ```bash asc subscriptions localizations create \ --subscription-id "SUB_ID" \ --locale "LOCALE" \ --name "Display Name" ``` For example, to set "Monthly Pro" across all locales: ```bash # One command per locale (skip any that already exist) asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ar-SA" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ca" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "cs" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "da" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "de-DE" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "el" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "en-AU" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "en-CA" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "en-GB" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "es-ES" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "es-MX" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "fi" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "fr-CA" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "fr-FR" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "he" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "hi" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "hr" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "hu" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "id" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "it" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ja" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ko" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ms" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "nl-NL" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "no" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "pl" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "pt-BR" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "pt-PT" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ro" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ru" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "sk" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "sv" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "th" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "tr" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "uk" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "vi" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "zh-Hans" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "zh-Hant" --name "Monthly Pro" ``` ### 4. Verify ```bash asc subscriptions localizations list --subscription-id "SUB_ID" --paginate --output table ``` ## Workflow: Bulk-Localize a Subscription Group Subscription groups also have their own display name per locale (this is the "group name" shown to users in the subscription management sheet). ### 1. Check existing group localizations ```bash asc subscriptions groups localizations list --group-id "GROUP_ID" --paginate --output table ``` ### 2. Create for missing locales ```bash asc subscriptions groups localizations create \ --group-id "GROUP_ID" \ --locale "LOCALE" \ --name "Group Display Name" ``` Optional: set a custom app name for the group: ```bash asc subscriptions groups localizations create \ --group-id "GROUP_ID" \ --locale "LOCALE" \ --name "Group Display Name" \ --custom-app-name "My App" ``` ### 3. Verify ```bash asc subscriptions groups localizations list --group-id "GROUP_ID" --paginate --output table ``` ## Workflow: Bulk-Localize an In-App Purchase IAPs have their own localization commands with the same pattern. ### 1. Resolve IAP ID ```bash asc iap list --app "APP_ID" --output table ``` ### 2. Check existing localizations ```bash asc iap localizations list --iap-id "IAP_ID" --paginate --output table ``` ### 3. Create for missing locales ```bash asc iap localizations create \ --iap-id "IAP_ID" \ --locale "LOCALE" \ --name "Display Name" ``` Optional description: ```bash asc iap localizations create \ --iap-id "IAP_ID" \ --locale "LOCALE" \ --name "Unlock All Features" \ --description "One-time purchase to unlock all premium features" ``` ### 4. Verify ```bash asc iap localizations list --iap-id "IAP_ID" --paginate --output table ``` ## Updating Existing Localizations To change the display name for existing localizations: ### Subscriptions ```bash asc subscriptions localizations update --id "LOC_ID" --name "New Name" ``` ### Subscription Groups ```bash asc subscriptions groups localizations update --id "LOC_ID" --name "New Group Name" ``` ### In-App Purchases ```bash asc iap localizations update --id "LOC_ID" --name "New Name" ``` To bulk-update, list existing localizations first, extract the IDs, then update each one. ## Bulk-Localize All Subscriptions in an App For a full app with multiple subscription groups and subscriptions: ```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 "GROUP_ID" --paginate # 4. For each subscription, localize it # (repeat subscription localization workflow above) ``` ## Agent Behavior - Always list existing localizations first to avoid duplicate creation errors. - Skip locales that already have a localization; only create missing ones. - When the user provides a single display name, use it for all locales (same name everywhere). - When the user provides translated names per locale, use the locale-specific name for each. - If a description is provided, pass `--description` on create. Otherwise omit it. - Use `--output table` for verification steps so the user can visually confirm. - Use default JSON output for intermediate automation steps. - After bulk creation, always run the list command to verify completeness. - For apps with many subscriptions, process them sequentially per group to keep output readable. - If a create call fails for a locale, log the locale and error, then continue with the remaining locales. After the batch completes, report all failures together so the user can address them. ## Notes - Subscription display names are what users see on the subscription management sheet and in purchase dialogs. - Creating a localization for a locale that already exists will fail; always check first. - There is no bulk API; each locale requires a separate create call. - Use `--paginate` on list commands to ensure all existing localizations are returned. - Use the `asc-id-resolver` skill if you only have app names instead of IDs.
Related Skills
writer
Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.
positioning-angles
Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.
outline-generator
Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.
last30days-open
Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.
last30days
Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.
hooks
Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.
evaluate-content
Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.
editor-in-chief
Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.
copywriting
Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.
content-strategy
Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.
content-pipeline
Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).
yt-dlp
Download audio/video from YouTube and other sites using yt-dlp. Use when the user asks to download music, songs, albums, podcasts, or video from YouTube or similar platforms. Triggers on 'download song', 'get mp3', 'yt-dlp', 'youtube download', 'rip audio'.