Loading...
Loading...
Manage App Store app info and per-locale metadata using the `asc` CLI tool. Use this skill when: (1) Listing app info records: "asc app-infos list --app-id ID" (2) Updating app categories: "asc app-infos update --app-info-id ID --primary-category 6014" (3) Browsing categories: "asc app-categories list --platform IOS" (4) Listing per-locale app metadata: "asc app-info-localizations list --app-info-id ID" (5) Creating a new locale entry: "asc app-info-localizations create --app-info-id ID --locale en-US --name 'My App'" (6) Updating name, subtitle, or privacy URLs: "asc app-info-localizations update --localization-id ID --name 'New Name'" (7) Deleting a locale entry: "asc app-info-localizations delete --localization-id ID" (8) Navigating to age rating: "asc age-rating get --app-info-id ID" (use getAgeRating affordance) (9) User says "update app name", "update subtitle", "set privacy policy URL", "list app info", "manage app metadata", "set category", "update category"
npx skill4agent add tddworks/asc-cli-skills asc-app-infosascNote: This is distinct from version-level metadata () which handles "What's New", description, and keywords. App info localizations hold the persistent app name and subtitle.asc version-localizations
asc app-infos list --app-id <APP_ID> [--pretty]{
"data": [
{
"id": "info-abc123",
"appId": "6746148194",
"affordances": {
"getAgeRating": "asc age-rating get --app-info-id info-abc123",
"listAppInfos": "asc app-infos list --app-id 6746148194",
"listLocalizations": "asc app-info-localizations list --app-info-id info-abc123",
"updateCategories": "asc app-infos update --app-info-id info-abc123"
}
}
]
}asc app-infos update --app-info-id <APP_INFO_ID> \
[--primary-category GAMES] \
[--primary-subcategory-one GAMES_ACTION] \
[--secondary-category UTILITIES]app-infos updateasc app-categories list [--platform IOS|MAC_OS|TV_OS] [--output table]GAMESGAMES_ACTIONGAMES_PUZZLEGAMES_ADVENTUREBUSINESSUTILITIESEDUCATIONHEALTH_AND_FITNESSENTERTAINMENTSOCIAL_NETWORKINGPRODUCTIVITYFINANCEMUSICTRAVELSPORTSPARENT_SUBTYPEGAMES_ACTIONGAMESparentIdasc app-info-localizations list --app-info-id <APP_INFO_ID> [--output table]ID Locale Name Subtitle
-------- -------- -------------- --------------------
loc-001 en-US My App Do things faster
loc-002 zh-Hans 我的应用 更快地完成任务--nameasc app-info-localizations create \
--app-info-id <APP_INFO_ID> \
--locale zh-Hans \
--name "我的应用"en-USzh-Hanszh-Hantjakodefrasc app-info-localizations update \
--localization-id <LOCALIZATION_ID> \
[--name "New App Name"] \
[--subtitle "Do things faster"] \
[--privacy-policy-url "https://example.com/privacy"] \
[--privacy-choices-url "https://example.com/choices"] \
[--privacy-policy-text "Our privacy policy text"]| Flag | Description |
|---|---|
| App name (up to 30 characters) |
| Subtitle (up to 30 characters) |
| Main privacy policy URL |
| Privacy choices/opt-out URL |
| Inline privacy policy text |
asc app-info-localizations delete --localization-id <LOCALIZATION_ID>{
"affordances": {
"getAgeRating": "asc age-rating get --app-info-id <ID>",
"listAppInfos": "asc app-infos list --app-id <APP_ID>",
"listLocalizations": "asc app-info-localizations list --app-info-id <ID>",
"updateCategories": "asc app-infos update --app-info-id <ID>"
}
}{
"affordances": {
"delete": "asc app-info-localizations delete --localization-id <ID>",
"listLocalizations": "asc app-info-localizations list --app-info-id <APP_INFO_ID>",
"updateLocalization": "asc app-info-localizations update --localization-id <ID>"
}
}{
"affordances": {
"listCategories": "asc app-categories list"
}
}.asc/project.jsonasc apps listAPP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')
# If empty: ask user or run `asc apps list | jq -r '.data[0].id'`
# 1. Get the AppInfo ID
APP_INFO_ID=$(asc app-infos list --app-id "$APP_ID" | jq -r '.data[0].id')
# 2. See existing localizations
asc app-info-localizations list --app-info-id "$APP_INFO_ID" --output table
# 3a. Update an existing locale
LOC_ID=$(asc app-info-localizations list --app-info-id "$APP_INFO_ID" \
| jq -r '.data[] | select(.locale == "en-US") | .id')
asc app-info-localizations update \
--localization-id "$LOC_ID" \
--name "My App" \
--subtitle "Do things faster" \
--privacy-policy-url "https://example.com/privacy"
# 3b. Add a new locale
asc app-info-localizations create \
--app-info-id "$APP_INFO_ID" \
--locale zh-Hans \
--name "我的应用"
# 3c. Remove an unwanted locale
asc app-info-localizations delete --localization-id <LOCALIZATION_ID>
# 4. Set app category
asc app-categories list --platform IOS --output table
asc app-infos update \
--app-info-id "$APP_INFO_ID" \
--primary-category GAMES \
--primary-subcategory-one GAMES_ACTION
# 5. Check age rating (navigate via affordance)
asc age-rating get --app-info-id "$APP_INFO_ID"| Type | Commands | Fields |
|---|---|---|
| | name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText |
| | whatsNew, description, keywords, screenshots |