home / skills / willsigmon / sigstack / app-store-connect-expert
This skill automates App Store submissions and metadata management using App Store Connect API and Fastlane for streamlined release workflows.
npx playbooks add skill willsigmon/sigstack --skill app-store-connect-expertReview the files below or copy the command above to add this skill to your agents.
---
name: App Store Connect Expert
description: App Store Connect API - metadata, screenshots, release automation
allowed-tools: Read, Edit, Bash, WebFetch
model: sonnet
---
# App Store Connect Expert
Automate App Store submissions with the Connect API.
## API Setup
### Create API Key
1. App Store Connect → Users and Access → Keys
2. Generate new key with appropriate role
3. Download .p8 file (only once!)
### Environment Variables
```bash
export ASC_KEY_ID="XXXXXXXXXX"
export ASC_ISSUER_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export ASC_KEY_PATH="~/.appstore/AuthKey_XXXXXXXXXX.p8"
```
## Fastlane Integration
### Deliver (Metadata & Screenshots)
```ruby
lane :metadata do
deliver(
submit_for_review: false,
automatic_release: false,
force: true,
metadata_path: "./fastlane/metadata",
screenshots_path: "./fastlane/screenshots"
)
end
```
### Metadata Structure
```
fastlane/
├── metadata/
│ ├── en-US/
│ │ ├── name.txt
│ │ ├── subtitle.txt
│ │ ├── description.txt
│ │ ├── keywords.txt
│ │ ├── promotional_text.txt
│ │ ├── privacy_url.txt
│ │ └── support_url.txt
│ └── ja/
│ └── ...
└── screenshots/
└── en-US/
├── iPhone 6.5"/
├── iPhone 5.5"/
└── iPad Pro 12.9"/
```
## Screenshot Automation
### Fastlane Snapshot
```ruby
# Snapfile
devices([
"iPhone 15 Pro Max",
"iPhone 8 Plus",
"iPad Pro (12.9-inch) (6th generation)"
])
languages([
"en-US",
"ja"
])
scheme("AppUITests")
output_directory("./fastlane/screenshots")
```
### Run Snapshots
```bash
fastlane snapshot
```
### Frame Screenshots
```ruby
lane :frames do
frameit(
white: true,
path: "./fastlane/screenshots"
)
end
```
## Release Automation
### Submit for Review
```ruby
lane :release do
deliver(
submit_for_review: true,
automatic_release: true,
submission_information: {
add_id_info_uses_idfa: false
},
precheck_include_in_app_purchases: false
)
end
```
### Phased Release
```ruby
deliver(
phased_release: true,
automatic_release: true
)
```
## App Store Connect CLI
### Installation
```bash
brew install app-store-connect-cli
# Or
pip install appstoreconnect
```
### List Apps
```bash
asc apps list
```
### Get Build Status
```bash
asc builds list --app-id 123456789
```
## API Direct Access
### JWT Token Generation
```python
import jwt
import time
def generate_token():
headers = {
"alg": "ES256",
"kid": KEY_ID,
"typ": "JWT"
}
payload = {
"iss": ISSUER_ID,
"exp": int(time.time()) + 1200, # 20 minutes
"aud": "appstoreconnect-v1"
}
with open(KEY_PATH, 'r') as f:
private_key = f.read()
return jwt.encode(payload, private_key,
algorithm='ES256', headers=headers)
```
### API Request
```python
import requests
token = generate_token()
response = requests.get(
"https://api.appstoreconnect.apple.com/v1/apps",
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
)
```
## Roles & Permissions
| Role | Capabilities |
|------|-------------|
| Admin | Everything |
| App Manager | Manage apps, no financials |
| Developer | Builds, TestFlight |
| Marketing | Metadata, screenshots |
| Sales | Reports, analytics |
## Common Automations
### Nightly Build Info
```ruby
lane :check_status do
latest = latest_testflight_build_number
puts "Latest build: #{latest}"
# Check review status
# ... API call
end
```
### Auto-Reply Reviews
```ruby
# Note: App Store Connect doesn't support this via API
# Use third-party tools like AppFollow
```
Use when: App Store submission, metadata management, screenshot automation
This skill automates App Store Connect workflows using the App Store Connect API, Fastlane, and CLI tools. It focuses on metadata management, screenshot generation and framing, and release automation including phased releases and submission. The guidance covers API key setup, JWT usage, and practical Fastlane lanes to integrate into CI pipelines.
It inspects and manipulates App Store Connect resources via the official API and tools: it creates JWT tokens from a .p8 key for direct API calls, uses Fastlane deliver and snapshot to upload metadata and screenshots, and invokes the App Store Connect CLI for quick queries. Lanes and scripts are designed to run in CI: export environment variables, run snapshots, frame images, then deliver metadata and optionally submit builds for review or phased release.
How do I securely store the .p8 API key for CI?
Keep the .p8 file in a secure secrets store or encrypted CI variable and reference it by path via ASC_KEY_PATH; avoid committing the key to version control.
Can the API auto-reply to App Store reviews?
No—App Store Connect does not expose review replies via the API. Use third-party services for review management and automated responses.