← ClaudeAtlas

app-store-connectlisted

This skill should be used when the user asks to "upload to App Store", "manage App Store Connect", "update app metadata", "upload screenshots", "set app description", "set keywords", "manage TestFlight", "add beta testers", "check app reviews", "respond to reviews", "submit for review", "set app pricing", "create in-app purchase", "manage subscriptions", "check sales reports", "download finance report", "download analytics", "set phased release", "pause phased release", "resume phased release", "create app event", "manage app clips", "deploy iOS app", "archive and upload build", "translate app metadata", "check app status", "manage app store listing", "nominate for featuring", "create custom product page", "set age rating", "manage release notes", "set app category", "upload app preview", "check build status", "list builds", "set privacy policy URL", "set content rights", "set review contact info", "create new app version", "increment version", "manage territory availability", "set app availability", "create
sosteam65/app-store-connect-skill · ★ 0 · Data & Documents · score 72
Install: claude install-skill sosteam65/app-store-connect-skill
# App Store Connect — Full Management Skill Complete App Store Connect management via REST API and xcodebuild CLI. ## Credentials Load credentials from `config/credentials.local.md` (gitignored). That file contains: - Key ID, Issuer ID, Private Key path, Team ID - Default contact info (company, email, phone, copyright) ## Authentication (Required for All API Calls) ```python import jwt, time, requests # Load these values from config/credentials.local.md KEY_ID = "YOUR_KEY_ID" # See config/credentials.local.md ISSUER_ID = "YOUR_ISSUER_ID" # See config/credentials.local.md KEY_PATH = "/path/to/AuthKey.p8" # See config/credentials.local.md with open(KEY_PATH, 'r') as f: private_key = f.read() payload = {"iss": ISSUER_ID, "iat": int(time.time()), "exp": int(time.time()) + 1200, "aud": "appstoreconnect-v1"} token = jwt.encode(payload, private_key, algorithm="ES256", headers={"kid": KEY_ID}) headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"} ``` ## Core ID Resolution (Always Do First) Most operations require these IDs. Resolve them before any update: ```python # 1. Get APP_ID response = requests.get("https://api.appstoreconnect.apple.com/v1/apps", headers=headers) for app in response.json()['data']: print(f"{app['attributes']['name']} - {app['attributes']['bundleId']} (ID: {app['id']})") APP_ID = "the-app-id" # 2. Get VERSION_ID response = requests.get(f"https://api.appstoreconnect.apple.com/v1/apps/{APP_ID}/appStoreV