# Asc Metadata Sync

Sync, validate, and apply App Store metadata and store assets with asc.

- Repository: https://github.com/rorkai/app-store-connect-cli-skills (1119 stars)
- Category: Mobile
- License: MIT
- Last updated: 2026-10-26
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add rorkai/app-store-connect-cli-skills --skill asc-metadata-sync -g -a claude-code -y`
Codex: `npx skills add rorkai/app-store-connect-cli-skills --skill asc-metadata-sync -g -a codex -y`
Cursor: `npx skills add rorkai/app-store-connect-cli-skills --skill asc-metadata-sync -g -a cursor -y`
Gemini CLI: `npx skills add rorkai/app-store-connect-cli-skills --skill asc-metadata-sync -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add rorkai/app-store-connect-cli-skills`

## Description

Sync, validate, and apply App Store metadata and store assets with asc. Use when updating localizations, keywords, App Clip or preview assets, Asset Library media and placements, or migrating legacy fastlane metadata.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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:

The rest: https://github.com/rorkai/app-store-connect-cli-skills/blob/HEAD/skills/asc-metadata-sync/SKILL.md
