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.
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.
$ npx skills add whiskerrs/whisker --skill release-whisker -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install whiskerrs/whisker release-whisker --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/whiskerrs/whisker.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release-whisker .claude/skills/release-whisker && 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 "release-whisker" agent skill from https://github.com/whiskerrs/whisker/tree/main/.agents/skills/release-whisker into .claude/skills/release-whisker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-whisker", 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/whiskerrs/whisker/tree/main/.agents/skills/release-whiskerType 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 whiskerrs/whisker --skill release-whisker -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install whiskerrs/whisker release-whisker --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/whiskerrs/whisker.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/release-whisker .agents/skills/release-whisker && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release-whisker" agent skill from https://github.com/whiskerrs/whisker/tree/main/.agents/skills/release-whisker into .agents/skills/release-whisker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-whisker", 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 whiskerrs/whisker --skill release-whisker -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install whiskerrs/whisker release-whisker --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/whiskerrs/whisker.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/release-whisker .cursor/skills/release-whisker && 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 "release-whisker" agent skill from https://github.com/whiskerrs/whisker/tree/main/.agents/skills/release-whisker into .cursor/skills/release-whisker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-whisker", 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/whiskerrs/whisker.git --path .agents/skills/release-whisker--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 whiskerrs/whisker --skill release-whisker -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install whiskerrs/whisker release-whisker --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/whiskerrs/whisker.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/release-whisker .gemini/skills/release-whisker && 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 "release-whisker" agent skill from https://github.com/whiskerrs/whisker/tree/main/.agents/skills/release-whisker into .gemini/skills/release-whisker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-whisker", 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 whiskerrs/whisker release-whiskerInstalls 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 whiskerrs/whisker --skill release-whisker -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/whiskerrs/whisker.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/release-whisker .github/skills/release-whisker && 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 "release-whisker" agent skill from https://github.com/whiskerrs/whisker/tree/main/.agents/skills/release-whisker into .github/skills/release-whisker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-whisker", 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 whiskerrs/whisker --skill release-whisker -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install whiskerrs/whisker release-whisker --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/whiskerrs/whisker.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/release-whisker .opencode/skills/release-whisker && 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 "release-whisker" agent skill from https://github.com/whiskerrs/whisker/tree/main/.agents/skills/release-whisker into .opencode/skills/release-whisker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-whisker", 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.
release-whiskerPrepare 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.
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.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 86cd454. 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:
cargogitghFrom 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.
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.
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 whiskerrs/whisker at commit 86cd454, republished under its Apache-2.0 licence (© whiskerrs). 997 words, ~1,979 tokens.
.claude/skills/release-whisker/SKILL.md (or your agent's skills folder).Use .github/workflows/release.yml. Release logic lives in
cargo xtask release; no release-plz installation is needed.
Run the release workflow on main with these inputs:
| Input | Meaning |
|---|---|
release_id | Required identifier independent of versions, such as 20260908.1; increment the suffix for another release that day |
version | New core version; leave blank for packages-only releases |
package_versions | Optional 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_version | New native versions when those sources changed; blanks reuse current pins |
subsecond_version | Explicit 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.
Fetch release tags, then run against the committed HEAD:
git fetch origin --tags
RELEASE_ID=20260908.1 RELEASE_VERSION=0.13.9 cargo xtask release previewOmit 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.
The release-plan merge triggers the same workflow's publishing jobs:
v<version>
tag. SwiftPM consumes the tag directly; never move a published tag.
SwiftPM can build in parallel with the Maven jobs.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.
| Changed | Required stream before Rust |
|---|---|
| Android runtime/module/KSP sources or their shared build configuration | Android SDK |
platforms/android/gradle-plugin/** | Gradle plugin |
Root Package.swift or platforms/ios/** | SwiftPM |
Only crates/whisker-driver-sys/bridge/** C/C++ sources | Rust (the bridge ships in the crate) |
| Rust framework sources | Rust |
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.
Re-run the failed jobs of the original release-plan merge run:
gh run rerun <run-id> --failedThe 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.
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
Just SKILL.md in .agents/skills/release-whisker of whiskerrs/whisker.
Open the folder on GitHubat commit 86cd454
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release Whisker this skillwhiskerrs/whisker | 140 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Android API Diffgkd-kit/gkd | 43k | — | ~796 | Automated safety check: Pass | GPL-3.0 | |
| Android Developmentdpconde/claude-android-skill | 336 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Run Jetpack Android Appwordpress-mobile/WordPress-Android | 3.2k | — | ~886 | Automated safety check: Pass | GPL-2.0 | |
| Orca Android Emulator Controlstablyai/orca | 89k | — | ~558 | Automated safety check: Pass | Apache-2.0 | |
| Frb Android Emulator Preparefzyzcjy/flutter_rust_bridge | 5.4k | — | ~2.1k | Automated safety check: Notes | MIT |
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.
dpconde/claude-android-skill
Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.
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.
stablyai/orca
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…
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…
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.
Categories
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.
Release Whisker fits situations like: tasks that involve Android development.
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.
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.
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.
Going by SKILL.md and its folder, Release Whisker needs the command-line tools its instructions call (cargo, 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.
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.
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.
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.
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.