Agent skill

Deploy iOS

by timusus in timusus/Shuttle2

Deploy Shuttle Music for iOS to TestFlight from this Mac. An agent skill from timusus/Shuttle2.

Apache-2.0Auto-check passedMobile

Install Deploy iOS

skills CLI
$ npx skills add timusus/Shuttle2 --skill deploy-ios -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install timusus/Shuttle2 deploy-ios --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/timusus/Shuttle2.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/deploy-ios .claude/skills/deploy-ios && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
deploy-ios
GitHub stars
229
Token cost
~1.1k tokens
SKILL.md length
494 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
Apache-2.0

At a glance

Deploy Shuttle Music for iOS to TestFlight from this Mac. An agent skill from timusus/Shuttle2.

  • Works in 7 steps: Pre-flight: Git status → Pre-flight: iOS builds → Pre-flight: Xcode account → …
  • Tasks that involve App store release
  • Calls git

What it does

Deploy iOS is an agent skill from timusus/Shuttle2. Deploy Shuttle Music for iOS to TestFlight from this Mac. Runs pre-flight checks, archives and uploads via ios/archive-and-upload.sh, then records the release with an ios/vYYMMDDNN tag.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile, covering App store release. It works with iOS, App Store Connect, Git and Xcode. The repository describes itself as: Shuttle Music: a music player for Android and iOS. Plays local files and streams from Jellyfin, Emby, Plex and Navidrome/Subsonic, with Chromecast, Android Auto, EQ and replay… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve App store release

Example prompts

  • “/deploy-ios”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Pre-flight: Git status
  2. Pre-flight: iOS builds
  3. Pre-flight: Xcode account
  4. Pick the tag
  5. Confirm with the user, then archive and upload
  6. Record the release
  7. Find the build

What it can do on your machine

Read from SKILL.md and the folder at commit 116c579. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deploy iOS loads about 1.1k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 494 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~49
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from timusus/Shuttle2 at commit 116c579, republished under its Apache-2.0 licence (© timusus). 494 words, ~1,114 tokens.

