agentleFS
TehseenTechTehseenTech/manus-skills/ios-testflight-github-actions/SKILL.md

ios-testflight-github-actions

Skill0 starsChanged 3 months agoMITView on GitHub

Automate iOS TestFlight deployments using GitHub Actions after initial manual setup. Use when setting up CI/CD for iOS apps, automating TestFlight uploads, configuring GitHub Actions workflows for mobile apps, or establishing automated deployment pipelines for React Native, Expo, Flutter, or native iOS projects. Requires one-time manual Apple Developer setup before automation can begin. Apply automatically when the request matches; the user does not need to mention this skill.

  • Reads credentials
  • Commits and pushes

The file

Show its rules and text

We split this skill into the rules it gives an agent

19 rules. About 0 are common, 11 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈11

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill when the request matches its description.

    line 15
  2. Distinctive:

    Use this skill when:

    line 23
  3. Distinctive:

    Before starting automation setup, verify user has completed manual setup:

    line 57
  4. Distinctive:

    If NO to any: Stop and direct user to complete manual setup first.

    line 64
  5. Very specific:

    Use the Expo workflow template from templates/expo-testflight-workflow.yml:

    line 94
  6. Very specific:

    Use the native iOS workflow template from templates/native-ios-testflight-workflow.yml:

    line 111
  7. Very specific:

    All workflows use the official apple-actions/upload-testflight-build@v3 action:

    line 132
  8. Distinctive:

    Create comprehensive instructions for adding secrets to GitHub repository.

    line 146
  9. Distinctive:

    Add each secret with exact name and value

    line 159
  10. Distinctive:

    Verify all three secrets are added

    line 160
  11. Distinctive:

    Verify build appears in TestFlight

    line 195
  12. Very specific:

    Create and push a new tag: git tag v1.0.1 && git push origin v1.0.1

    line 198
  13. Distinctive:

    Verify build in TestFlight

    line 201
  14. Distinctive:

    Solution: Verify all three values in GitHub secrets match App Store Connect

    line 235
  15. Very specific:

    Solution: Check artifact download path and update app-path in workflow

    line 240
  16. Very specific:

    Debug: Add ls -la step to list files after build

    line 241
  17. Distinctive:

    Solution: Update provisioning profiles in Apple Developer Portal

    line 245
  18. Very specific:

    Solution: Verify on: section matches your git workflow

    line 250
  19. Very specific:

    Test: Use workflow_dispatch for manual testing first

    line 251

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Overview

Automate iOS TestFlight deployments using GitHub Actions after initial manual setup. Use when setting up CI/CD for iOS apps, automating TestFlight uploads, configuring GitHub Actions workflows for mobile apps, or establishing automated deployment pipelines for React Native, Expo, Flutter, or native iOS projects. Requires one-time manual Apple Developer setup before automation can begin. Apply automatically when the request matches; the user does not need to mention this skill.

This skill should apply automatically when the request matches; the user does not need to mention this skill.

Usage

Use this skill when the request matches its description. The skill is discovered automatically; the user does not need to mention the skill explicitly.

iOS TestFlight GitHub Actions Automation

Automate iOS TestFlight deployments using GitHub Actions with the official Apple-Actions/upload-testflight-build action.

When to Use This Skill

Use this skill when:

  • Setting up CI/CD for iOS mobile apps
  • Automating TestFlight uploads after manual first upload
  • User requests "automate TestFlight", "GitHub Actions iOS", or "CI/CD for mobile app"
  • Configuring deployment pipeline for React Native, Expo, Flutter, or native iOS apps
  • Transitioning from manual uploads to automated deployments

Prerequisites

Before using this skill, user MUST complete one-time manual setup:

  1. ✅ Apple Developer account ($99/year)
  2. ✅ App created in App Store Connect
  3. ✅ App Store Connect API key generated
  4. ✅ .p8 private key file downloaded
  5. ✅ First build uploaded successfully via Transporter

If prerequisites are NOT met: Direct user to complete manual setup first using the TestFlight installation guide.

What This Skill Provides

Complete GitHub Actions automation setup including:

  1. GitHub Actions workflow file - .github/workflows/deploy-testflight.yml
  2. Setup instructions - Step-by-step guide for adding secrets
  3. Build configuration - Expo EAS or Xcode build integration
  4. Deployment triggers - Manual, tag-based, or branch-based
  5. Testing guide - How to verify the automation works
  6. Troubleshooting - Common issues and solutions

Core Workflow

Phase 1: Verify Prerequisites

Before starting automation setup, verify user has completed manual setup:

Questions to ask:

  • "Have you successfully uploaded your first build to TestFlight manually?"
  • "Do you have your App Store Connect API key (.p8 file)?"
  • "Do you have the Key ID and Issuer ID from App Store Connect?"

If NO to any: Stop and direct user to complete manual setup first.

If YES to all: Proceed with automation setup.

Phase 2: Gather Project Information

Collect essential details about the project:

Required Information:

  • Project type (Expo, React Native, Flutter, native iOS)
  • Repository location (GitHub repo URL or name)
  • Build method (Expo EAS, Xcode, fastlane)
  • Bundle ID / App ID
  • Deployment trigger preference (manual, on tag, on push to main)

For Expo projects:

  • EAS project ID
  • Expo account credentials (if needed)

For native iOS projects:

  • Xcode project/workspace path
  • Scheme name
  • Build configuration (Release, Production, etc.)

Phase 3: Create GitHub Actions Workflow

Generate .github/workflows/deploy-testflight.yml based on project type.

