install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/rudrankriyam/app-store-connect-cli-skills/asc-metadata-sync" ~/.claude/skills/comeonoliver-skillshub-asc-metadata-sync && rm -rf "$T"
manifest:
skills/rudrankriyam/app-store-connect-cli-skills/asc-metadata-sync/SKILL.mdsource content
asc metadata sync
Use this skill to keep local metadata in sync with App Store Connect.
Two Types of Localizations
1. Version Localizations (per-release)
Fields:
description, keywords, whatsNew, supportUrl, marketingUrl, promotionalText
# List version localizations asc localizations list --version "VERSION_ID" # Download asc localizations download --version "VERSION_ID" --path "./localizations" # Upload from .strings files asc localizations upload --version "VERSION_ID" --path "./localizations"
2. App Info Localizations (app-level)
Fields:
name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText
# First, find the app info ID asc apps info list --app "APP_ID" # List app info localizations asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID" # Upload app info localizations asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
Note: If you get "multiple app infos found", you must specify
--app-info with the correct ID.
Legacy Metadata Format Workflow
Export current state
asc migrate export --app "APP_ID" --output "./metadata"
Validate local files
# Use --help to discover flags for your metadata directory asc migrate validate --help
This checks character limits and required fields.
Import updates
# Use --help to discover flags for your metadata directory asc migrate import --help
Quick Field Updates
Version-specific fields
# What's New asc apps info edit --app "APP_ID" --locale "en-US" --whats-new "Bug fixes and improvements" # Description asc apps info edit --app "APP_ID" --locale "en-US" --description "Your app description here" # Keywords asc apps info edit --app "APP_ID" --locale "en-US" --keywords "keyword1,keyword2,keyword3" # Support URL asc apps info edit --app "APP_ID" --locale "en-US" --support-url "https://support.example.com"
Version metadata
# Copyright asc versions update --version-id "VERSION_ID" --copyright "2026 Your Company" # Release type asc versions update --version-id "VERSION_ID" --release-type AFTER_APPROVAL
TestFlight notes
asc build-localizations create --build "BUILD_ID" --locale "en-US" --whats-new "TestFlight notes here"
.strings File Format
For bulk updates, use .strings files:
// en-US.strings "description" = "Your app description"; "keywords" = "keyword1,keyword2,keyword3"; "whatsNew" = "What's new in this version"; "supportUrl" = "https://support.example.com";
For app-info type:
// en-US.strings (app-info type) "privacyPolicyUrl" = "https://example.com/privacy"; "name" = "Your App Name"; "subtitle" = "Your subtitle";
Multi-Language Workflow
- Export all localizations:
asc localizations download --version "VERSION_ID" --path "./localizations"
-
Translate the .strings files (or use translation service)
-
Upload all at once:
asc localizations upload --version "VERSION_ID" --path "./localizations"
- Verify:
asc localizations list --version "VERSION_ID" --output table
Character Limits
| Field | Limit |
|---|---|
| Name | 30 |
| Subtitle | 30 |
| Keywords | 100 (comma-separated) |
| Description | 4000 |
| What's New | 4000 |
| Promotional Text | 170 |
Use
asc migrate validate to check limits before upload.
Notes
- Version localizations and app info localizations are different; use the right command and
flag.--type
enforces character limits before upload.asc migrate validate- Use
to confirm available locales and IDs.asc localizations list - Privacy Policy URL is in app info localizations, not version localizations.