From ios-dev
TestFlight - beta testing, internal/external testers, build distribution
npx claudepluginhub willsigmon/sigstack --plugin ios-devThis skill is limited to using the following tools:
Distribute beta builds and collect feedback through Apple's TestFlight.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides MCP server integration in Claude Code plugins via .mcp.json or plugin.json configs for stdio, SSE, HTTP types, enabling external services as tools.
Distribute beta builds and collect feedback through Apple's TestFlight.
# Fastfile
lane :beta do
build_app(scheme: "App")
upload_to_testflight(
skip_waiting_for_build_processing: true
)
end
lane :beta do
build_app(scheme: "App")
upload_to_testflight(
changelog: "Bug fixes and improvements",
distribute_external: true,
groups: ["Beta Testers"]
)
end
# Create API key in App Store Connect
# Users and Access → Keys → App Store Connect API
# Store credentials
export APP_STORE_CONNECT_API_KEY_ID="XXXXXXXXXX"
export APP_STORE_CONNECT_ISSUER_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export APP_STORE_CONNECT_API_KEY_PATH="~/.appstore/AuthKey.p8"
# Appfile
app_store_connect_api_key(
key_id: ENV["APP_STORE_CONNECT_API_KEY_ID"],
issuer_id: ENV["APP_STORE_CONNECT_ISSUER_ID"],
key_filepath: ENV["APP_STORE_CONNECT_API_KEY_PATH"]
)
# Must be App Store Connect user
# Add manually in App Store Connect
lane :add_testers do
upload_to_testflight(
groups: ["Beta Testers", "VIP Testers"],
distribute_external: true
)
end
# Using app-store-connect-cli
asc testflight add-tester \
--email "tester@example.com" \
--group "Beta Testers" \
--app-id 123456789
name: TestFlight
on:
push:
branches: [main]
jobs:
testflight:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Setup Signing
uses: apple-actions/import-codesign-certs@v2
with:
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
p12-password: ${{ secrets.CERTIFICATES_PASSWORD }}
- name: Build & Upload
run: |
bundle exec fastlane beta
env:
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.ASC_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY: ${{ secrets.ASC_KEY }}
lane :beta do
build_app(scheme: "App")
upload_to_testflight(
skip_waiting_for_build_processing: false,
wait_processing_timeout_duration: 3600
)
# Build is ready for testing
end
lane :beta do
build_app(scheme: "App")
upload_to_testflight(
skip_waiting_for_build_processing: true
)
# Continue without waiting (faster CI)
end
import StoreKit
// Prompt for beta feedback
SKStoreReviewController.requestReview()
lane :beta do
# Auto-increment build number
increment_build_number(
build_number: latest_testflight_build_number + 1
)
build_app(scheme: "App")
upload_to_testflight
end
Use when: Beta distribution, tester management, CI upload automation