3.1: Expo Projects

Use the Expo workflow template from templates/expo-testflight-workflow.yml:

Key steps:

  1. Checkout code
  2. Setup Node.js
  3. Install dependencies
  4. Build with EAS (eas build --platform ios --profile production)
  5. Download .ipa artifact
  6. Upload to TestFlight using Apple-Actions

Trigger options:

  • Manual: workflow_dispatch
  • On tag: push: tags: ['v*']
  • On main branch: push: branches: ['main']

3.2: Native iOS / React Native Projects

Use the native iOS workflow template from templates/native-ios-testflight-workflow.yml:

Key steps:

  1. Checkout code
  2. Setup Xcode
  3. Install dependencies (CocoaPods, npm)
  4. Build and archive with xcodebuild
  5. Export .ipa
  6. Upload to TestFlight using Apple-Actions

Build command example:

xcodebuild archive \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -configuration Release \
  -archivePath build/MyApp.xcarchive

3.3: Configure Apple-Actions

All workflows use the official apple-actions/upload-testflight-build@v3 action:

- name: Upload to TestFlight
  uses: apple-actions/upload-testflight-build@v3
  with:
    app-path: path/to/app.ipa
    issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
    api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
    api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}

Phase 4: Setup GitHub Secrets

Create comprehensive instructions for adding secrets to GitHub repository.

Required Secrets:

Secret NameDescriptionHow to Get
APPSTORE_ISSUER_IDApp Store Connect Issuer IDApp Store Connect → Users and Access → Keys → Issuer ID
APPSTORE_API_KEY_IDAPI Key IDApp Store Connect → Users and Access → Keys → Key ID
APPSTORE_API_PRIVATE_KEY.p8 private key contentCopy entire content of AuthKey_XXXXX.p8 file

Step-by-step instructions:

  1. Go to GitHub repository → Settings → Secrets and variables → Actions
  2. Click "New repository secret"
  3. Add each secret with exact name and value
  4. Verify all three secrets are added

For Expo projects, also add:

  • EXPO_TOKEN (if using EAS)

Phase 5: Create Setup Documentation

Generate docs/GITHUB_ACTIONS_SETUP.md with:

Contents:

  1. Overview of the automation
  2. Prerequisites checklist
  3. Step-by-step setup instructions
  4. How to trigger deployments
  5. How to monitor workflow runs
  6. Troubleshooting common issues
  7. Next steps and best practices

Include:

  • Screenshots or ASCII diagrams of GitHub UI
  • Example workflow run output
  • Links to relevant documentation
  • Estimated setup time (15-30 minutes)

Phase 6: Test the Automation

Provide testing instructions:

Manual Trigger Test:

  1. Go to GitHub → Actions tab
  2. Select "Deploy to TestFlight" workflow
  3. Click "Run workflow"
  4. Select branch
  5. Click "Run workflow" button
  6. Monitor progress in real-time
  7. Verify build appears in TestFlight

Tag-Based Trigger Test (if configured):

  1. Create and push a new tag: git tag v1.0.1 && git push origin v1.0.1
  2. Workflow should trigger automatically
  3. Monitor in Actions tab
  4. Verify build in TestFlight

Expected Timeline:

  • Expo builds: 15-30 minutes
  • Native iOS builds: 10-20 minutes
  • TestFlight processing: 5-15 minutes after upload

Phase 7: Deliver and Document

Deliverables:

  1. .github/workflows/deploy-testflight.yml - GitHub Actions workflow
  2. docs/GITHUB_ACTIONS_SETUP.md - Setup instructions
  3. docs/DEPLOYMENT_GUIDE.md - How to use the automation
  4. docs/TROUBLESHOOTING.md - Common issues and solutions

Commit and push files:

git add .github/workflows/deploy-testflight.yml docs/
git commit -m "Add GitHub Actions automation for TestFlight deployments"
git push origin main

Inform user:

  • Automation is ready to use
  • Next steps: Add GitHub secrets
  • How to trigger first automated deployment
  • Where to monitor workflow runs

Troubleshooting

Common Issues

Issue 1: "Invalid API Key"

  • Cause: Incorrect API key, Key ID, or Issuer ID
  • Solution: Verify all three values in GitHub secrets match App Store Connect
  • Check: .p8 file content copied completely including BEGIN/END lines

Issue 2: "Build Not Found"

  • Cause: .ipa file path incorrect
  • Solution: Check artifact download path and update app-path in workflow
  • Debug: Add ls -la step to list files after build

Issue 3: "Code Signing Failed"

  • Cause: Missing or expired provisioning profile
  • Solution: Update provisioning profiles in Apple Developer Portal
  • Note: Expo handles this automatically, native iOS requires manual management

Issue 4: "Workflow Doesn't Trigger"

  • Cause: Incorrect trigger configuration or branch name
  • Solution: Verify on: section matches your git workflow
  • Test: Use workflow_dispatch for manual testing first

Issue 5: "TestFlight Upload Times Out"

  • Cause: Large .ipa file or slow network
  • Solution: Increase timeout in workflow (default 30 minutes)
  • Add: timeout-minutes: 60 to upload step

Success Criteria

A successful automation setup should:

  • GitHub Actions workflow file created and committed
  • All required secrets added to GitHub repository
  • Workflow successfully triggers (manual or automatic)
  • Build completes without errors
  • .ipa file uploads to TestFlight
  • Build appears in TestFlight within 15 minutes
  • Documentation created for team reference
  • User can trigger deployments independently

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.