
Asc Metadata Sync
Pull, edit, validate, and push App Store Connect metadata and localizations with the canonical asc metadata workflow.
Overview
asc-metadata-sync is an agent skill for the Launch phase that syncs, validates, and applies App Store metadata using the canonical asc metadata pull/edit workflow.
Install
npx skills add https://github.com/rorkai/app-store-connect-cli-skills --skill asc-metadata-syncWhat is this skill?
- Canonical flow: asc metadata pull → edit JSON → validate/apply via asc metadata
- Locale files: app-info and version paths under ./metadata with explicit field split
- Resolves multi app-info records with asc apps info list before pull
- Copyright managed via asc versions update (not localization JSON)
- Legacy fastlane/.strings paths only when user explicitly needs asc localizations or migrate
- Two canonical JSON trees: metadata/app-info/<locale>.json and metadata/version/<version>/<locale>.json
Adoption & trust: 704 installs on skills.sh; 845 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your App Store copy and keywords drift between local files and App Store Connect, or legacy fastlane metadata no longer matches how asc expects canonical JSON.
Who is it for?
Indie iOS apps already using asc CLI who need repeatable metadata pull/edit/push for a specific version and platform.
Skip if: Android Play Console listings, server-side API products with no App Store Connect surface, or teams insisting on fastlane-only .strings unless migration is intentional.
When should I use this skill?
User updates App Store metadata, localizations, keywords, or migrates legacy fastlane metadata with asc.
What do I get? / Deliverables
Local metadata mirrors Connect in structured JSON locales, ready to validate and apply without guessing field placement or app-info IDs.
- Pulled ./metadata JSON locale files
- Applied metadata updates in App Store Connect
- Validated metadata ready for release submission
Recommended Skills
Journey fit
App Store listing copy, keywords, and version metadata are launch-time distribution work tied to App Store Connect, not core product coding. ASO subphase covers descriptions, keywords, promotional text, support URLs, and locale JSON—the fields that affect discoverability and store presentation.
How it compares
Store-metadata workflow skill for asc CLI—not Xcode build signing or in-app feature development.
Common Questions / FAQ
Who is asc-metadata-sync for?
Solo and indie iOS developers using the asc App Store Connect CLI who update listings, keywords, and localizations from the repo.
When should I use asc-metadata-sync?
Use it at Launch / ASO when updating metadata or keywords, syncing locales before a release, or migrating legacy fastlane metadata to the canonical asc metadata layout.
Is asc-metadata-sync safe to install?
Commands touch live App Store Connect metadata when applying changes; review the Security Audits panel on this page and test pull/validate on a branch before pushing production listing updates.
SKILL.md
READMESKILL.md - Asc Metadata Sync
# asc metadata sync Use this skill to keep App Store metadata in sync with App Store Connect. Prefer the canonical `asc metadata` workflow for app-info and version localization fields. Use the lower-level `asc localizations` and `asc migrate` commands only when the user specifically needs `.strings` files or legacy fastlane-format metadata. ## Current canonical workflow ### 1. Pull canonical metadata ```bash asc metadata pull --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" ``` If the app has multiple app-info records, resolve the app-info ID first and pass it explicitly: ```bash asc apps info list --app "APP_ID" --output table asc metadata pull --app "APP_ID" --app-info "APP_INFO_ID" --version "1.2.3" --platform IOS --dir "./metadata" ``` ### 2. Edit local files Canonical files are written under: - `metadata/app-info/<locale>.json` for app-level fields: `name`, `subtitle`, `privacyPolicyUrl`, `privacyChoicesUrl`, `privacyPolicyText` - `metadata/version/<version>/<locale>.json` for version fields: `description`, `keywords`, `marketingUrl`, `promotionalText`, `supportUrl`, `whatsNew` Copyright is not a localization field. Manage it with: ```bash asc versions update --version-id "VERSION_ID" --copyright "2026 Your Company" ``` ### 3. Validate before upload ```bash asc metadata validate --dir "./metadata" --output table ``` For subscription apps, include the extra Terms of Use / EULA heuristic: ```bash asc metadata validate --dir "./metadata" --subscription-app --output table ``` ### 4. Preview and apply Run a dry run first: ```bash asc metadata push --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" --dry-run --output table ``` Apply after the plan looks correct: ```bash asc metadata push --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" ``` Use `asc metadata apply` when the user wants the apply-named command shape for the same canonical files: ```bash asc metadata apply --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" --dry-run asc metadata apply --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" ``` ## Keyword-only workflow Use this when only the version-localization `keywords` field should change: ```bash asc metadata keywords diff --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" asc metadata keywords apply --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" --confirm ``` For importing keyword research: ```bash asc metadata keywords import --dir "./metadata" --version "1.2.3" --locale "en-US" --input "./keywords.csv" asc metadata keywords sync --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" --input "./keywords.csv" ``` ## Quick field updates For one-off version-localization edits, pass an explicit version selector. Use `--version-id` for deterministic updates when you already have it, or `--version` plus `--platform` when working from a version string. ```bash asc apps info edit --app "APP_ID" --version-id "VERSION_ID" --locale "en-US" --whats-new "Bug fixes and improvements" asc apps info edit --app "APP_ID" --version "1.2.3" --platform IOS --locale "en-US" --description "Your app description here" asc apps info edit --app "APP_ID" --version "1.2.3" --platform IOS --locale "en-US" --keywords "keyword1,keyword2,keyword3" asc apps info edit --app "APP_ID" --version "1.2.3" --platform IOS --locale "en-US" --support-url "https://support.example.com" ``` For app-info fields, prefer the post-create setup command: ```bash asc app-setup info set --app "APP_ID" --primary-locale "en-US" --privacy-policy-url "https://example.com/privacy" asc app-setup info set --app "APP_ID" --locale "en-US" --name "Your App Name" --subtitle "Your subtitle"