🧪 Skills
TestFlight
--- name: TestFlight slug: testflight version: 1.0.0 homepage: https://clawic.com/skills/testflight description: Distribute iOS and macOS beta builds with TestFlight, tester management, and CI/CD auto
v1.0.0
Description
name: TestFlight slug: testflight version: 1.0.0 homepage: https://clawic.com/skills/testflight description: Distribute iOS and macOS beta builds with TestFlight, tester management, and CI/CD automation. metadata: {"clawdbot":{"emoji":"🛫","requires":{"bins":[]},"os":["darwin"]}}
When to Use
User needs to distribute beta builds via TestFlight. Agent handles App Store Connect setup, tester groups, build uploads, and CI/CD integration.
Quick Reference
| Topic | File |
|---|---|
| CI/CD automation | ci-cd.md |
Core Rules
1. App Store Connect Setup First
Before uploading:
- Bundle ID registered in Developer Portal
- App created in App Store Connect
- App-specific password or API key configured
2. Build Requirements
Every TestFlight build needs:
- Unique build number (CFBundleVersion) - increment ALWAYS
- Valid provisioning profile (App Store distribution)
- No missing compliance declarations
3. Tester Group Strategy
| Group | Purpose | Limit |
|---|---|---|
| Internal | Team members with App Store Connect access | 100 |
| External | Beta testers, requires review | 10,000 |
Internal builds available immediately. External requires Apple review (24-48h first time).
4. Upload Methods
| Method | Best For |
|---|---|
| Xcode | Manual, one-off uploads |
xcrun altool |
Scripts, CI without fastlane |
| Fastlane | Full automation, multiple apps |
| Xcode Cloud | Apple-native CI/CD |
| Transporter | GUI for non-developers |
5. Build Expiration
TestFlight builds expire after 90 days. Plan releases accordingly.
TestFlight Traps
- Build number not incremented - rejected immediately, must bump and rebuild
- Missing export compliance - stuck in "Processing" until answered in App Store Connect
- External testers on first build - requires full beta review, use internal first
- Expired provisioning profile - upload fails silently, check before archiving
- App-specific password in CI - use App Store Connect API key instead (more secure, no 2FA issues)
CI/CD Quick Setup
App Store Connect API Key (Recommended)
- App Store Connect > Users > Keys > App Store Connect API
- Generate key with "App Manager" role
- Download
.p8file (only shown ONCE) - Note: Issuer ID, Key ID
Fastlane Upload
# In Fastfile
lane :beta do
build_app(scheme: "MyApp")
upload_to_testflight(
api_key_path: "fastlane/api_key.json",
skip_waiting_for_build_processing: true
)
end
xcrun altool (No Fastlane)
xcrun altool --upload-app \
--type ios \
--file "MyApp.ipa" \
--apiKey "KEY_ID" \
--apiIssuer "ISSUER_ID"
Security & Privacy
Data that leaves your machine:
- IPA/app binary uploaded to Apple servers
- Build metadata (version, bundle ID, team)
Data that stays local:
- API keys and certificates (keep in Keychain)
- Source code (not uploaded)
This skill does NOT:
- Store Apple credentials in plain text
- Share builds outside Apple's infrastructure
Related Skills
Install with clawhub install <slug> if user confirms:
ios— iOS development patternsxcode— Xcode workflowsflutter— cross-platform builds
Feedback
- If useful:
clawhub star testflight - Stay updated:
clawhub sync
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!