agentsclimarketplace

Appstore metadata localizer

Skill Xopoko/plug-n-skills/plugins/build-swift-apps/skills/appstore-metadata-localizer

Use when App Store listing text must be translated or market-adapted across locales, including descriptions, keywords, What's New, subtitles, names, privacy text, and App Store Connect languages. Not for non-translation metadata edits, release-note drafting, or subscription/IAP display-name localization.From its SKILL.md

Install
npx -y skills add Xopoko/plug-n-skills --skill appstore-metadata-localizer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 3 commands, including `python3 "$PLUGIN_ROOT/skills/appstore-metadata-localizer/scripts/metadata_localization_lint.py" \ "./localizations" "./app-info-localizations" --recursive` and 2 more.

SKILL.md

2.3 KB, 422 tokens by cl100k_base, as published. Nobody here has run it

App Store Metadata Localizer

Pull source metadata, translate/adapt it, validate limits, get approval, then upload version or app-info localizations.

Use appstore-metadata-sync for canonical JSON field edits that are not translation-first. Use appstore-release-notes-writer when the requested artifact is only What's New or promotional text. Use appstore-subscription-localizer for subscription, group, or IAP display names.

Local Lint Helper

After writing or editing localized .strings or metadata JSON, run the bundled limit checker:

python3 "$PLUGIN_ROOT/skills/appstore-metadata-localizer/scripts/metadata_localization_lint.py" \
  "./localizations" "./app-info-localizations" --recursive

The helper checks App Store field limits for name, subtitle, keywords, description, whatsNew, and promotionalText. It does not translate, rewrite files, upload, or call ASC. Pass --json for machine-readable output.

Workflow

  1. Confirm current asc localizations flags, then resolve app, version, and app-info IDs deterministically.
  2. Download source and existing localizations; if download is unavailable, inspect with asc localizations list.
  3. Translate one target locale at a time from the source locale. Preserve formatting and meaning; do not translate from memory.
  4. Adapt keywords for native App Store search behavior instead of literal translation.
  5. Run metadata_localization_lint.py, then show a field-by-locale summary table and wait for approval.
  6. Upload only after approval, then verify with the matching asc localizations list command.

Translation Rules

Use formal, professional App Store register. Keep the app name unchanged unless the user explicitly asks to translate it. For updates, download current localization, show a diff, get approval, then upload.

References

  • references/appstore-metadata-localizer.md for supported locales, detailed ASC commands, field scope, .strings format, and translation rules.

What ships with it: 1 file

6.3 KB alongside SKILL.md, 1 of them executable

Gives 0 of the 12 instructions most translation skills give in 422 tokens

Counted across 286 of the 304 authors here whose files we hold, read 2026-09-06

  • Preserve all markdown formattingin 8 of 286, across 5 files
  • Use ICU message format for complex stringsin 8 of 286
  • Preserve all numbers, dates, and amounts exactlyin 7 of 286
  • Use CSS logical properties for RTL layoutsin 7 of 286
  • Format dates, numbers, and currencies with FormatStylein 7 of 286, across 6 files
  • Use locale-aware formatters for dates, numbers, and currencyin 7 of 286
  • Merge translated chunks in orderin 6 of 286, across 3 files
  • Use logical CSS properties instead of physical onesin 6 of 286
  • Use leading and trailing, never left and rightin 6 of 286, across 5 files
  • Use time-limited SAS URLs for document translationin 5 of 286, across 2 files
  • Split long content at markdown block boundariesin 5 of 286, across 2 files
  • Run first-time setup before any translation when preferences missingin 5 of 286, across 2 files

Said here and by no other author read

  • Download source and existing localizations
  • Translate one target locale at a time
  • Preserve formatting and meaning
  • Adapt keywords for App Store search behavior
  • Run the lint script after writing localizations
  • Show a field-by-locale summary table

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.