home / skills / secondsky / claude-skills / app-store-deployment

This skill guides end-to-end app store deployment for iOS and Android, automating signing, versioning, and CI/CD pipelines.

npx playbooks add skill secondsky/claude-skills --skill app-store-deployment

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
3.1 KB
---
name: app-store-deployment
description: Publishes mobile applications to iOS App Store and Google Play with code signing, versioning, and CI/CD automation. Use when preparing app releases, configuring signing certificates, or setting up automated deployment pipelines.
---

# App Store Deployment

Publish mobile applications to iOS App Store and Google Play with proper procedures.

## iOS Deployment

### Build and Archive
```bash
# Build archive
xcodebuild -workspace App.xcworkspace \
  -scheme App \
  -sdk iphoneos \
  -configuration Release \
  -archivePath build/App.xcarchive \
  archive

# Export IPA
xcodebuild -exportArchive \
  -archivePath build/App.xcarchive \
  -exportOptionsPlist ExportOptions.plist \
  -exportPath build/
```

### Upload to App Store Connect
```bash
xcrun altool --upload-app \
  --type ios \
  --file build/App.ipa \
  --username "$APPLE_ID" \
  --password "$APP_SPECIFIC_PASSWORD"
```

## Android Deployment

### Build Release APK/Bundle
```bash
# Generate keystore (once)
keytool -genkey -v -keystore release.keystore \
  -alias app -keyalg RSA -keysize 2048 -validity 10000

# Build release bundle
./gradlew bundleRelease
```

### gradle.properties
```properties
RELEASE_STORE_FILE=release.keystore
RELEASE_KEY_ALIAS=app
RELEASE_STORE_PASSWORD=****
RELEASE_KEY_PASSWORD=****
```

## Version Management

```json
{
  "version": "1.2.3",
  "ios": { "buildNumber": "45" },
  "android": { "versionCode": 45 }
}
```

## Pre-Deployment Checklist

- [ ] All tests passing (>80% coverage)
- [ ] App icons for all sizes
- [ ] Screenshots for store listing
- [ ] Privacy policy URL configured
- [ ] Permissions justified
- [ ] Tested on minimum supported OS
- [ ] Release notes prepared

## CI/CD (GitHub Actions)

```yaml
on:
  push:
    tags: ['v*']

jobs:
  deploy-ios:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up environment
        run: |
          # Accept Xcode license if needed
          sudo xcodebuild -license accept || true

      - name: Build archive
        run: |
          xcodebuild -workspace App.xcworkspace \
            -scheme App \
            -sdk iphoneos \
            -configuration Release \
            -archivePath build/App.xcarchive \
            archive

      - name: Export IPA
        run: |
          xcodebuild -exportArchive \
            -archivePath build/App.xcarchive \
            -exportOptionsPlist ExportOptions.plist \
            -exportPath build/

      - name: Upload to App Store Connect
        env:
          APPLE_ID: ${{ secrets.APPLE_ID }}
          APP_SPECIFIC_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }}
        run: |
          xcrun altool --upload-app \
            --type ios \
            --file build/App.ipa \
            --username "$APPLE_ID" \
            --password "$APP_SPECIFIC_PASSWORD"

  deploy-android:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./gradlew bundleRelease
      - uses: r0adkll/upload-google-play@v1
```

## Best Practices

- Automate deployment with CI/CD
- Test on physical devices
- Secure signing materials separately
- Monitor crash reports post-launch

Overview

This skill publishes mobile apps to the iOS App Store and Google Play with end-to-end handling of code signing, versioning, and CI/CD automation. It includes build and archive steps, keystore management, version metadata, a pre-deployment checklist, and sample GitHub Actions pipelines for automated releases. The skill is written in TypeScript and designed for production-ready deployment workflows.

How this skill works

The skill runs platform-specific build commands (xcodebuild for iOS, Gradle for Android), exports artifacts (IPA or AAB), and uploads them to the appropriate store using authenticated CLI tools. It manages signing materials (Apple credentials, keyrings/keystores), increments build numbers/version codes, and ties releases to CI triggers such as tag pushes. Example GitHub Actions workflows demonstrate macOS runners for iOS and Linux runners for Android with secure secrets for credentials.

When to use it

  • Preparing a release candidate for App Store or Google Play submission
  • Configuring or rotating signing certificates and keystores
  • Automating deployment from CI when pushing version tags
  • Standardizing version and build number management across platforms
  • Enforcing a pre-deployment checklist before publishing

Best practices

  • Keep signing credentials and app-specific passwords in CI secrets, never in repo
  • Automate releases with CI triggers on semantic version tags
  • Bump iOS buildNumber and Android versionCode together and track in a single source of truth
  • Test artifacts on physical devices and verify store metadata/screenshots before upload
  • Monitor crash reports and analytics immediately after release

Example use cases

  • Add a GitHub Actions workflow that builds on tag push and uploads IPA/AAB to stores
  • Rotate an Android keystore and update gradle.properties with secure CI secrets
  • Prepare a one-off hotfix release by incrementing version and running the archived build steps
  • Enforce the pre-deployment checklist in your release checklist step in CI
  • Integrate store uploads into an existing release pipeline to remove manual steps

FAQ

How do I store signing credentials securely?

Keep credentials in your CI provider's encrypted secrets store and load them as environment variables at runtime; never commit keys to the repository.

Which CI runners are required for iOS and Android builds?

iOS builds require macOS runners because Xcode is only available on macOS; Android builds can run on Linux runners.