Agent skill

Release Whisker

by whiskerrs in whiskerrs/whisker

Prepare or publish a Whisker release across Rust crates, Android SDK, Gradle plugin, and SwiftPM; recover a partial release or diagnose a missing SDK pin.

Apache-2.0Auto-check passedMobile

Install Release Whisker

skills CLI
$ npx skills add whiskerrs/whisker --skill release-whisker -a claude-code

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

GitHub CLI
$ gh skill install whiskerrs/whisker release-whisker --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/whiskerrs/whisker.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release-whisker .claude/skills/release-whisker && 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
release-whisker
GitHub stars
140
Token cost
~2k tokens
SKILL.md length
997 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Prepare or publish a Whisker release across Rust crates, Android SDK, Gradle plugin, and SwiftPM; recover a partial release or diagnose a missing SDK pin.

  • Works in 4 steps: Build and publish selected Android SDK /… → Build the public Swift package before… → After all selected native jobs succeed,… → …
  • Tasks that involve Android development
  • SKILL.md covers Prepare one release, Preview selection locally, Publication order and Choose the streams, plus 2 more sections
  • Calls cargo, git and gh

What it does

Release Whisker is an agent skill from whiskerrs/whisker. Prepare or publish a Whisker release across Rust crates, Android SDK, Gradle plugin, and SwiftPM; recover a partial release or diagnose a missing SDK pin.

Its SKILL.md is about 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. It works with Gradle, Rust, Swift and Android. The repository describes itself as: Build native iOS, Android, web and desktop apps in Rust. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Android development

Example prompts

  • “/release-whisker”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Build and publish selected Android SDK / Gradle plugin artifacts to Maven.
  2. Build the public Swift package before creating its selected v
  3. After all selected native jobs succeed, verify reused SDKs too, then use
  4. Verify every selected crate version in the registry, then create one

What it can do on your machine

Read from SKILL.md and the folder at commit 86cd454. 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:

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

Release Whisker loads about 2k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 997 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~43
When it runs · the whole SKILL.md, loaded when a task matches
~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 whiskerrs/whisker at commit 86cd454, republished under its Apache-2.0 licence (© whiskerrs). 997 words, ~1,979 tokens.

