Skip to main content
skill CX Codex

app-store-deployment · secondsky — Claude Code skill: setup & overview

Provides build scripts, checklists, and CI/CD pipelines to publish mobile apps to the iOS App Store and Google Play. Helps automate code signing and release packaging.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add secondsky/claude-skills --skill app-store-deployment -a claude-code
Open on GitHub

What app-store-deployment does

The skill provides build commands and CI/CD workflows for mobile releases. For iOS, it covers archive generation and IPA export using xcodebuild, followed by upload to App Store Connect via xcrun altool. Android builds rely on keytool for RSA 2048-bit keystores, ./gradlew bundleRelease, and release credentials configured in gradle.properties.

The skill provides a GitHub Actions workflow triggered on v* tags. iOS jobs run on macos-latest runners, while Android builds execute on ubuntu-latest and publish through r0adkll/upload-google-play@v1. Without repository secrets for APPLE_ID and APP_SPECIFIC_PASSWORD, the App Store Connect upload fails immediately.

The skill also defines a pre-deployment checklist. Requirements include test coverage above 80%, verified privacy URLs, and store listing screenshots. A JSON structure keeps cross-platform versioning aligned between iOS buildNumber and Android versionCode.

What it helps with

  • Build and export iOS IPA packages with xcodebuild
  • Generate Android release keystores using keytool
  • Set up GitHub Actions workflows for App Store and Google Play deployments
  • Keep iOS buildNumber and Android versionCode versions synchronized
  • Verify release readiness against a store submission checklist

Example prompts for the agent

  • Help me set up a GitHub Actions workflow to deploy v* tags to App Store and Google Play
  • Show me how to archive and export an iOS IPA using xcodebuild and ExportOptions.plist
  • Walk through the mobile pre-deployment checklist before submitting this build

How to install app-store-deployment

1Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill app-store-deployment -a claude-code

2Manually: put the files in place

~/.claude/skills/app-store-deployment/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/app-store-deployment/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about app-store-deployment

How to install app-store-deployment in Claude Code?

Run npx skills add secondsky/claude-skills --skill app-store-deployment -a claude-code.

What does the app-store-deployment skill do?

It guides developers through building, signing, and releasing mobile apps to both the iOS App Store and Google Play. It provides setup snippets for xcodebuild, Gradle properties, GitHub Actions CI/CD workflows, and release checklists.

Which secrets are required for automated iOS App Store uploads?

The workflow requires APPLE_ID and APP_SPECIFIC_PASSWORD stored as repository secrets. The xcrun altool command uses them to authenticate with App Store Connect.

Source text

SKILL.md · MIT
---
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.
license: MIT
---

# 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

© secondsky · MIT · secondsky/claude-skills

Similar skills

Everything for Mobile →

app-store-deployment by other authors comes first.

From the same set128

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor