app-store-connect
Skill0 starsChanged 35 days agoMITView on GitHub
Read and change an app in App Store Connect through Apple's API with one script - list apps, create a version, enter names, subtitles, descriptions, keywords and release notes per locale, upload screenshots and creative assets, attach a build, set age rating, price, review contact, demo account and notes, attach files for the reviewer, check what is missing, and (only on the owner's word) submit for review or release. Use this whenever the user mentions App Store Connect, ASC, the store listing "in Apple", uploading screenshots, attaching a build, version status, "is it approved", submitting for review or releasing, and whenever another launch skill needs something entered in or read from Apple's side.
6 other projects use a version of this.
Adopted by
Most recently taken up by
- sreejithraman/SreeStacktheir own version, first seen Oct 27, 2026
- LukaGiorgadze/openctotheir own version, first seen Jun 16, 2026
- sesamehut/appstore-connect-skilltheir own version, first seen Jun 14, 2026
- nvm1410/claude-skillstheir own version, first seen Jun 12, 2026
- 199-biotechnologies/app-store-connect-skilltheir own version, first seen Apr 6, 2026
- sosteam65/app-store-connect-skilltheir own version, first seen Apr 6, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- 199-biotechnologies/app-store-connect-skill★ 11same name
- LukaGiorgadze/opencto★ 1same name
- sesamehut/appstore-connect-skill★ 1same name
- sreejithraman/SreeStack★ 1same name
- nvm1410/claude-skills★ 0same name
- sosteam65/app-store-connect-skill★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- app-launchSkill
- app-localizationSkill
- app-review-readinessSkill
- aso-researchSkill
- eas-releaseSkill
- revenuecat-setupSkill
- store-listingSkill
- store-screenshotsSkill
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 0 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 52
Before running info or text, the listing text must pass ../store-listing/scripts/check-copy.mjs, and the owner must have seen the whole …
- Very specific: line 54
Release type: Default to MANUAL. It leaves a gap between approval and release to deploy a backend or pick a launch day.
- Very specific: line 84
After shots, screenshots process for a minute or two.
“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
App Store Connect
Nearly everything in App Store Connect can be done through its API, without a browser, in seconds, and repeatably. scripts/asc.mjs wraps the calls a release needs. Use it instead of clicking, and instead of writing one-off scripts per app.
node scripts/asc.mjs # prints every commandIt reads two things:
- The account key:
~/.appstoreconnect/config.json(keyId,issuerId) and the.p8in~/.appstoreconnect/private_keys/. If they are missing, seereferences/api-key.md; creating a key is an owner step. - The app's settings:
store/asc.jsonin the app's repo (or--config <file>). Format inreferences/config.md.
Run it from the app's repository root, calling the script by its absolute path (scripts/asc.mjs here means this skill's folder). apps, bundle-id and review-contact need no settings file. On Windows, Git Bash rewrites an argument that starts with / into a Windows path; the script undoes that for raw, but quoting the path or using PowerShell avoids it.
The two things that need the owner's word, every time
asc.mjs submit sends a version to App Review. asc.mjs release puts an approved version on the store. Both refuse to run without --confirm <version>, and that flag is yours to add only after the owner has said, for this version, to submit or to release. A go-ahead from an earlier version, or "prepare everything", is not it. Owners want to choose the moment, and sometimes change their mind mid-task.
The same guard covers raw: a non-GET call to a submission or release resource is refused without --confirm. Do not look for another way around it.
Everything else the script does can be undone or overwritten and never reaches the public by itself, with one exception: on an app that is already live, promotional text, price and availability change in the store the moment they are saved. asc.mjs text writes promotional text. So for a live app the promotional text is part of what the owner approves before text is run, and price and availability are changed only when asked.
Order of work for a release
asc.mjs apps # find the app id (a brand-new app must be created in the web UI by the owner first)
asc.mjs bundle-id com.you.app # new app: is the bundle identifier registered? (add "<name>" to register it)
asc.mjs review-contact <otherAppId> # if the account has another app: the contact details and copyright used on it
asc.mjs status # what is there now
asc.mjs version # create the version, manual release, copyright
asc.mjs info # names, subtitles, privacy URL, categories, content rights
asc.mjs text # description, keywords, promo text, release notes, support and marketing URLs
asc.mjs shots # screenshots from store/screenshots/upload/<locale>/
asc.mjs creative place # search-results image and header, if made
asc.mjs age # age rating answers
asc.mjs price # first release only: the price from "price" in asc.json (0 for free)
asc.mjs review # contact, demo account, notes
asc.mjs attach store/review/demo.mp4 # the owner's screen recording, if there is one
asc.mjs wait-build 28 # after the EAS upload: wait for Apple's processing
asc.mjs build 28 # attach it
asc.mjs preflight # what is still missingEach command is safe to run again; it looks at what exists first. Run status after the writes and read it: confirm the text lengths and screenshot counts are what you intended, per locale.
Before running info or text, the listing text must pass ../store-listing/scripts/check-copy.mjs, and the owner must have seen the whole proposal: get approval of the name, subtitle, keywords, category and locales first, then enter them.
Release type. Default to MANUAL. It leaves a gap between approval and release to deploy a backend or pick a launch day.
The first version of a new app has no release notes field, needs a price, and must include the first in-app purchases in the same submission (see ../revenuecat-setup/SKILL.md, step 6).
What the API cannot do
These need the web interface, in a browser the owner has signed in to. Reading or clicking there is a computer-use task; follow ../app-launch/references/computer-use.md (it covers who does the clicking, the sign-in rule, and what the browser agent cannot see).
- Creating the app record.
- Agreements, tax forms and banking.
- EU trader status.
- App privacy answers ("nutrition labels"): draft them from the code, the owner enters them.
- Regulated medical device status.
- App Analytics (impressions, conversion, sources) unless an analytics report request exists.
- Device Preview of creative assets.
- Reading the text of a rejection, and replying to App Review.
One thing sits in between: adding in-app purchases and subscriptions to a version's submission. The API has had a route for it since version 4.4.1 (references/api-notes.md, section 3), but it has not been run here, so the dependable way is still the web interface; either way, read the submission's items back afterwards.
asc.mjs preflight prints this reminder with its result, because a clean API check is not a complete one.
Things worth knowing
references/api-notes.md has the endpoints behind each command and the traps met so far. The short list:
- Name, subtitle, keywords and category go live only with an approved new version. Promotional text is live the moment it is saved.
- An app has two "app infos" while a version is in preparation: the live one and the editable one. The script picks the editable one.
- A locale added in the web UI is pre-filled with the primary language's text. Overwrite every field; do not assume an added locale is empty or translated.
- Locale codes are irregular (
it, notit-IT;nl-NL, notnl). The list is inreferences/config.md. - Screenshot sets are recognised by pixel size. A size Apple does not accept fails with a clear message before anything is uploaded.
- After
shots, screenshots process for a minute or two;statusshowsCOMPLETEwhen done. While a version is waiting for review, screenshots cannot be changed. - For anything the script lacks,
asc.mjs raw GET "/v1/…"calls the API directly. Read before you write, and prefer adding a command to the script over a one-off. Review details hold the demo account's password;rawhides it in its output, and there is no reason to go looking for it. bundle-idwith a name and theattachcommand have not been run against a live account yet (October 2026). Check their result with a read the first time.
Reporting
Report in the owner's terms: which locales now have which text and how many screenshots, which build is attached, the version's state, and what is still missing. Say plainly whether anything was submitted. If a command failed halfway (an upload, a locale), say which parts are done; the commands can be re-run for just the rest (shots de-DE).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

