ios-testflight-github-actions/SKILL.md
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.
npx skillsauth add abcnuts/manus-skills ios-testflight-github-actionsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Automate iOS TestFlight deployments using GitHub Actions with the official Apple-Actions/upload-testflight-build action.
Use this skill when:
Before using this skill, user MUST complete one-time manual setup:
If prerequisites are NOT met: Direct user to complete manual setup first using the TestFlight installation guide.
Complete GitHub Actions automation setup including:
.github/workflows/deploy-testflight.ymlBefore starting automation setup, verify user has completed manual setup:
Questions to ask:
If NO to any: Stop and direct user to complete manual setup first.
If YES to all: Proceed with automation setup.
Collect essential details about the project:
Required Information:
For Expo projects:
For native iOS projects:
Generate .github/workflows/deploy-testflight.yml based on project type.
Use the Expo workflow template from templates/expo-testflight-workflow.yml:
Key steps:
eas build --platform ios --profile production)Trigger options:
workflow_dispatchpush: tags: ['v*']push: branches: ['main']Use the native iOS workflow template from templates/native-ios-testflight-workflow.yml:
Key steps:
Build command example:
xcodebuild archive \
-workspace MyApp.xcworkspace \
-scheme MyApp \
-configuration Release \
-archivePath build/MyApp.xcarchive
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 }}
Create comprehensive instructions for adding secrets to GitHub repository.
Required Secrets:
| Secret Name | Description | How to Get |
|------------|-------------|------------|
| APPSTORE_ISSUER_ID | App Store Connect Issuer ID | App Store Connect → Users and Access → Keys → Issuer ID |
| APPSTORE_API_KEY_ID | API Key ID | App Store Connect → Users and Access → Keys → Key ID |
| APPSTORE_API_PRIVATE_KEY | .p8 private key content | Copy entire content of AuthKey_XXXXX.p8 file |
Step-by-step instructions:
For Expo projects, also add:
EXPO_TOKEN (if using EAS)Generate docs/GITHUB_ACTIONS_SETUP.md with:
Contents:
Include:
Provide testing instructions:
Manual Trigger Test:
Tag-Based Trigger Test (if configured):
git tag v1.0.1 && git push origin v1.0.1Expected Timeline:
Deliverables:
.github/workflows/deploy-testflight.yml - GitHub Actions workflowdocs/GITHUB_ACTIONS_SETUP.md - Setup instructionsdocs/DEPLOYMENT_GUIDE.md - How to use the automationdocs/TROUBLESHOOTING.md - Common issues and solutionsCommit 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:
Issue 1: "Invalid API Key"
Issue 2: "Build Not Found"
app-path in workflowls -la step to list files after buildIssue 3: "Code Signing Failed"
Issue 4: "Workflow Doesn't Trigger"
on: section matches your git workflowworkflow_dispatch for manual testing firstIssue 5: "TestFlight Upload Times Out"
timeout-minutes: 60 to upload stepA successful automation setup should:
tools
Generate comprehensive demonstrations showing how to access projects and work across different environments (Manus terminals, personal computers, team collaboration). Use when users ask "how do I access this from another terminal/computer", "how do I share this with my team", "how do I get this on my Mac", or need clarification on Manus persistence vs GitHub usage.
development
Use when you have a spec or requirements for a multi-step task, before touching code
data-ai
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
development
Use when implementing any feature or bugfix, before writing implementation code