Download SKILL.mdSave it as .claude/skills/deploy-ios/SKILL.md (or your agent's skills folder).
name
deploy-ios
description
Deploy Shuttle Music for iOS to TestFlight from this Mac. Runs pre-flight checks, archives and uploads via ios/archive-and-upload.sh, then records the release with an ios/vYYMMDDNN tag.
user_invocable
true

Deploy iOS to TestFlight (local)

The deploy runs entirely on this Mac via ios/archive-and-upload.sh — no CI. The repo is public, so a self-hosted runner is not acceptable (a forked PR could run code on the signing Mac); the ios/vYYMMDDNN tag is only the release record, pushed after a successful upload. Details and one-time setup: ios/DEPLOY.md.

Steps

1. Pre-flight: Git status

Same as deploy-android: on main, clean tree, HEAD == origin/main after git fetch origin main. STOP and tell the user what to fix if not.

2. Pre-flight: iOS builds

The Mac must be free; take the build through a longjob, never a long foreground call.

bash
support/scripts/longjob.sh start ios-preflight -- sh -c 'ios/scripts/build-framework.sh -q && cd ios && xcodegen generate && cd .. && ios/scripts/build-app.sh --force'
support/scripts/longjob.sh wait ios-preflight

--force makes this a real compile and relink at the release commit, never a skipped build. It also builds the test target, so a test-target compile error blocks the preflight; that is intended.

If iOS changed since the last full verify, also run ios/scripts/test.sh. STOP on failure.

3. Pre-flight: Xcode account

The deploy signs with Xcode's signed-in account (developer@simplecityapps.com, team 9HYNX943MQ), not an API key: no key flags, so the export signs automatically and always has current profiles. If the export fails on signing, ask the user to check Xcode > Settings > Accounts (ios/DEPLOY.md).

4. Pick the tag

Format ios/vYYMMDDNN: NN is the highest existing ios/v${TODAY}NN — local tags and origin's (git ls-remote) — plus one, else 01. Build number is the tag's eight digits; the script derives the marketing version (20YY.MM.DD) from it. Compute TAG and BUILD_NUMBER here, once, and reuse both in steps 5 and 6 — never recompute TODAY later (a deploy that crosses midnight must not mint a different tag than the build it uploaded).

bash
git fetch --tags origin
TODAY=$(date +%y%m%d)
LAST_NN=$( { git tag -l "ios/v${TODAY}??"; git ls-remote --tags origin "refs/tags/ios/v${TODAY}??"; } \
  | sed -E "s/^.*ios\/v${TODAY}//; s/\^\{\}$//" | sort -n | tail -1)
NN=$(printf '%02d' $((10#${LAST_NN:-0} + 1)))
TAG="ios/v${TODAY}${NN}"
BUILD_NUMBER="${TODAY}${NN}"
Show full SKILL.md (225 more words)Show less
5. Confirm with the user, then archive and upload

Ask before every upload — it is outward-facing. State the tag, build number and marketing version, and offer a dry run (--no-upload, IPA lands in ios/build/export) before the real thing.

bash
support/scripts/longjob.sh start ios-deploy -- ios/archive-and-upload.sh \
  --build-number "$BUILD_NUMBER"
# dry run: add --no-upload
support/scripts/longjob.sh wait ios-deploy

The script builds FFmpeg and the Release iosArm64 Shared.framework itself (add --skip-shared-framework only if they were just built). On failure: ios/build/archive.log / ios/build/export.log; a spent build number needs NN+1, so move to a fresh tag.

6. Record the release

Two conditions, both required: longjob.sh wait ios-deploy exited 0 and the run was a real upload — not a --no-upload dry run. The tag marks an uploaded build, so a failed attempt or dry run records nothing and the next attempt picks NN+1:

bash
git tag "$TAG"
git push origin "$TAG"

(git push of a tag is its own bare command.) The tag triggers nothing — no workflow watches it.

7. Find the build

App Store Connect > Shuttle Music (id 6818057709) > TestFlight. Processing takes 5-30 minutes. Report the tag, build number and IPA path.

App Store Connect via API

Use support/scripts/asc, not Chrome (credentials from ~/.secrets/asc.env): apps, builds [--limit N], testflight groups|testers <group>|add-tester <group> <email> [first] [last]|add-build <group> <build>|submit-review <build>, review-info [set --notes ...|--contact-email ...|--demo-user ... --demo-password-env VAR], whats-new <build> "<text>". Writes need --yes (--dry-run shows the request); ask the owner first, they are outward-facing. Chrome is only for agreements, tax and banking, and the App Privacy questionnaire. Details: ios/DEPLOY.md.

© timusus, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/deploy-ios of timusus/Shuttle2.

Open the folder on GitHubat commit 116c579

Compare with similar skills

Deploy iOS next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Deploy iOS compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deploy iOS this skilltimusus/Shuttle2229—~1.1kAutomated safety check: PassApache-2.0
Remote Installericodesign/remote-installer106—~4kAutomated safety check: PassMIT
Mobile App Developerhappycapy-ai/Happycapy-skills137—~1.3kAutomated safety check: PassMIT
App Store Deploymakifbaysal/tasktrooper109—~1.6kAutomated safety check: PassApache-2.0
App Store Preflight Skillstruongduy2611/app-store-preflight-skills1.4k—~1.4kAutomated safety check: PassMIT
OdevioOdevio/Odevio-CLI423—~7.6kAutomated safety check: PassMIT

Similar skills

  • Remote Installer

    icodesign/remote-installer

    Put an iOS or Android build on a real phone or tablet over the air with the remote-installer CLI — it validates the build, opens a temporary HTTPS tunnel, and prints one or more install URLs plus QR…

    106 GitHub stars~4k tokensUpdated 7 days ago
    MobileAuto-check passed
  • Mobile App Developer

    happycapy-ai/Happycapy-skills

    End-to-end mobile app development and publishing using Expo + EAS.

    137 GitHub stars~1.3k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • App Store Deploy

    makifbaysal/tasktrooper

    A skill your agent uses when a mobile app needs a release pipeline - fastlane GitHub Actions to TestFlight (iOS) and Play internal track (Android), with code signing and the release naming that maps…

    109 GitHub stars~1.6k tokensUpdated yesterday
    MobileAuto-check passed
  • App Store Preflight Skills

    truongduy2611/app-store-preflight-skills

    Scan an iOS/macOS Xcode project for common App Store rejection patterns before submission.

    1.4k GitHub stars~1.4k tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Odevio

    Odevio/Odevio-CLI

    Take a Flutter project to an iPhone or the App Store with Odevio - build, sign and publish iOS apps from Windows, Linux or macOS with no Mac and no Xcode.

    423 GitHub stars~7.6k tokensUpdated 13 days ago
    MobileAuto-check passed
  • iOS App Store Submit

    ZestfulPulse/ios-app-store-submit

    Build, sign, and submit a Flutter/iOS app to the App Store Connect — covers Xcode archive/export, code signing (including headless-Mac keychain workarounds), the asc CLI for App Store Connect…

    142 GitHub stars~4.7k tokensUpdated 6 days ago
    MobileAuto-check passed

More from timusus/Shuttle2

All 13 skills in this repo
  • Comprehensive guidance for writing deterministic tests for Android code using Kotlin coroutines.

    229 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Debug Receivers

    timusus/Shuttle2

    Drive the S2 debug build's playback and queue over ADB broadcasts — play the whole library, play/pause, skip, seek, remove a queue item, toggle shuffle/repeat, dump playback state as JSON, reimport…

    229 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Deploy Android

    timusus/Shuttle2

    Deploy the Android app to the Play Store via GitHub Actions.

    229 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Reply Reviews

    timusus/Shuttle2

    Weekly Play Store review flow for S2: fetch new reviews, draft replies, get owner approval, then post.

    229 GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • Check

    timusus/Shuttle2

    Run lint + unit tests, investigate and fix failures. An agent skill from timusus/Shuttle2.

    229 GitHub stars~449 tokensUpdated yesterday
    Auto-check passed
  • Commit

    timusus/Shuttle2

    Analyse working tree changes, group them into logical atomic commits, and create well-structured conventional commits with module scopes.

    229 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check: notes

Categories

Questions about Deploy iOS

What does Deploy iOS do?

Deploy Shuttle Music for iOS to TestFlight from this Mac. An agent skill from timusus/Shuttle2. Deploy iOS is an agent skill from timusus/Shuttle2. Deploy Shuttle Music for iOS to TestFlight from this Mac.

When should I use Deploy iOS?

Deploy iOS fits situations like: tasks that involve App store release.

How do I install Deploy iOS in Claude Code?

Run `npx skills add timusus/Shuttle2 --skill deploy-ios -a claude-code`. Or copy the skill folder (.claude/skills/deploy-ios in timusus/Shuttle2) into .claude/skills/deploy-ios in your project. Claude Code loads it when a task matches its description.

How do I install Deploy iOS in Codex?

Run `npx skills add timusus/Shuttle2 --skill deploy-ios -a codex`. Or copy the skill folder (.claude/skills/deploy-ios in timusus/Shuttle2) into .agents/skills/deploy-ios in your project. Codex loads it when a task matches its description.

Can I use Deploy iOS in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add timusus/Shuttle2 --skill deploy-ios -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deploy-ios, .gemini/skills/deploy-ios, .github/skills/deploy-ios and .opencode/skills/deploy-ios in your project.

What does Deploy iOS need to run?

Going by SKILL.md and its folder, Deploy iOS needs the command-line tools its instructions call (git).

Does Deploy iOS access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Deploy iOS safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Deploy iOS use?

Deploy iOS is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deploy iOS use?

About 1.1k tokens (SKILL.md is roughly 4.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deploy iOS?

Skills that share tags, products or a category with Deploy iOS: Remote Installer (icodesign/remote-installer, 106 stars), Mobile App Developer (happycapy-ai/Happycapy-skills, 137 stars), App Store Deploy (makifbaysal/tasktrooper, 109 stars) and App Store Preflight Skills (truongduy2611/app-store-preflight-skills, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deploy iOS?

timusus (a GitHub user) maintains it in timusus/Shuttle2, which has 229 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 6, 2026.

Source: timusus/Shuttle2 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.