Agent skill

Deploy Android

by timusus in timusus/Shuttle2

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

Apache-2.0Auto-check passedMobile

Install Deploy Android

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

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

GitHub CLI
$ gh skill install timusus/Shuttle2 deploy-android --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-android .claude/skills/deploy-android && 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-android
GitHub stars
229
Token cost
~1.2k tokens
SKILL.md length
452 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
Apache-2.0

At a glance

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

  • Works in 7 steps: Pre-flight: Git status → Pre-flight: Full verify (watermark) → Pre-flight: Device checks (skip by… → …
  • The deploy pipeline
  • SKILL.md covers Steps and Error Recovery
  • Calls git and gh

What it does

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.

When your agent uses it

  • The deploy pipeline
  • Tasks that involve Android development
  • Tasks that involve App store release

Example prompts

  • “/deploy-android”

Workflow steps

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

  1. Pre-flight: Git status
  2. Pre-flight: Full verify (watermark)
  3. Pre-flight: Device checks (skip by default)
  4. Calculate version code
  5. Generate changelog
  6. Create and push tag
  7. Monitor deployment

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
    • gh

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

  • Network

    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.

  • 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 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.

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

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). 452 words, ~1,169 tokens.

Download SKILL.mdSave it as .claude/skills/deploy-android/SKILL.md (or your agent's skills folder).
name
deploy-android
description
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.
user_invocable
true

Deploy Android to Play Store

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.

Steps

1. Pre-flight: Git status

Must be on main, clean, and in sync with remote.

bash
# 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 commits

STOP if any check fails. Tell the user what needs fixing:

  • Wrong branch → git checkout main
  • Uncommitted changes → commit or stash
  • Local behind remote → git pull origin main
  • Local ahead of remote → git push origin main
2. Pre-flight: Full verify (watermark)

Landings only run a light verify; the full one is recorded as a watermark. Before tagging, the watermark must cover the commit being released:

bash
support/scripts/full-verify.sh --covers "$(git rev-parse HEAD)"   # exit 0 = covered

It 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):

bash
support/scripts/longjob.sh start full-verify -- support/scripts/full-verify.sh "$(git rev-parse HEAD)"
support/scripts/longjob.sh wait full-verify

STOP 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.

3. Pre-flight: Device checks (skip by default)

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.

4. Calculate version code

The version scheme is vYYMMDDNN where NN is the daily sequence number.

bash
# 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)"

Show full SKILL.md (180 more words)Show less
5. Generate changelog

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:

bash
git add -A android/app/src/main/assets/changelog.json android/changelog.d
git commit -m "docs(app): update changelog for $VERSION_NAME"
6. Create and push tag

Confirm with the user before pushing: "Ready to push tag $TAG to trigger deployment?"

bash
git tag "$TAG"
git push origin main && git push origin "$TAG"
7. Monitor deployment
bash
gh run watch

Or show the user how to monitor:

gh run list --workflow=continuous_deployment.yml
gh run view --web

The pipeline will:

  1. Build release bundle
  2. Upload to Play Store Internal track

Error Recovery

  • Test failures: Investigate and report — never skip tests
  • Tag already exists: Increment the revision number (NN) and retry
  • Push rejected: Check if main is behind remote (git pull origin main)
  • Changelog JSON invalid: Show the error, help fix the JSON syntax

© 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-android of timusus/Shuttle2.

Open the folder on GitHubat commit 116c579

Compare with similar skills

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.

Deploy Android compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deploy Android this skilltimusus/Shuttle2229—~1.2kAutomated safety check: PassApache-2.0
Mobile App Builderrevfactory/harness-1001.3k—~1.8kAutomated safety check: PassApache-2.0
Wjs Auditing Projectjianshuo/claude-skills130—~2.5kAutomated safety check: PassMIT
Kt Search Releasejillesvangurp/kt-search155—~1.2kAutomated safety check: PassMIT
Post Edit VerificationGerardPaligot/Confily152—~1.1kAutomated safety check: PassApache-2.0
ReleaseHedvigInsurance/android154—~546Automated safety check: PassAGPL-3.0

Similar skills

  • Mobile App Builder

    revfactory/harness-100

    Full mobile app development pipeline. An agent skill from revfactory/harness-100.

    1.3k GitHub stars~1.8k tokensUpdated 6 mo ago
    MobileAuto-check passed
  • Wjs Auditing Project

    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…

    130 GitHub stars~2.5k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Kt Search Release

    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…

    155 GitHub stars~1.2k tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • Post Edit Verification

    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.

    152 GitHub stars~1.1k tokensUpdated 10 days ago
    MobileAuto-check passed
  • Release

    HedvigInsurance/android

    Cut a production release of the Android app (git flow release, version bump, push to trigger the Play Store upload).

    154 GitHub stars~546 tokensUpdated today
    MobileAuto-check passed
  • Capturing Preview Screenshots In CI

    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.

    333 GitHub stars~4.5k tokensUpdated 4 mo ago
    MobileAuto-check: notes

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
  • 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
  • Delegate Verbose

    timusus/Shuttle2

    Run high-volume work in a subagent so its raw output never enters this conversation.

    229 GitHub stars~864 tokensUpdated yesterday
    Auto-check passed

Questions about Deploy Android

What does Deploy Android do?

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.

When should I use Deploy Android?

Deploy Android fits situations like: the deploy pipeline; tasks that involve Android development; tasks that involve App store release.

How do I install Deploy Android in Claude Code?

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.

How do I install Deploy Android in Codex?

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.

Can I use Deploy Android 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-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.

What does Deploy Android need to run?

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

Does Deploy Android access the network?

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.

Is Deploy Android 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 Android use?

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.

How many tokens does Deploy Android use?

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.

What are the alternatives to Deploy Android?

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.

Who maintains Deploy Android?

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.