Download SKILL.mdSave it as .claude/skills/release-whisker/SKILL.md (or your agent's skills folder).
name
release-whisker
description
Prepare or publish a Whisker release across Rust crates, Android SDK, Gradle plugin, and SwiftPM; recover a partial release or diagnose a missing SDK pin.

Release Whisker

Use .github/workflows/release.yml. Release logic lives in cargo xtask release; no release-plz installation is needed.

Prepare one release

Run the release workflow on main with these inputs:

InputMeaning
release_idRequired identifier independent of versions, such as 20260908.1; increment the suffix for another release that day
versionNew core version; leave blank for packages-only releases
package_versionsOptional JSON overrides such as {"whisker-router":"minor","whisker-input":"0.15.0"}; values accept patch, minor, major, or a stable version
sdk_version, gradle_version, ios_versionNew native versions when those sources changed; blanks reuse current pins
subsecond_versionExplicit version for the independently versioned fork

Core means publishable crates in crates/ and platforms/, except whisker-subsecond. Core releases update the group together and pin core-to-core dependencies to the exact version. Each packages/<directory> is a separate version group, including nested web/desktop crates. Override keys use directory names. Every crate within a group must share its version.

Preparation compares packaged files and resolved manifest metadata with the last completed release. Changed package groups receive a patch bump by default. An override also selects an unchanged group. If a dependency's new version falls outside an unselected group's requirement, that group is selected too. Core or fork changes require their explicit version inputs. Unchanged package groups keep their versions and dependency requirements; selected packages receive compatible minimum versions of their local dependencies. Review patch proposals for API compatibility, especially new APIs or breaking changes that require a core release or a larger version bump.

Package versions and internal dependency requirements are detached from workspace inheritance during preparation. Native pin updates participate in change detection: updating CLI/CNG pins requires a core release, and updating module SwiftPM manifests selects the affected packages. Excluded files and root Cargo.lock-only changes do not automatically select crates; explicitly request a version when a lockfile change needs a new CLI binary.

Preparation rejects omitted native streams with changes since their pinned tag, incomplete previous releases, and manual crate version changes outside release preparation. It records selected versions, reasons, content hashes, and Cargo.lock's hash in .github/release.json, with notes in releases/<release_id>.md. One codex/release-<release_id> PR includes all selected Rust and native changes, then CI is explicitly dispatched on it. The explicit dispatch is necessary because bot pushes do not start ordinary push/PR workflows reliably.

Review the generated release notes, wait for CI, and merge the PR. Existing main protection still requires an approving review. The pipeline does not bypass that protection or push release commits directly to main.

Preview selection locally

Fetch release tags, then run against the committed HEAD:

sh
git fetch origin --tags
RELEASE_ID=20260908.1 RELEASE_VERSION=0.13.9 cargo xtask release preview

Omit RELEASE_VERSION for packages-only changes; PACKAGE_VERSIONS accepts the same JSON as Actions. Native inputs use SDK_VERSION, GRADLE_VERSION, and IOS_VERSION. Preview prepares a temporary worktree and prints the plan; it does not modify the checkout, create a PR, or publish. Uncommitted edits are not included. Actions preparation additionally verifies remote release and native tags before creating the PR.

Publication order

The release-plan merge triggers the same workflow's publishing jobs:

  1. Build and publish selected Android SDK / Gradle plugin artifacts to Maven. Both workflows serialize writes to gh-pages. They explicitly request a Pages build, then verify public AAR, JAR, POM, and plugin marker URLs.
  2. Build the public Swift package before creating its selected v<version> tag. SwiftPM consumes the tag directly; never move a published tag. SwiftPM can build in parallel with the Maven jobs.
  3. After all selected native jobs succeed, verify reused SDKs too, then use Cargo workspace publishing for the unpublished Rust versions. Publishing uses Cargo 1.98.1; the framework's consumer MSRV is unchanged.
  4. Verify every selected crate version in the registry, then create one GitHub Release, Whisker <release_id>, at whisker-release-<release_id>.

sdk-v*, gradle-plugin-v*, and SwiftPM's v* tags remain as artifact identifiers. New per-crate GitHub Releases are not created. Historical per-crate CHANGELOGs and Releases are retained; new release notes are consolidated under releases/.

The standalone publish-sdk, publish-gradle-plugin, and publish-ios dispatches are verification/smoke builds. Real publishing is requested by the unified workflow through workflow_call.

Show full SKILL.md (350 more words)Show less

Choose the streams

ChangedRequired stream before Rust
Android runtime/module/KSP sources or their shared build configurationAndroid SDK
platforms/android/gradle-plugin/**Gradle plugin
Root Package.swift or platforms/ios/**SwiftPM
Only crates/whisker-driver-sys/bridge/** C/C++ sourcesRust (the bridge ships in the crate)
Rust framework sourcesRust
crates/whisker-subsecond/**Explicit fork version, included in the same release

The source pins are WHISKER_SDK_VERSION and WHISKER_GRADLE_PLUGIN_VERSION in crates/whisker-cng/src/generator.rs, and WHISKER_IOS_SPM_VERSION in crates/whisker-cng/src/ios_modules.rs plus packages/*/Package.swift. The preparation command keeps these consistent.

Resume a partial release

Re-run the failed jobs of the original release-plan merge run:

sh
gh run rerun <run-id> --failed

The checkout must remain the same commit. Native tags reject another commit. Changes to packaged Rust content or Cargo.lock after preparation are rejected before publishing. Re-prepare the release if main acquired those changes. Maven publication receipts prevent overwriting a successful upload when Pages propagation is delayed. SwiftPM skips an already verified tag at the same commit. Rust checks exact registry versions and publishes only those still missing, using Cargo to order dependencies.

crates.io HTTP 429 waits until its advertised reset time plus a margin. Missing/stale reset times use a fallback; attempts and duration are bounded. Other publishing errors fail immediately. A registry read failure is an error, never evidence that a crate is unpublished.

Re-running preparation with identical inputs on the original source commit reuses its branch/PR. A closed or merged PR, a conflicting plan, or another open unified release PR requires inspection rather than overwriting history. Legacy plans without a selective inventory retain their original publication set and whisker-v<version> tag, so their original failed jobs can still resume.

Verify delivery to an app

A pipeline success must be followed by a consumer build when validating a specific application fix. Install the released CLI and update the app's crate versions, then run whisker run android or whisker run ios.

Confirm generated Android Gradle files reference the new SDK/plugin, and the generated iOS SwiftPM aggregator references the new Swift tag. If a freshly published crate does not resolve, refresh the consumer registry index and retry. gen/ is generated from the CLI, so changing only a local Rust dependency does not upgrade an old CLI's SDK pins.

© whiskerrs, 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 .agents/skills/release-whisker of whiskerrs/whisker.

Open the folder on GitHubat commit 86cd454

Compare with similar skills

Release Whisker 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.

Release Whisker compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release Whisker this skillwhiskerrs/whisker140—~2kAutomated safety check: PassApache-2.0
Android API Diffgkd-kit/gkd43k—~796Automated safety check: PassGPL-3.0
Android Developmentdpconde/claude-android-skill336—~1.7kAutomated safety check: PassMIT
Run Jetpack Android Appwordpress-mobile/WordPress-Android3.2k—~886Automated safety check: PassGPL-2.0
Orca Android Emulator Controlstablyai/orca89k—~558Automated safety check: PassApache-2.0
Frb Android Emulator Preparefzyzcjy/flutter_rust_bridge5.4k—~2.1kAutomated safety check: NotesMIT

Similar skills

  • Android API Diff

    gkd-kit/gkd

    Looks up Android framework Java and AIDL APIs across versions with the android-api-diff CLI: signatures, availability, source files and hidden-API access code.

    43k GitHub stars~796 tokensUpdated today
    MobileAuto-check passed
  • Android Development

    dpconde/claude-android-skill

    Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.

    336 GitHub stars~1.7k tokensUpdated 10 mo ago
    MobileAuto-check passed
  • Run Jetpack Android App

    wordpress-mobile/WordPress-Android

    Builds the Jetpack debug app with Gradle and installs it on a connected Android device or an emulator started from an available AVD.

    3.2k GitHub stars~886 tokensUpdated yesterday
    MobileAuto-check passed
  • Android device and emulator control from inside Orca over adb, with the live device view in Orca's emulator pane. Use when driving an adb-connected emulator…

    89k GitHub stars~558 tokensUpdated today
    MobileAuto-check passed
  • Frb Android Emulator Prepare

    fzyzcjy/flutter_rust_bridge

    A skill your agent uses when preparing, installing, diagnosing, or explaining the host Android Emulator environment for flutterrustbridge local runtime validation, including Android SDK command-line…

    5.4k GitHub stars~2.1k tokensUpdated yesterday
    MobileAuto-check: notes
  • Claude Android Ninja

    Drjacky/claude-android-ninja

    Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.

    124 GitHub stars~5.2k tokensUpdated 11 days ago
    MobileAuto-check passed

Categories

Questions about Release Whisker

What does Release Whisker do?

Prepare or publish a Whisker release across Rust crates, Android SDK, Gradle plugin, and SwiftPM; recover a partial release or diagnose a missing SDK pin. Release Whisker is an agent skill from whiskerrs/whisker. Prepare or publish a Whisker release across Rust crates, Android SDK, Gradle plugin, and SwiftPM; recover a partial release or diagnose a missing SDK pin.

When should I use Release Whisker?

Release Whisker fits situations like: tasks that involve Android development.

How do I install Release Whisker in Claude Code?

Run `npx skills add whiskerrs/whisker --skill release-whisker -a claude-code`. Or copy the skill folder (.agents/skills/release-whisker in whiskerrs/whisker) into .claude/skills/release-whisker in your project. Claude Code loads it when a task matches its description.

How do I install Release Whisker in Codex?

Run `npx skills add whiskerrs/whisker --skill release-whisker -a codex`. Or copy the skill folder (.agents/skills/release-whisker in whiskerrs/whisker) into .agents/skills/release-whisker in your project. Codex loads it when a task matches its description.

Can I use Release Whisker 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 whiskerrs/whisker --skill release-whisker -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release-whisker, .gemini/skills/release-whisker, .github/skills/release-whisker and .opencode/skills/release-whisker in your project.

What does Release Whisker need to run?

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

Does Release Whisker 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 Release Whisker 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 Release Whisker use?

Release Whisker 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 Release Whisker use?

About 2k tokens (SKILL.md is roughly 7.9k 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 Release Whisker?

Skills that share tags, products or a category with Release Whisker: Android API Diff (gkd-kit/gkd, 43k stars), Android Development (dpconde/claude-android-skill, 336 stars), Run Jetpack Android App (wordpress-mobile/WordPress-Android, 3.2k stars) and Orca Android Emulator Control (stablyai/orca, 89k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release Whisker?

whiskerrs (a GitHub organization) maintains it in whiskerrs/whisker, which has 140 GitHub stars. The repository was last updated on October 10, 2026.

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