Skip to content
Deployment
Skill

/asc-localize-metadata

Automatically translate and sync App Store metadata (description, keywords, what's new, subtitle) to multiple languages using LLM translation and asc CLI. Use when asked to localize an app's App Store listing, translate app descriptions, or add new languages to App Store Connect.

From plugin
asc
95523 skills
Install
$ npx -y skills add rudrankriyam/asc-skills --skill asc-localize-metadata --agent claude-code

How 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-localize-metadata

Context preview

The summary Claude sees to decide when to auto-load this skill.

Automatically translate and sync App Store metadata (description, keywords, what's new, subtitle) to multiple languages using LLM translation and asc CLI. Use when asked to localize an app's App Store listing, translate app descriptions, or add new languages to App Store Connect.

SKILL.md

asc-localize-metadata.SKILL.md
name: asc-localize-metadata
description: Automatically translate and sync App Store metadata (description, keywords, what's new, subtitle) to multiple languages using LLM translation and asc CLI. Use when asked to localize an app's App Store listing, translate app descriptions, or add new languages to App Store Connect.

asc localize metadata

Use this skill to pull English (or any source locale) App Store metadata, translate it with LLM, and push translations back to App Store Connect — all automated.

Command discovery and output conventions

  • Always confirm flags with `--help` for the exact `asc` version:
  • `asc localizations --help`
  • `asc localizations download --help`
  • `asc localizations upload --help`
  • `asc apps info edit --help`
  • Prefer explicit long flags (`--app`, `--version`, `--version-id`, `--type`, `--app-info`).
  • Default output is JSON; use `--output table` only for human verification steps.
  • Prefer deterministic ID-based operations. Do not "pick the first row" via `head -1` unless the user explicitly agrees.

Preconditions

  • Auth configured (`asc auth login` or `ASC_*` env vars)
  • Know your app ID (`asc apps list` to find it)
  • At least one locale (typically en-US) already has metadata in App Store Connect

Supported Locales

App Store Connect locales for version and app-info 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

Two Types of Metadata

Version Localizations (per-release)

Fields: `description`, `keywords`, `whatsNew`, `supportUrl`, `marketingUrl`, `promotionalText`

App Info Localizations (app-level, persistent)

Fields: `name`, `subtitle`, `privacyPolicyUrl`, `privacyChoicesUrl`, `privacyPolicyText`

Workflow

Step 1: Resolve IDs

# Find app ID
asc apps list --output table

# Find latest version ID
asc versions list --app "APP_ID" --state READY_FOR_DISTRIBUTION --output table
# or for editable version:
asc versions list --app "APP_ID" --state PREPARE_FOR_SUBMISSION --output table

# Find app info ID (for app-level fields like name/subtitle)
asc apps info list --app "APP_ID" --output table

Notes:

  • Version-localization fields (description, keywords, whatsNew, etc.) are per-version.
  • App-info fields (name, subtitle, privacy URLs/text) are app-level and use `--type app-info`.
  • If you only have names (app name, version string) and need IDs deterministically, use `asc-id-resolver`.

Step 2: Download source locale

# Download version localizations to local .strings files
# (description, keywords, whatsNew, promotionalText, supportUrl, marketingUrl, ...)
asc localizations download --version "VERSION_ID" --path "./localizations"

# Download app-info localizations to local .strings files
# (name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText, ...)
asc localizations download --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"

This creates files like `./localizations/en-US.strings` and `./app-info-localizations/en-US.strings`. If download is unavailable, read fields individually:

# List version localizations to see existing locales and their content
asc localizations list --version "VERSION_ID" --output table

Step 3: Translate with LLM

For each target locale, translate the source text. Follow these rules:

Translation Guidelines

  • **Tone & Register**: Always use formal, polite language. Use formal "you" forms where the language distinguishes them (Russian: «вы», German: «Sie», French: «vous», Spanish: «usted», Dutch: «u», Italian: «Lei», Portuguese: «você» formal, etc.). App Store descriptions are professional marketing copy — never use casual or informal register.
  • **description**: Translate naturally, adapt tone to local market. Keep formatting (line breaks, bullet points, emoji). Stay within 4000 chars.
  • **keywords**: Do NOT literally translate. Research what users in that locale would search for. Comma-separated, max 100 chars total. No duplicates, no app name (Apple adds it automatically).
  • **whatsNew**: Translate release notes. Keep it concise. Max 4000 chars.
  • **promotionalText**: Translate marketing hook. Max 170 chars. This can be updated without a new version.
  • **subtitle**: Translate or adapt tagline. Max 30 chars — this is very tight, may need creative adaptation.
  • **name**: Usually keep the original app name. Only translate if the user explicitly asks. Max 30 chars.

LLM Translation Prompt Template

For each target locale, use this approach:

Translate the following App Store metadata from {source_locale} to {target_locale}.

Rules:
- description: Natural, fluent translation. Preserve formatting (line breaks, bullets, emoji). Max 4000 chars.
- keywords: Do NOT literally translate. Choose keywords native speakers would search for in the App Store. Comma-separated, max 100 chars total. Do not include the app name.
- whatsNew: Translate release notes naturally. Max 4000 chars.
- promotionalText: Translate marketing tagline. Max 170 chars.
- subtitle: Adapt tagline creatively to fit 30 chars max.
- name: Keep the original app name unless explicitly requested to translate it. Max 30 chars.
- Use formal, polite language and formal "you" forms (Russian: вы, German: Sie, French: vous, Spanish: usted, Dutch: u, etc.). App Store copy is professional marketing — never use informal register.
- Respect cultural context. A playful tone in English may need adjustment for formal markets (e.g., ja, de-DE).

Source ({source_locale}):
description: """
{description}
"""

keywords: {keywords}

whatsNew: """
{whatsNew}
"""

promotionalText: {promotionalText}

name: {name}

subtitle: {subtitle}

Step 4: Upload translations

Option A: Via .strings files (bulk)

Create a `.strings` file per locale in the appropriate dire

Read more
Ships withasc

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.

Get the whole plugin
Stats
956
Stars
51
Forks
Active
Maintenance
Python
Language
MIT
License
9h ago
Last commit
6mo ago
Created

Repo: rudrankriyam/asc-skills