Agent skill

Release New Version

by niki914 in niki914/zafiro

A skill your agent uses when the user wants to release a new Zafiro version — drafting bilingual release notes, deciding the next version number, bumping app/build.gradle.kts, tagging, and…

MITAuto-check passedDevelopment

Install Release New Version

skills CLI
$ npx skills add niki914/zafiro --skill release-new-version -a claude-code

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

GitHub CLI
$ gh skill install niki914/zafiro release-new-version --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/niki914/zafiro.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release-new-version .claude/skills/release-new-version && 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-new-version
GitHub stars
235
Token cost
~2.1k tokens
SKILL.md length
985 words
Files
2 (incl. scripts)
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when the user wants to release a new Zafiro version — drafting bilingual release notes, deciding the next version number, bumping app/build.gradle.kts, tagging, and…

  • Works in 5 steps: Gather facts → Draft release notes (iterate until… → Propose version number (iterate until… → …
  • The user wants to release a new Zafiro version — drafting bilingual release notes
  • SKILL.md covers Phase 1 — Gather facts, Phase 2 — Draft release notes…, Phase 3 — Propose version… and Phase 4 — Execute (main repo), plus 3 more sections
  • Runs Shell scripts from its folder; calls gh, git and rg

What it does

Release New Version is an agent skill from niki914/zafiro. Use when the user wants to release a new Zafiro version — drafting bilingual release notes, deciding the next version number, bumping app/build.gradle.kts, tagging, and publishing to GitHub (main repo, optionally the Xposed repo).

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/update-code-badge.sh`).

It sits in Development, covering Changelog and release notes and Translation. It works with Gradle and GitHub. The repository describes itself as: Open-source BYOK AI agent for Android. Full phone control, native Shell & Python 3, with Skills and MCP support. Built with Material 3 Expressive. Works via Shizuku (root… The licence is MIT.

When your agent uses it

  • The user wants to release a new Zafiro version — drafting bilingual release notes
  • Deciding the next version number
  • Bumping app/build.gradle.kts
  • Publishing to GitHub (main repo

Example prompts

  • “/release-new-version”

Requirements

  • Python 3
  • A Bash shell

Workflow steps

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

  1. Gather facts
  2. Draft release notes (iterate until explicit approval)
  3. Propose version number (iterate until explicit approval)
  4. Execute (main repo)
  5. Xposed repo (optional, ask first)

What it can do on your machine

Read from SKILL.md and the folder at commit 6c7f775. 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

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • gh
    • git
    • rg
    • bash

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

  • Network

    No URLs in SKILL.md. Its commands use gh and git, 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 New Version loads about 2.1k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 985 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from niki914/zafiro at commit 6c7f775, republished under its MIT licence (© niki914). 985 words, ~2,141 tokens.

Download SKILL.mdSave it as .claude/skills/release-new-version/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
release-new-version
description
Use when the user wants to release a new Zafiro version — drafting bilingual release notes, deciding the next version number, bumping app/build.gradle.kts, tagging, and publishing to GitHub (main repo, optionally the Xposed repo).

Release New Version

Release workflow for Zafiro.

Repos involved:

RepoTag formatRelease notes
niki914/zafiro (main, open source)v<code>-<name> e.g. v8-1.1.0Full bilingual notes
Xposed-Modules-Repo/com.niki914.nexus.agentic (closed)<code>-<name> e.g. 8-1.1.0Same feature entries, closing line points back to the main repo. Optional — ask the user every time.

One APK, two notes. CI builds and signs the APK and creates the Release when a tag is pushed to the main repo. There is no CI in the Xposed repo — its release is a manual gh operation. Never build locally.

Phase 1 — Gather facts

Collect all of this before asking the user anything:

  1. Local version: read versionCode / versionName from app/build.gradle.kts.
  2. Latest release baseline: gh release view -R niki914/zafiro (returns the latest non-draft, non-prerelease release by default). Parse its tag v<code>-<name>.
  3. Version string locations: find every place the current version literal lives:
    bash
    rg -n '<current versionName>' -g '*.{md,kt,kts,txt,py}' .
    Only scan these extensions: md, kt, kts, txt, py. Nothing else. rg respects .gitignore by default — do not disable that.
  4. Changes since last release: commits and merged PRs from the last release tag to origin/main:
    bash
    git log v<code>-<name>..origin/main --oneline --no-merges
    gh pr list -R niki914/zafiro --state merged --limit 50 --json number,title --jq '.[] | "\(.number) \(.title)"'
  5. If local versionCode/versionName do not match the latest release tag: stop and ask the user how to proceed. Do not guess.

Summarize the changes for the user in plain language before drafting.

Phase 2 — Draft release notes (iterate until explicit approval)

Write bilingual notes (Chinese first, ---, then English) from the change list. Apply these rules strictly — they are derived from every historical release:

  1. Only user-perceivable changes. New features, visible improvements, refactors with user-facing impact. Never list chores, CI fixes, string cleanups, dependency bumps, internal renames.
  2. Bug fixes are always vague. Collapse all fixes into one line: "修复了一些问题" / "Fixed several issues". Optionally append one phrase naming the improved area (e.g. "优化了 Phone Use 执行效率"). Never enumerate specific bugs.
  3. 4–8 numbered entries. Feature names are brand terms (Phone Use, Skills System) — keep them consistent with past usage.
  4. Breaking changes get a blockquote before the list, in both languages, telling users what to do (e.g. the 1.1.0 package-name rename note told users to set up the new version as a fresh start).
  5. Milestone items (e.g. "仓库已开源,欢迎 Star、提 Issue、参与贡献") go as the final entry when applicable.

Present the draft. The user will revise it — redraft and repeat until the user explicitly approves. Approval is an explicit statement from the user, not silence.

Few-shot (real entries from past releases):

  • Good feature entry: 1. 新增 Phone Use:支持自动点按、滑动、滚动、输入文字、打开 App
  • Good vague fix entry: 7. 修复了一些问题
  • Bad entry (do not write): 修复了 composer 光标在深色主题下的偏移 — too specific; fold into "修复了一些问题"
  • Bad entry (do not write): chore: remove 13 unreferenced UI strings — not user-perceivable, drop entirely

Phase 3 — Propose version number (iterate until explicit approval)

Semver x.y.z:

  • Pump X — proud version: milestone, rebranding, headline feature, open-source moment.
  • Pump Y — normal update: regular features.
  • Pump Z — shamed version: fixing a severe/P0 bug.

Propose one number with a one-line justification referencing the change list. Also report every location found in Phase 1 step 3 that needs the version string updated. Iterate with the user until explicit approval of both the number and the file list.

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

Phase 4 — Execute (main repo)

Confirm once more before anything irreversible. Then:

  1. Update the code-line badge so it lands in the release commit:
    bash
    bash scripts/update-code-badge.sh   # relative to the skill directory; the script cd's to the repo root itself
    It recounts production Kotlin + Python lines (excluding tests / build / generated) and rewrites the kotlin-XX.Xk badge in both READMEs. Include the README changes in the release commit.
  2. Update versionCode = <new code>, versionName = "<new name>" in app/build.gradle.kts, plus any other files from the approved list. Do not touch any other build config.
  3. Update module structure in both READMEs (README.md and README_CN.md) and AGENTS.md if modules were refactored or new modules were added.
  4. Audit and complete multilingual string parity across all modules. Daily development only implements English, leaving other locales incomplete. Inspect the actual supported locales across modules (e.g. via ls on res/values-*) and fill in missing strings. Translate contextually based on UI placement and function; avoid blind machine translation.
  5. Commit: release: bump to <new name>, push to origin main.
  6. Tag and push:
    bash
    git tag v<code>-<name>
    git push origin v<code>-<name>
    Tag push triggers CI: build → sign → create Release. CI reads signing config from GitHub Secrets; do not expect signing to work anywhere else.
  7. Wait for CI:
    bash
    gh run list --workflow=release.yml --limit=1    # find the latest run
    gh run watch <run-id> --exit-status             # wait for it to finish
    gh run view <run-id> --log-failed               # on failure, read only the failed steps
    gh run rerun <run-id>                           # rerun after fixing
  8. Replace CI-generated release notes (they are a PR list) with the approved draft:
    bash
    gh release edit <tag> -R niki914/zafiro --title "Release - <name>" --notes "<approved notes>"
    CI generates the release title as the raw tag name (e.g. v9-1.2.0); the historical format is Release - <name> — pass --title explicitly or the wrong title stays.
Release notes format

Historical releases follow this format strictly (no deviations):

  • English first, Chinese after, separated by a single --- line. Never reverse the order.
  • No language headers (no **English** / **中文** labels) — the notes start directly with the numbered list. Blank line separates the --- from the lists.
  • The --title "Release - <name>" from step 8 is part of the format, not optional. Set the title via --title, never inside the release note body.

Phase 5 — Xposed repo (optional, ask first)

Ask: "这次要发 Xposed 仓库吗?" If no, state clearly "本次未发 Xposed 仓库" and stop. If yes:

bash
# download the APK from the main repo release
gh release download <main-tag> -R niki914/zafiro -p "*.apk" --dir /tmp/

# create the Xposed release
gh release create <code>-<name> /tmp/<apk> \
  -R Xposed-Modules-Repo/com.niki914.nexus.agentic \
  --title "Release - <name>" \
  --notes "<approved notes>"

gh operates on the current repo's remote by default — external repos always need -R owner/repo, and the token must have write access there.

The Xposed notes use the same feature entries, but the closing line is 项目已开源:https://github.com/niki914/zafiro (and its English counterpart) instead of a contribution invitation.

Known pitfalls

  • CI build failure: Aliyun Maven mirror 502. Overseas GitHub Actions runners intermittently fail on the Aliyun mirror if it is ordered before mavenCentral() / gradlePluginPortal() in settings.gradle.kts. Standard sources go first, Aliyun after. If CI fails on dependency resolution, check the mirror order.
  • Tag already exists / CI failed and needs a re-trigger. The same tag cannot be pushed twice:
    bash
    git push origin :v<code>-<name>   # delete remote tag
    git tag -d v<code>-<name>         # delete local tag
    git tag v<code>-<name>            # re-tag at latest commit
    git push origin v<code>-<name>

Hard rules

  • Never build locally. CI builds everything.
  • Never modify versionName without explicit user approval.
  • Never push a tag without showing the user the exact tag and target commit first.
  • If any state is ambiguous (local ≠ remote, tag exists, CI red), stop and ask.

© niki914, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in .agents/skills/release-new-version of niki914/zafiro.

  • SKILL.md
  • scripts/update-code-badge.sh

Open the folder on GitHubat commit 6c7f775

Compare with similar skills

Release New Version 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 New Version compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release New Version this skillniki914/zafiro235—~2.1kAutomated safety check: PassMIT
Pre ReleaseZhuoZhuoCrayon/throttled-py651—~1.1kAutomated safety check: PassMIT
Release WorkflowCaldis/react-zmage945—~3.6kAutomated safety check: NotesMIT
Publish ReleaseAyuilos/Miffan217—~680Automated safety check: PassAGPL-3.0
Releasesol4k/sol4k135—~949Automated safety check: PassApache-2.0
Navop Release NotesfeigeCode/navop1.8k—~2.4kAutomated safety check: PassCustom licence

Similar skills

  • Pre Release

    ZhuoZhuoCrayon/throttled-py

    Automates release preparation for throttled-py. An agent skill from ZhuoZhuoCrayon/throttled-py.

    651 GitHub stars~1.1k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Release Workflow

    Caldis/react-zmage

    A skill your agent uses when the user wants to ship a new version of react-zmage to npm.

    945 GitHub stars~3.6k tokensUpdated 4 mo ago
    DevelopmentAuto-check: notes
  • Publish Release

    Ayuilos/Miffan

    Publish a GitHub release for this fork, with a bilingual changelog that separates fork-owned changes from changes introduced by upstream merges.

    217 GitHub stars~680 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Release

    sol4k/sol4k

    Bump the sol4k library version everywhere, open a release PR, and draft GitHub release notes.

    135 GitHub stars~949 tokensUpdated 12 days ago
    DevelopmentAuto-check passed
  • Navop Release Notes

    feigeCode/navop

    A skill your agent uses when working in the Navop repository on CHANGELOG.md, version-tag preparation, GitHub Releases, or R2 updater release notes, especially when bilingual Chinese and English…

    1.8k GitHub stars~2.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Workclaw Release Publish

    haojing8312/WorkClaw

    A skill your agent uses when publishing a confirmed WorkClaw desktop release after the version number and bilingual Chinese plus English release notes have already been reviewed and approved by a…

    141 GitHub stars~786 tokensUpdated 4 mo ago
    DevelopmentAuto-check passed

More from niki914/zafiro

All 8 skills in this repo
  • Jugg Android Dev Loop

    niki914/zafiro

    A skill your agent uses when editing source files (Java/Kotlin/XML/layout/AndroidManifest/Gradle) in a Android project, or when user asks to build/deploy/verify an Android app.

    235 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Add Worktree

    niki914/zafiro

    A skill your agent uses when the user wants to start work in a new git worktree — "new worktree", "spin up a worktree/branch for this", "work on X in another worktree", "branch this off".

    235 GitHub stars~669 tokensUpdated yesterday
    Auto-check passed
  • Install a skill from a public GitHub repository onto this device.

    235 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Skill Creator

    niki914/zafiro

    Create new skills, modify and improve existing skills, and measure skill performance.

    235 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed
  • Termux

    niki914/zafiro

    Load this skill for anything involving Termux (com.termux) — first-time SSH setup, connecting to Termux, or a Termux connection that stopped working.

    235 GitHub stars~688 tokensUpdated yesterday
    Auto-check passed
  • Test Triage

    niki914/zafiro

    Use before writing, adding, or modifying any unit test in this repo — before creating a Test.kt file or a @Test function, and before touching an existing test after a refactor.

    235 GitHub stars~935 tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Release New Version

What does Release New Version do?

A skill your agent uses when the user wants to release a new Zafiro version — drafting bilingual release notes, deciding the next version number, bumping app/build.gradle.kts, tagging, and…. Release New Version is an agent skill from niki914/zafiro.kts, tagging, and publishing to GitHub (main repo, optionally the Xposed repo).

When should I use Release New Version?

Release New Version fits situations like: the user wants to release a new Zafiro version — drafting bilingual release notes; deciding the next version number; bumping app/build.gradle.kts; publishing to GitHub (main repo.

How do I install Release New Version in Claude Code?

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

How do I install Release New Version in Codex?

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

Can I use Release New Version 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 niki914/zafiro --skill release-new-version -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-new-version, .gemini/skills/release-new-version, .github/skills/release-new-version and .opencode/skills/release-new-version in your project.

What does Release New Version need to run?

Going by SKILL.md and its folder, Release New Version needs a shell for the scripts in its folder and the command-line tools its instructions call (gh, git, rg and bash). Our summary lists: Python 3; A Bash shell.

Does Release New Version access the network?

SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Release New Version 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Release New Version use?

Release New Version is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release New Version use?

About 2.1k tokens (SKILL.md is roughly 8.6k 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 New Version?

Skills that share tags, products or a category with Release New Version: Pre Release (ZhuoZhuoCrayon/throttled-py, 651 stars), Release Workflow (Caldis/react-zmage, 945 stars), Publish Release (Ayuilos/Miffan, 217 stars) and Release (sol4k/sol4k, 135 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release New Version?

niki914 (a GitHub user) maintains it in niki914/zafiro, which has 235 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.

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