Hunk Release Workflow
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
Prepares a Cherry Studio release by resolving the version, collecting commits, writing bilingual release notes, updating version files and creating a release branch.
$ npx skills add CherryHQ/cherry-studio --skill prepare-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install CherryHQ/cherry-studio prepare-release --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/CherryHQ/cherry-studio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/prepare-release .claude/skills/prepare-release && 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 "prepare-release" agent skill from https://github.com/CherryHQ/cherry-studio/tree/main/.agents/skills/prepare-release into .claude/skills/prepare-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prepare-release", 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/CherryHQ/cherry-studio/tree/main/.agents/skills/prepare-releaseType 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 CherryHQ/cherry-studio --skill prepare-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install CherryHQ/cherry-studio prepare-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/prepare-release .agents/skills/prepare-release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "prepare-release" agent skill from https://github.com/CherryHQ/cherry-studio/tree/main/.agents/skills/prepare-release into .agents/skills/prepare-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prepare-release", 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 CherryHQ/cherry-studio --skill prepare-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install CherryHQ/cherry-studio prepare-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/prepare-release .cursor/skills/prepare-release && 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 "prepare-release" agent skill from https://github.com/CherryHQ/cherry-studio/tree/main/.agents/skills/prepare-release into .cursor/skills/prepare-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prepare-release", 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/CherryHQ/cherry-studio.git --path .agents/skills/prepare-release--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 CherryHQ/cherry-studio --skill prepare-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install CherryHQ/cherry-studio prepare-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/prepare-release .gemini/skills/prepare-release && 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 "prepare-release" agent skill from https://github.com/CherryHQ/cherry-studio/tree/main/.agents/skills/prepare-release into .gemini/skills/prepare-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prepare-release", 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 CherryHQ/cherry-studio prepare-releaseInstalls 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 CherryHQ/cherry-studio --skill prepare-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/prepare-release .github/skills/prepare-release && 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 "prepare-release" agent skill from https://github.com/CherryHQ/cherry-studio/tree/main/.agents/skills/prepare-release into .github/skills/prepare-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prepare-release", 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 CherryHQ/cherry-studio --skill prepare-release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install CherryHQ/cherry-studio prepare-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/prepare-release .opencode/skills/prepare-release && 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 "prepare-release" agent skill from https://github.com/CherryHQ/cherry-studio/tree/main/.agents/skills/prepare-release into .opencode/skills/prepare-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prepare-release", 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.
prepare-releasePrepares a Cherry Studio release by resolving the version, collecting commits, writing bilingual release notes, updating version files and creating a release branch.
The version can be given as a bump keyword (patch, minor or major), an exact version such as 1.8.0 or 1.8.0-beta.1, or plain language like prepare a beta release. It defaults to patch, always echoes the resolved version back before any file is edited, and has a --dry-run option that previews the work without creating a release branch. The stages run from collecting changes through bilingual notes and file updates to the release branch that triggers CI/CD.
For a local run it fetches origin/main and the tags, then insists on a clean main checkout exactly at origin/main and stops otherwise; in GitHub Actions it uses the workflow's frozen dispatch SHA. The current version comes from package.json. The release-note baseline is the latest published, non-draft GitHub Release with a strict v-prefixed semver tag, never a draft or preview. If main is behind that baseline it stops and asks for the latest Post Release metadata PR to be merged, and a withdrawn version is never reused.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c97c23c. 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:
gitnodeghjqpnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh and pnpm, 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 Preparation loads about 4.3k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 1,939 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 CherryHQ/cherry-studio at commit c97c23c, republished under its AGPL-3.0 licence (© CherryHQ). 1,939 words, ~4,345 tokens.
.claude/skills/prepare-release/SKILL.md (or your agent's skills folder).Automate the Cherry Studio release workflow: collect changes → generate bilingual release notes → update files → create release branch → trigger CI/CD.
Parse the version intent from the user's message. Accept any of these forms:
patch, minor, majorx.y.z or x.y.z-<prerelease> without build metadata (e.g. 1.8.0, 1.8.0-beta.1, 1.8.0-rc.1)Defaults to patch if no version is specified. Always echo the resolved target version back to the user before proceeding with any file edits.
--dry-run: Preview only, do not create a release branch.origin/main and all tags, then verify that the checkout is a clean main at exactly origin/main:git fetch origin refs/heads/main:refs/remotes/origin/main --tags
test "$(git branch --show-current)" = main
test -z "$(git status --porcelain)"
test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)"origin/main head.package.json. Use it for version increments even if that release has since been withdrawn; never reuse the withdrawn version.v<semver> as the release-note baseline. Non-semver preview releases and drafts are never a baseline:gh release list --limit 1000 --json isDraft,publishedAt,tagName --jq '[.[] | select(.isDraft == false and (.tagName | test("^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$")))] | sort_by(.publishedAt) | last | .tagName // empty'git rev-parse --verify refs/tags/{baseline-tag}). Compare its version with the current package version using semver: if main is behind, stop and require the latest Post Release metadata PR to be merged. If main is ahead, allow preparation using the published baseline for release notes and the package version for version increments. For example, after withdrawing 2.1.1, main at 2.1.1 with a published baseline of 2.1.0 prepares 2.1.2 and includes changes since 2.1.0.
In GitHub Actions, use the workflow-provided baseline tag and collection base without repeating these checks.patch / minor / major: bump from the current version.^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$ and pass semver.valid; build metadata such as +build.1 is not accepted.HEAD, use the tag.release-metadata-boundary: <baseline-tag>. This machine marker is added to the Post Release pull request body and survives the required squash merge.chore(release): sync <baseline-tag> metadata or that subject followed only by GitHub's squash suffix (#<PR-number>).git log <collection-base>..HEAD --format="%H %s" --no-mergesgit log <hash> -1 --format="%B"```release-note code blocks from each commit body.feat, fix, refactor, perf, docs, etc.).🤖 Daily Auto I18NMergechore(deps)chore: releasechore(release)NONEGenerate release notes in both English and Chinese from the final user-visible changes relative to the published baseline. Commit titles and release-note blocks are candidate descriptions, not proof that a change will ship.
Reconcile net changes before drafting:
git diff --name-status <baseline-tag> <release-head>, then read the relevant patches and code at both endpoints. <release-head> is the source HEAD before release preparation (the frozen dispatch SHA in CI). Compare the two endpoint trees, not a three-dot merge-base diff. The collection base is only for discovering commits; when it differs from the published tag, also inspect user-visible differences missing from that commit range.Recommended format:
<!--LANG:en-->
Cherry Studio {version} - {Brief English Title}
✨ New Features
- [Component] Description
🐛 Bug Fixes
- [Component] Description
💄 Improvements
- [Component] Description
⚡ Performance
- [Component] Description
<!--LANG:zh-CN-->
Cherry Studio {version} - {简短中文标题}
✨ 新功能
- [组件] 描述
🐛 问题修复
- [组件] 描述
💄 改进
- [组件] 描述
⚡ 性能优化
- [组件] 描述
<!--LANG:END-->The language markers are the machine-readable contract: include each marker once, keep them in order, and provide non-empty English and Chinese sections. Titles and surrounding explanatory text are presentation choices, not validation requirements.
Rules:
release-note field, or otherwise the commit title, only when it matches the verified final outcome.[Chat], [Models], [Agent], [MCP], [Settings], [Data], [Build], etc.electron-builder.yml as a style reference before writing.IMPORTANT: User-Focused Content Only
Release notes are for end users, not developers. Exclude anything users don't care about:
INCLUDE only changes that users will notice:
Keep descriptions simple and non-technical:
package.json: Update the "version" field to the new version.electron-builder.yml: Replace the content under releaseInfo.releaseNotes: | with the generated notes. Preserve the 4-space YAML indentation for the block scalar content.resources/cherry-studio/release-history.json: Never edit by hand; the notes must match electron-builder.yml byte for byte. Run node scripts/release/sync-release-history.js --target-version {version}, which prepends (or replaces) the entry for a stable release and leaves the file untouched for a prerelease. In GitHub Actions, the workflow runs this itself after the Claude step.node scripts/release/validate-prepared-release.js --target-version {version} before generating the product manifest, and stop if it rejects the changed paths, version ordering, bilingual sections, or stable history. In GitHub Actions, leave validation to the workflow step that runs after Claude.pnpm build:builtin-knowledge after validation. This refreshes resources/builtin-agents/cherry-assistant/product-manifest.json with the new package version. Never edit the generated manifest by hand. In GitHub Actions, do not run the generator: the workflow runs the same validator first, then runs the trusted generator itself.Show the user:
If --dry-run was specified, stop here.
Otherwise, ask the user to confirm before proceeding to Step 6.
HEAD:package.json. Require the published baseline to still match the one used to collect release notes; otherwise regenerate the notes before proceeding. Because Step 4 has intentionally prepared and validated release metadata, replace Step 1's clean-worktree assertion with git status --short and stop unless every listed path is one of the four allowed release metadata files. Then create and push a signed, DCO-compliant release commit:git fetch origin refs/heads/main:refs/remotes/origin/main --tags
test "$(git branch --show-current)" = main
test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)"
test "$(node -p "require('./package.json').version")" = "{version}"
CURRENT_VERSION="$(git show HEAD:package.json | jq -r .version)"
LATEST_PUBLISHED="$(gh release list --limit 1000 --json isDraft,publishedAt,tagName --jq '[.[] | select(.isDraft == false and (.tagName | test("^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$")))] | sort_by(.publishedAt) | last | .tagName // empty')"
test "$LATEST_PUBLISHED" = "{baseline-tag}"
git rev-parse --verify "refs/tags/$LATEST_PUBLISHED"
node -e "const semver = require('semver'); process.exit(semver.gte(process.argv[1], process.argv[2]) ? 0 : 1)" "$CURRENT_VERSION" "${LATEST_PUBLISHED#v}"
REPO="$(gh repo view --json nameWithOwner --jq .nameWithOwner)"
gh api --paginate --slurp "repos/$REPO/releases?per_page=100" | TAG="v{version}" node scripts/release/validate-release-state.js prepare
test -z "$(git ls-remote --heads origin refs/heads/release/v{version})"
git status --short
UNEXPECTED_RELEASE_PATHS="$(git status --porcelain | cut -c4- | grep -Ev '^(package\.json|electron-builder\.yml|resources/cherry-studio/release-history\.json|resources/builtin-agents/cherry-assistant/product-manifest\.json)$' || true)"
test -z "$UNEXPECTED_RELEASE_PATHS"
git checkout -b release/v{version}
git add package.json electron-builder.yml resources/cherry-studio/release-history.json resources/builtin-agents/cherry-assistant/product-manifest.json
git commit -S --signoff -m "chore(release): prepare v{version}"
git cat-file commit HEAD | grep -q '^gpgsig '
git log -1 --format=%B | grep -q '^Signed-off-by: '
git push -u origin release/v{version}package.json and electron-builder.yml. Temporary helper files and local Git operations are allowed; the workflow extracts those two file changes, restores the frozen source SHA, and discards everything else. It then derives the release history, validates, generates the product manifest, creates the branch, and uses GitHub's API to create and verify the signed, DCO-compliant commit. Never push from the Claude step.release/v{version} commit to succeed. auto-release-build.yml revalidates that exact live branch head and dispatches release.yml with all; it builds macOS, Windows, and Linux and creates or updates the draft GitHub Release. Use release.yml manually only to retry a failed all-platform build or one platform for the unchanged tagged commit.backport-release-fixes.yml opens a backport PR for the first merged hotfix: <description> or hotfix(<kebab-case-scope>): <description> PR from main, applies any optional bilingual release note, then appends consecutive hotfixes and source markers to that same open topic branch. It manages every source PR's hotfix and backport-status labels and reports failures on the source PR; never merge main into the release branch.publish-release.yml. Approve the release Environment deployment after inspecting the draft. Publication then acquires the release-state lock, revalidates the approved run, release branch, tag, draft, artifacts, open PRs, and pending hotfixes, and publishes only if they still agree. The draft body contains the bilingual electron-builder.yml notes followed by GitHub's generated changes. The final fetched main SHA is the hotfix cutoff; a hotfix merged after that snapshot belongs to the next release. Publication triggers post-release.yml, which uses the published tag as its source, applies only the release metadata delta to the latest main, and creates a release-sync/v{version} metadata-only PR.package.json, electron-builder.yml, release history, and the generated product manifest. It triggers ci.yml; merge it only after CI passes.chore(release): sync v{version} metadata with only GitHub's optional PR-number suffix, and keep release-metadata-boundary: v{version} on its own line in the squash commit body so the next release can find the boundary reliably.electron-builder.yml before modifying it to understand the current format.package.json, electron-builder.yml, resources/cherry-studio/release-history.json, and the generated resources/builtin-agents/cherry-assistant/product-manifest.json.main.post-release.yml owns that step.© CherryHQ, AGPL-3.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/prepare-release of CherryHQ/cherry-studio.
Open the folder on GitHubat commit c97c23c
Release Preparation 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 Preparation this skillCherryHQ/cherry-studio | 52k | — | ~4.3k | Automated safety check: Pass | AGPL-3.0 | |
| Hunk Release Workflowmodem-dev/hunk | 9.5k | — | ~3.8k | Automated safety check: Pass | MIT | |
| Worktrunk Release Workflowmax-sixty/worktrunk | 9k | — | ~6.9k | Automated safety check: Pass | Custom licence | |
| ZCF Release AutomationUfoMiao/zcf | 6.1k | — | ~3.4k | Automated safety check: Pass | MIT | |
| ClawRouter Release ChecklistBlockRunAI/ClawRouter | 6.6k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Codex Proxy RS Releasezyycn/codex-proxy-rs | 750 | — | ~327 | Automated safety check: Pass | Apache-2.0 |
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
max-sixty/worktrunk
Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.
UfoMiao/zcf
Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.
BlockRunAI/ClawRouter
Walks the agent through every ClawRouter release step in order, from the version bump and changelog entry to build, tests, npm publish, git tag and GitHub release.
zyycn/codex-proxy-rs
Plans versions, writes release notes, publishes stable or pre-release builds and recovers from failed releases for Codex Proxy RS, without covering deploys or tag cleanup.
jeremylongshore/tons-of-skills-marketplace
A skill your agent uses when running GitHub Actions locally, creating task runner recipes, generating changelogs from git history, managing GitHub PRs/issues/releases programmatically, or creating…
CherryHQ/cherry-studio
Derives new files from a selected part of a spreadsheet, Word document, PDF or slide deck, such as a cell range, paragraph, page or slide, without ever modifying the source file.
CherryHQ/cherry-studio
Creates GitHub issues for the current repository by choosing the matching issue template and following its format, with a permission check for engineering tasks.
CherryHQ/cherry-studio
Delegates one bounded repository task to Kimi Code in non-interactive prompt mode and reads back the final result from its JSON event stream.
CherryHQ/cherry-studio
Reviews Cherry Studio branches, pull requests, commits, files and docs against the project's own architecture, naming, API-boundary and UI rules, report-only by default.
CherryHQ/cherry-studio
Runs Cherry Studio's critical-path regression suite as deterministic Playwright E2E tests through a GitHub workflow on macOS and Windows runners.
CherryHQ/cherry-studio
Runs the Antigravity CLI headlessly with the agy command to analyze a repository or carry out a coding task, then checks its JSON result and the diff.
Categories
Prepares a Cherry Studio release by resolving the version, collecting commits, writing bilingual release notes, updating version files and creating a release branch. 1, or plain language like prepare a beta release. It defaults to patch, always echoes the resolved version back before any file is edited, and has a --dry-run option that previews the work without creating a release branch.
Release Preparation fits situations like: preparing a patch, minor or major release; cutting a beta or release-candidate version; previewing a release with --dry-run before creating a branch; bumping the version and drafting release notes from commits since the last release.
Run `npx skills add CherryHQ/cherry-studio --skill prepare-release -a claude-code`. Or copy the skill folder (.agents/skills/prepare-release in CherryHQ/cherry-studio) into .claude/skills/prepare-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add CherryHQ/cherry-studio --skill prepare-release -a codex`. Or copy the skill folder (.agents/skills/prepare-release in CherryHQ/cherry-studio) into .agents/skills/prepare-release 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 CherryHQ/cherry-studio --skill prepare-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/prepare-release, .gemini/skills/prepare-release, .github/skills/prepare-release and .opencode/skills/prepare-release in your project.
Going by SKILL.md and its folder, Release Preparation needs the command-line tools its instructions call (git, node, gh, jq and pnpm). Our summary lists: Git, with a clean main checkout at origin/main; GitHub CLI (gh) with access to the repository's releases; A package.json holding the current version.
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 Preparation is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k 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 Preparation: Hunk Release Workflow (modem-dev/hunk, 9.5k stars), Worktrunk Release Workflow (max-sixty/worktrunk, 9k stars), ZCF Release Automation (UfoMiao/zcf, 6.1k stars) and ClawRouter Release Checklist (BlockRunAI/ClawRouter, 6.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
CherryHQ (a GitHub organization) maintains it in CherryHQ/cherry-studio, which has 52,431 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 8, 2026.
Source: CherryHQ/cherry-studio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.