Skip to content
Conduit

skill

claude-testflight-skill

Claude Code skill for one-command iOS TestFlight deployment via SSH

KewkLW/claude-testflight-skillcommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/KewkLW/claude-testflight-skill itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 26, 2026

claude-testflight-skill

A Claude Code skill that deploys iOS apps to TestFlight in one command. Works locally on a Mac or remotely via SSH to a Mac build host.

What it does

Type /testflight in Claude Code and it:

  1. Bumps the build number (auto-increment or explicit)
  2. Unlocks the keychain for codesigning
  3. Archives and exports an IPA
  4. Uploads to App Store Connect via altool
  5. Reports the delivery UUID

Works in two modes:

  • Local — running Claude Code directly on a Mac. The deploy script runs on the same machine.
  • Remote — running Claude Code on Windows/Linux. The skill SSHs to a Mac to build and upload.

Optional sync mode copies web assets (Capacitor, Ionic, etc.) to the build location before archiving.

Install

git clone https://github.com/KewkLW/claude-testflight-skill.git
cd claude-testflight-skill
./install.sh

This copies the skill into ~/.claude/skills/testflight/.

Manual install

mkdir -p ~/.claude/skills/testflight
cp skills/testflight/SKILL.md ~/.claude/skills/testflight/

Setup

1. Deploy script

Copy scripts/deploy-testflight.sh to your iOS project:

# Local mode — already on this Mac
cp scripts/deploy-testflight.sh ~/your-app/
chmod +x ~/your-app/deploy-testflight.sh

# Remote mode — copy to the build Mac
scp scripts/deploy-testflight.sh user@your-mac:~/your-app/
ssh user@your-mac "chmod +x ~/your-app/deploy-testflight.sh"

2. Configure your project

cp examples/.testflight.env.example /path/to/your/project/.testflight.env
# Edit .testflight.env with your values

Add .testflight.env to your .gitignore.

3. SSH access (remote mode only)

ssh-copy-id user@your-mac
ssh user@your-mac "echo ok"

Usage

CommandDescription
/testflightAuto-increment build number, archive, export, upload
/testflight 42Deploy with build number 42
/testflight syncSync web assets first, then deploy

Configuration reference

VariableRequiredDescription
TF_MAC_HOSTNolocal (default) or SSH user@host for remote builds
TF_PROJECT_DIRYesProject directory (local path or path on the Mac)
TF_DEPLOY_SCRIPTNoDeploy script filename (default: deploy-testflight.sh)
TF_SCHEMENoXcode scheme (default: App)
TF_XCODEPROJNo.xcodeproj filename (default: App.xcodeproj)
TF_IOS_DIRNoOverride Xcode project location (default: <project>/ios/App)
TF_API_KEYYesApp Store Connect API key ID
TF_API_ISSUERYesApp Store Connect API issuer UUID
TF_TEAM_IDYesApple Developer Team ID
TF_KEYCHAIN_PASSSSH/headlessLogin keychain password (optional for local interactive use)
TF_SYNC_SOURCESync onlyDirectory to sync from
TF_SYNC_DESTSync onlyDirectory to sync to
TF_SYNC_FILESNoSpace-separated file list (default: sync all)

Requirements

  • Claude Code CLI, desktop app, or web app
  • macOS with Xcode, valid signing identity, and App Store Connect API key
  • For remote mode: SSH access from your dev machine to the Mac

Troubleshooting

ErrorFix
errSecInternalComponentKeychain not unlocked — set TF_KEYCHAIN_PASS or approve the GUI prompt
CURRENT_PROJECT_VERSION duplicateBuild number already uploaded — bump or let auto-increment handle it
Missing code-signing certificateEnsure security default-keychain -s runs before export
SSH timeoutUse LAN IP for build machines on the same network
Keychain GUI prompt (local)Set TF_KEYCHAIN_PASS to skip the GUI prompt

License

MIT — see LICENSE.

↑↓ navigate openesc close