This skill should be used when the user asks to "check TestFlight feedback", "query TestFlight", "list beta testers", "show TestFlight builds", "get beta feedback", "check App Store Connect", "query app store connect API", "list TestFlight groups", "show build status", or any task involving TestFlight feedback, beta testers, builds, or App Store Connect API queries.
Query TestFlight feedback, beta testers, builds, and beta groups via the App Store Connect API using a bundled script.
Three environment variables must be available (typically from Doppler via direnv):
| Variable | Source |
|---|---|
APPLE_APP_STORE_CONNECT_API_KEY_ID | Apple Developer > Keys |
APPLE_APP_STORE_CONNECT_ISSUER_ID | Apple Developer > Keys |
APPLE_APP_STORE_CONNECT_API_KEY_BASE64 | .p8 file, base64-encoded |
If missing, prompt the user to add them to Doppler and run direnv allow.
The bundled script scripts/appstore-connect.sh handles JWT generation and API calls.
# TestFlight feedback (default)
bash ${SKILL_DIR}/scripts/appstore-connect.sh <bundle-id> feedback
# List beta testers
bash ${SKILL_DIR}/scripts/appstore-connect.sh <bundle-id> testers
# Recent builds
bash ${SKILL_DIR}/scripts/appstore-connect.sh <bundle-id> builds
# Beta groups
bash ${SKILL_DIR}/scripts/appstore-connect.sh <bundle-id> groups
# Raw API query (any App Store Connect endpoint path)
bash ${SKILL_DIR}/scripts/appstore-connect.sh <bundle-id> raw /v1/apps/{appId}/betaAppLocalizations
Look up the bundle ID from the project's iOS config. Common locations:
ios/Runner.xcodeproj/project.pbxproj or ios/Runner/Info.plistAPPLE_APP_STORE_CONNECT_API_KEY_ID exists in environmentscreenshotSubmissions and crashSubmissions arrays from Apple's v1 beta feedback endpoints. Screenshot submissions include tester comments, device info, and screenshot URLs (with expiration dates). Crash submissions include crash logs.| Error | Action |
|---|---|
| Missing env vars | Tell user to add Apple credentials to Doppler |
| HTTP 401 | API key may be revoked — regenerate in Apple Developer portal. Also check that PyJWT is installed (pip3 install pyjwt cryptography) |
| HTTP 403 | API key role insufficient — needs App Manager or Admin |
| No app found | Bundle ID is wrong — try raw /v1/apps to list all apps |
references/api-endpoints.md — Full App Store Connect API endpoint reference for TestFlight-related resources, field descriptions, and filter parametersscripts/appstore-connect.sh — Bundled query script with JWT generation, multi-command support, and error handling. Prefers python3 with PyJWT for reliable ES256 JWT signing; falls back to openssl with DER-to-raw signature conversion. Requires curl, jq, and either python3 + pyjwt or openssl + base64 + xxd.