prepare-release

Automate the Cherry Studio release workflow: collect changes → generate bilingual release notes → update files → create release branch + PR → trigger CI/CD.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "prepare-release" with this command: npx skills add cherryhq/cherry-studio/cherryhq-cherry-studio-prepare-release

Prepare Release

Automate the Cherry Studio release workflow: collect changes → generate bilingual release notes → update files → create release branch + PR → trigger CI/CD.

Arguments

Parse the version intent from the user's message. Accept any of these forms:

  • Bump type keyword: patch , minor , major

  • Exact version: x.y.z or x.y.z-pre.N (e.g. 1.8.0 , 1.8.0-beta.1 , 1.8.0-rc.1 )

  • Natural language: "prepare a beta release", "bump to 1.8.0-rc.2", etc.

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 branch or PR.

Workflow

Step 1: Determine Version

  • Get the latest tag: git describe --tags --abbrev=0

  • Read current version from package.json .

  • Compute the new version based on the argument:

  • patch / minor / major : bump from the current tag version.

  • x.y.z or x.y.z-pre.N : use as-is after validating it is valid semver.

Step 2: Collect Commits

  • List all commits since the last tag: git log <last-tag>..HEAD --format="%H %s" --no-merges

  • For each commit, get the full body: git log <hash> -1 --format="%B"

  • Extract the content inside ```release-note code blocks from each commit body.

  • Extract the conventional commit type from the title (feat , fix , refactor , perf , docs , etc.).

  • Skip these commits:

  • Titles starting with 🤖 Daily Auto I18N

  • Titles starting with Merge

  • Titles starting with chore(deps)

  • Titles starting with chore: release

  • Commits where the release-note block says NONE

Step 3: Generate Bilingual Release Notes

Using the collected commit information, generate release notes in both English and Chinese.

Format (must match exactly):

<!--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-->

Rules:

  • Only include categories that have entries (omit empty categories).

  • Each commit appears as exactly ONE line item in the appropriate category.

  • Use the release-note field if present; otherwise summarize from the commit title.

  • Component tags should be short: [Chat] , [Models] , [Agent] , [MCP] , [Settings] , [Data] , [Build] , etc.

  • Chinese translations should be natural, not machine-literal.

  • Do NOT include commit hashes or PR numbers.

  • Read the existing release notes in 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:

  • EXCLUDE internal refactoring, code cleanup, or architecture changes

  • EXCLUDE CI/CD, build tooling, or test infrastructure changes

  • EXCLUDE dependency updates (unless they add user-visible features)

  • EXCLUDE documentation updates

  • EXCLUDE developer experience improvements

  • EXCLUDE technical debt fixes with no user-visible impact

  • EXCLUDE overly technical descriptions (e.g., "fix race condition in Redux middleware")

INCLUDE only changes that users will notice:

  • New features they can use

  • Bug fixes that affected their workflow

  • UI/UX improvements they can see

  • Performance improvements they can feel

  • Security fixes (simplified, without implementation details)

Keep descriptions simple and non-technical:

  • ❌ "Fix streaming race condition causing partial tool response status in Redux state"

  • ✅ "Fix tool status not stopping when aborting"

  • ❌ "Auto-convert reasoning_effort to reasoningEffort for OpenAI-compatible providers"

  • ✅ "Fix deep thinking mode not working with some providers"

Step 4: Update Files

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

Step 5: Present for Review

Show the user:

  • The new version number.

  • The full generated release notes.

  • A summary of which files were modified.

If --dry-run was specified, stop here.

Otherwise, ask the user to confirm before proceeding to Step 6.

Step 6: Create Branch and PR

  • Create and push the release branch: git checkout -b release/v{version} git add package.json electron-builder.yml git commit -m "chore: release v{version}" git push -u origin release/v{version}

  • Create the PR using the gh-create-pr skill. If the skill tool is unavailable, read .agents/skills/gh-create-pr/SKILL.md and follow it manually. In CI (non-interactive) mode, skip interactive confirmation steps and create the PR directly after filling the template.

  • Use title: chore: release v{version}

  • Use base branch: main

  • When filling the PR template, incorporate:

  • The generated release notes (English section only, for readability).

  • A list of included commits.

  • A review checklist:

  • Review generated release notes in electron-builder.yml

  • Verify version bump in package.json

  • CI passes

  • Merge to trigger release build

  • Report the PR URL and next steps.

CI Trigger Chain

Creating a PR from release/v* to main automatically triggers:

  • release.yml : Builds on macOS, Windows, Linux and creates a draft GitHub Release.

  • ci.yml : Runs lint, typecheck, and tests.

Constraints

  • Always read electron-builder.yml before modifying it to understand the current format.

  • Never modify files other than package.json and electron-builder.yml .

  • Never push directly to main .

  • Always show the generated release notes to the user before creating the branch/PR (unless running in CI with no interactive user).

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

create-skill

No summary provided by upstream source.

Repository SourceNeeds Review
General

gh-create-issue

No summary provided by upstream source.

Repository SourceNeeds Review
General

gh-create-pr

No summary provided by upstream source.

Repository SourceNeeds Review
General

gh-pr-review

No summary provided by upstream source.

Repository SourceNeeds Review