Mobile App Builder
revfactory/harness-100
Full mobile app development pipeline. An agent skill from revfactory/harness-100.
Deploy the Android app to the Play Store via GitHub Actions.
$ npx skills add timusus/Shuttle2 --skill deploy-android -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install timusus/Shuttle2 deploy-android --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-android .claude/skills/deploy-android && 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-android" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-android into .claude/skills/deploy-android/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-android", 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-androidType 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-android -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install timusus/Shuttle2 deploy-android --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-android .agents/skills/deploy-android && 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-android" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-android into .agents/skills/deploy-android/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-android", 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-android -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install timusus/Shuttle2 deploy-android --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-android .cursor/skills/deploy-android && 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-android" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-android into .cursor/skills/deploy-android/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-android", 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-android--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-android -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install timusus/Shuttle2 deploy-android --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-android .gemini/skills/deploy-android && 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-android" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-android into .gemini/skills/deploy-android/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-android", 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-androidInstalls 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-android -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-android .github/skills/deploy-android && 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-android" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-android into .github/skills/deploy-android/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-android", 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-android -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-android --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-android .opencode/skills/deploy-android && 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-android" agent skill from https://github.com/timusus/Shuttle2/tree/main/.claude/skills/deploy-android into .opencode/skills/deploy-android/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy-android", 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-androidDeploy the Android app to the Play Store via GitHub Actions.
Deploy Android is an agent skill from timusus/Shuttle2. Deploy the Android app to the Play Store via GitHub Actions. Runs pre-flight checks, creates a version tag, and pushes to trigger the deploy pipeline.
Its SKILL.md is about 1.2k 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 Android development, App store release and CI/CD. It works with Android, GitHub Actions and Git. 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:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, 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 Android loads about 1.2k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 452 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). 452 words, ~1,169 tokens.
.claude/skills/deploy-android/SKILL.md (or your agent's skills folder).Orchestrate a release of the Android app. This creates a v* tag that triggers the GitHub Actions continuous_deployment.yml pipeline (build → upload to Play Store Internal track).
No direct builds or uploads. The tag push triggers GitHub Actions which handles everything.
Must be on main, clean, and in sync with remote.
# Must be on main
git branch --show-current
# No uncommitted changes
git diff --quiet && git diff --cached --quiet
# No untracked files (excluding known untracked dirs)
git ls-files --others --exclude-standard
# Fetch and verify local matches remote
git fetch origin main
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/main)
# LOCAL must equal REMOTE — no unpushed or missing commitsSTOP if any check fails. Tell the user what needs fixing:
git checkout maingit pull origin maingit push origin mainLandings only run a light verify; the full one is recorded as a watermark. Before tagging, the watermark must cover the commit being released:
support/scripts/full-verify.sh --covers "$(git rev-parse HEAD)" # exit 0 = coveredIt passes when the watermark is HEAD, or an ancestor of it with only the changelog files from
step 5 changed since. If it exits non-zero, run the full verify (one wait; takes a while):
support/scripts/longjob.sh start full-verify -- support/scripts/full-verify.sh "$(git rev-parse HEAD)"
support/scripts/longjob.sh wait full-verifySTOP if it fails — it files (or comments on) a bug issue naming the step; do not tag. Exit 3 means an
infrastructure problem (lock, worktree, local.properties), not a test failure: fix it and rerun.
There are no instrumented tests; on-device coverage is the Maestro flows. Skip them unless the user
explicitly asks, then run the device smoke set with support/scripts/emu-verify.sh --suite (see
the emulator-check skill). If no emulator lane is free or the user skips, note it and continue.
The version scheme is vYYMMDDNN where NN is the daily sequence number.
# Fetch tags
git fetch --tags
# Calculate
YY=$(date +%y)
MM=$(date +%m)
DD=$(date +%d)
BASE_CODE=$((YY * 1000000 + 10#$MM * 10000 + 10#$DD * 100))
# Count existing tags for today to determine revision
TODAY_PATTERN="v${YY}${MM}${DD}"
EXISTING=$(git tag -l "${TODAY_PATTERN}*" 2>/dev/null | wc -l | tr -d ' ')
REV=$((EXISTING + 1))
VERSION_CODE=$((BASE_CODE + REV))
VERSION_NAME="20${YY}.${MM}.${DD}"
TAG="v${VERSION_CODE}"Tell the user: "Version: $VERSION_NAME (code: $VERSION_CODE, tag: $TAG)"
Invoke /generate-changelog with VERSION_NAME and TAG from step 4.
This builds the entry from the fragments in android/changelog.d/ (audited against commits since
SINCE), updates android/app/src/main/assets/changelog.json (in-app changelog), deletes the
consumed fragments and sets SINCE to $TAG.
Before generating, check android/changelog.d/SINCE names the tag this release replaces (the last
tag that actually shipped to users). If it disagrees with git describe, SINCE wins — a tag
can point at a build that was withdrawn.
The changelog and fragment cleanup must be committed together before creating the tag, so the tagged commit includes them:
git add -A android/app/src/main/assets/changelog.json android/changelog.d
git commit -m "docs(app): update changelog for $VERSION_NAME"Confirm with the user before pushing: "Ready to push tag $TAG to trigger deployment?"
git tag "$TAG"
git push origin main && git push origin "$TAG"gh run watchOr show the user how to monitor:
gh run list --workflow=continuous_deployment.yml
gh run view --webThe pipeline will:
git pull origin main)© 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-android of timusus/Shuttle2.
Open the folder on GitHubat commit 116c579
Deploy Android 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 Android this skilltimusus/Shuttle2 | 229 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Mobile App Builderrevfactory/harness-100 | 1.3k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Wjs Auditing Projectjianshuo/claude-skills | 130 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Kt Search Releasejillesvangurp/kt-search | 155 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Post Edit VerificationGerardPaligot/Confily | 152 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| ReleaseHedvigInsurance/android | 154 | — | ~546 | Automated safety check: Pass | AGPL-3.0 |
revfactory/harness-100
Full mobile app development pipeline. An agent skill from revfactory/harness-100.
jianshuo/claude-skills
A skill your agent uses when the user asks to audit what's wrong with a project, "make it right", "看看项目出了什么问题", "为什么用户的需求还没上线", "为什么没提交App Store", "为什么没新build", or wants a holistic…
jillesvangurp/kt-search
A skill your agent uses when the user wants to cut, publish, tag, or create a GitHub release for kt-search, especially when the task includes version bumping, validating that commits are pushed…
GerardPaligot/Confily
Use this skill after every working session where Kotlin or Android code was created or modified, and ALWAYS before committing, opening a PR, or reporting work as done.
HedvigInsurance/android
Cut a production release of the Android app (git flow release, version bump, push to trigger the Play Store upload).
skydoves/android-testing-skills
A skill your agent uses to render every Jetpack Compose @Preview as a screenshot on a real Android device or emulator and publish a browsable HTML catalog from CI.
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
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.
timusus/Shuttle2
Run high-volume work in a subagent so its raw output never enters this conversation.
Works with
Categories
Deploy the Android app to the Play Store via GitHub Actions. Deploy Android is an agent skill from timusus/Shuttle2. Deploy the Android app to the Play Store via GitHub Actions.
Deploy Android fits situations like: the deploy pipeline; tasks that involve Android development; tasks that involve App store release.
Run `npx skills add timusus/Shuttle2 --skill deploy-android -a claude-code`. Or copy the skill folder (.claude/skills/deploy-android in timusus/Shuttle2) into .claude/skills/deploy-android in your project. Claude Code loads it when a task matches its description.
Run `npx skills add timusus/Shuttle2 --skill deploy-android -a codex`. Or copy the skill folder (.claude/skills/deploy-android in timusus/Shuttle2) into .agents/skills/deploy-android 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-android -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-android, .gemini/skills/deploy-android, .github/skills/deploy-android and .opencode/skills/deploy-android in your project.
Going by SKILL.md and its folder, Deploy Android needs the command-line tools its instructions call (git and gh).
SKILL.md contains no URLs. Its commands use git and gh, 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 Android 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.2k tokens (SKILL.md is roughly 4.7k 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 Android: Mobile App Builder (revfactory/harness-100, 1.3k stars), Wjs Auditing Project (jianshuo/claude-skills, 130 stars), Kt Search Release (jillesvangurp/kt-search, 155 stars) and Post Edit Verification (GerardPaligot/Confily, 152 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.