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…
Deploy Shuttle Music for iOS to TestFlight from this Mac. An agent skill from timusus/Shuttle2.
$ npx skills add timusus/Shuttle2 --skill deploy-ios -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install timusus/Shuttle2 deploy-ios --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "deploy-ios" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-ios into .claude/skills/deploy-ios/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-ios", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-iosType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add timusus/Shuttle2 --skill deploy-ios -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install timusus/Shuttle2 deploy-ios --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timusus/Shuttle2.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/deploy-ios .agents/skills/deploy-ios && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "deploy-ios" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-ios into .agents/skills/deploy-ios/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-ios", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add timusus/Shuttle2 --skill deploy-ios -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install timusus/Shuttle2 deploy-ios --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timusus/Shuttle2.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/deploy-ios .cursor/skills/deploy-ios && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "deploy-ios" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-ios into .cursor/skills/deploy-ios/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-ios", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/timusus/Shuttle2.git --path .claude/skills/deploy-ios--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add timusus/Shuttle2 --skill deploy-ios -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install timusus/Shuttle2 deploy-ios --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timusus/Shuttle2.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/deploy-ios .gemini/skills/deploy-ios && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "deploy-ios" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-ios into .gemini/skills/deploy-ios/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-ios", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install timusus/Shuttle2 deploy-iosInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add timusus/Shuttle2 --skill deploy-ios -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/timusus/Shuttle2.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/deploy-ios .github/skills/deploy-ios && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "deploy-ios" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-ios into .github/skills/deploy-ios/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-ios", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add timusus/Shuttle2 --skill deploy-ios -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install timusus/Shuttle2 deploy-ios --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timusus/Shuttle2.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/deploy-ios .opencode/skills/deploy-ios && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "deploy-ios" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-ios into .opencode/skills/deploy-ios/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-ios", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
deploy-iosDeploy 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. 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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 116c579. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from timusus/Shuttle2 at commit 116c579, republished under its Apache-2.0 licence (© timusus). 494 words, ~1,114 tokens.
.claude/skills/deploy-ios/SKILL.md (or your agent's skills folder).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.
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.
The Mac must be free; take the build through a longjob, never a long foreground call.
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.
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).
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).
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}"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.
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-deployThe 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.
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:
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.
App Store Connect > Shuttle Music (id 6818057709) > TestFlight. Processing takes 5-30 minutes. Report the tag, build number and IPA path.
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
Just SKILL.md in .claude/skills/deploy-ios of timusus/Shuttle2.
Open the folder on GitHubat commit 116c579
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Deploy iOS this skilltimusus/Shuttle2 | 229 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Remote Installericodesign/remote-installer | 106 | — | ~4k | Automated safety check: Pass | MIT | |
| Mobile App Developerhappycapy-ai/Happycapy-skills | 137 | — | ~1.3k | Automated safety check: Pass | MIT | |
| App Store Deploymakifbaysal/tasktrooper | 109 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| App Store Preflight Skillstruongduy2611/app-store-preflight-skills | 1.4k | — | ~1.4k | Automated safety check: Pass | MIT | |
| OdevioOdevio/Odevio-CLI | 423 | — | ~7.6k | Automated safety check: Pass | MIT |
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…
happycapy-ai/Happycapy-skills
End-to-end mobile app development and publishing using Expo + EAS.
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…
truongduy2611/app-store-preflight-skills
Scan an iOS/macOS Xcode project for common App Store rejection patterns before submission.
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.
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…
timusus/Shuttle2
Comprehensive guidance for writing deterministic tests for Android code using Kotlin coroutines.
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…
timusus/Shuttle2
Deploy the Android app to the Play Store via GitHub Actions.
timusus/Shuttle2
Weekly Play Store review flow for S2: fetch new reviews, draft replies, get owner approval, then post.
timusus/Shuttle2
Run lint + unit tests, investigate and fix failures. An agent skill from timusus/Shuttle2.
timusus/Shuttle2
Analyse working tree changes, group them into logical atomic commits, and create well-structured conventional commits with module scopes.
Works with
Categories
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.
Deploy iOS fits situations like: tasks that involve App store release.
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.
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.
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.
Going by SKILL.md and its folder, Deploy iOS needs the command-line tools its instructions call (git).
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.
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.
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.
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.
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.
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.