Appstore ads operator
Skill Xopoko/plug-n-skills/plugins/build-swift-apps/skills/appstore-ads-operator
Manage Apple Ads with `asc ads`: separate auth, org lookup, campaigns, ad groups, ads, keywords, reports, raw API requests, and safe live testing.From its SKILL.md
npx -y skills add Xopoko/plug-n-skills --skill appstore-ads-operatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 5 credential sources: `ASC_ADS_CLIENT_ID` and 4 more.
- 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `asc ads auth login --name "Marketing" --client-id "$ASC_ADS_CLIENT_ID" --team-id "$ASC_ADS_TEAM_ID" --key-id "$ASC_ADS_KEY_ID" --private-key "$ASC_ADS_PRIVATE_KEY_PATH" --org "$ASC_ADS_ORG_ID" --netwo` and 7 more.
SKILL.md
3.3 KB, 843 tokens by cl100k_base, as published. Nobody here has run it
App Store Ads Operator
Apple Ads auth is separate from App Store Connect auth. Start read-only and require approval before live mutations.
Ground Rules
- Check
asc ads --helpor subgroup help before scripting. - Use
--output jsonfor automation. - Most commands need an org ID; prefer
--org, or setASC_ADS_ORG_ID. - Never guess payload fields. Put Apple Ads JSON in files and pass
--file. - Do not mutate until the user names the org and approves the resource type.
Auth And Org
asc ads auth login --name "Marketing" --client-id "$ASC_ADS_CLIENT_ID" \
--team-id "$ASC_ADS_TEAM_ID" --key-id "$ASC_ADS_KEY_ID" \
--private-key "$ASC_ADS_PRIVATE_KEY_PATH" --org "$ASC_ADS_ORG_ID" --network
export ASC_ADS_CLIENT_ID="SEARCHADS_CLIENT_ID"
export ASC_ADS_TEAM_ID="SEARCHADS_TEAM_ID"
export ASC_ADS_KEY_ID="KEY_ID"
export ASC_ADS_PRIVATE_KEY_PATH="$HOME/.asc/apple-ads-private-key.pem"
export ASC_ADS_ORG_ID="123456"
asc ads auth status --validate --output json
asc ads auth doctor --output json
asc ads me view --output json
asc ads acls --output json
Org precedence: --org, ASC_ADS_ORG_ID, stored profile org_id, config ads.org_id.
Reads
asc ads campaigns --org "123456" --paginate --output json
asc ads campaigns view --org "123456" --campaign 987654321 --output json
asc ads ad-groups list --org "123456" --campaign 987654321 --output json
asc ads apps search --org "123456" --query "My App" --limit 10 --output json
asc ads product-pages list --org "123456" --adam-id 1234567890 --states VISIBLE --output json
asc ads creatives list --org "123456" --limit 100 --output json
asc ads geo search --org "123456" --query "San Francisco" --country-code US --limit 10 --output json
asc ads reports campaigns --org "123456" --file reporting-request.json --output json
asc ads reports keywords --org "123456" --campaign 987654321 --file reporting-request.json --output json
Reporting/find endpoints keep pagination in the JSON body.
Mutations
asc ads campaigns create --org "123456" --file campaign.json --output json
asc ads campaigns update --org "123456" --campaign 987654321 --file campaign-update.json --output json
asc ads ad-groups create --org "123456" --campaign 987654321 --file ad-group.json --output json
asc ads targeting-keywords create-bulk --org "123456" --campaign 987654321 --ad-group 123456789 --file keywords.json --output json
asc ads targeting-keywords delete-bulk --org "123456" --campaign 987654321 --ad-group 123456789 --file keyword-ids.json --confirm --output json
asc ads campaigns delete --org "123456" --campaign 987654321 --confirm
For raw API gaps:
asc ads api request --method POST --path v5/campaigns/find --org "123456" --file selector.json --output json
Raw paths must be Apple Ads v5 paths or full https://api.searchads.apple.com/api/v5/... URLs. DELETE still requires --confirm.
Live Test Checklist
Start with me view and acls; print org ID; create paused/future-dated resources named ASC CLI Live Test <timestamp>; save IDs; delete only the test parent campaign/ad group; list again to confirm cleanup. Apple may reject direct deletion for default product page creative ads.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most marketing audience skills give in 843 tokens
Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07
- Apply Poppins font to headingsin 41 of 690, across 6 files
- Apply Lora font to body textin 41 of 690, across 6 files
- Use Arial fallback for headingsin 39 of 690, across 4 files
- Use Georgia fallback for body textin 39 of 690, across 4 files
- Maintain text hierarchy and formattingin 39 of 690, across 4 files
- Use accent colors for non-text shapesin 38 of 690, across 3 files
- Use RGB values for precise color matchingin 38 of 690, across 3 files
- Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
- Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
- Use active voice instead of passive voicein 26 of 690, across 10 files
- Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
- Prioritize clarity over clevernessin 22 of 690, across 8 files
Said here and by no other author read
- start with read-only operations
- require approval before live mutations
- specify org id using flag or environment
- use raw api for endpoint gaps
- name live test resources with timestamp
- delete test parent after testing
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.