
Asc Metadata Sync
Keep App Store Connect titles, keywords, and localizations in version-controlled JSON and push updates 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 Connect metadata using the canonical asc metadata pull/edit/validate workflow.
Install
npx skills add https://github.com/rudrankriyam/app-store-connect-cli-skills --skill asc-metadata-syncWhat is this skill?
- Canonical asc metadata pull into metadata/app-info and metadata/version JSON per locale
- Explicit app-info ID resolution when multiple records exist on one app
- Copyright managed via asc versions update, not localization JSON
- Legacy fastlane .strings and migrate paths only when the user explicitly needs them
- Validate-before-apply workflow to avoid partial bad metadata on App Store Connect
- Two canonical JSON trees: metadata/app-info/<locale>.json and metadata/version/<version>/<locale>.json
- App-level fields include name, subtitle, and privacy URLs; version fields include description, keywords, and whatsNew
Adoption & trust: 2.3k installs on skills.sh; 845 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your App Store strings live in Connect or stale fastlane folders while your repo has no single source of truth for keywords and localizations.
Who is it for?
Indie iOS devs who already use asc and want repeatable metadata updates across locales without hand-editing Connect.
Skip if: Teams that only need one-off screenshot uploads or who refuse to install or configure the asc CLI.
When should I use this skill?
Updating App Store metadata, localizations, keywords, or migrating legacy fastlane metadata with asc.
What do I get? / Deliverables
You get git-reviewable locale JSON under metadata/ that validates and applies cleanly to App Store Connect for a chosen app, version, and platform.
- Pulled or updated metadata JSON under metadata/app-info and metadata/version
- Validated and applied App Store Connect metadata for the target version
Recommended Skills
Journey fit
App Store listing copy and localizations are edited right before or during store submission and ongoing ASO updates. Canonical pull/edit/validate/apply targets app-info and version localization fields—core app-store optimization work, not generic backend build.
How it compares
Structured asc metadata sync—not a generic fastlane deliver lane or manual Connect copy-paste.
Common Questions / FAQ
Who is asc-metadata-sync for?
Solo and indie builders shipping iOS (or multi-platform) apps who manage App Store listings with the asc CLI and want canonical JSON metadata in the repo.
When should I use asc-metadata-sync?
Use it in Launch when refreshing ASO copy, adding locales, or migrating off legacy fastlane metadata; also during Ship launch prep when keywords and what’s new must match a tagged release.
Is asc-metadata-sync safe to install?
Treat it as operational guidance that drives real Connect changes after validate/apply; review the Security Audits panel on this Prism page before granting your agent shell and API access to asc.
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"