kansoku-trade/release
Use when the user wants to release a new desktop app version (发版 / release / 发布新版本) — bumps apps/desktop version, writes user-facing release notes into CHANGELOG.md, and opens the release PR that drives the automated tag → build → publish pipeline
npx skills add https://github.com/kansoku-trade/kansoku --skill release
Opens a version-bump PR for the Kansoku desktop app. Everything after the PR merge is automated:
this skill → release PR (ci.yml gates it) → merge to main
→ desktop-tag.yml creates desktop-vX.Y.Z + dispatches desktop-release.yml
→ build, sign, appcast, publish GitHub Release (notes from CHANGELOG.md)
→ users receive the Sparkle update
Optional argument: patch | minor | major — skips the bump suggestion step.
git status --porcelain # must be empty
git branch --show-current # must be main
git fetch origin main && git rev-list --count main..origin/main # must be 0
LAST_TAG=$(git describe --tags --match 'desktop-v*' --abbrev=0)
git log "$LAST_TAG"..HEAD --oneline -- apps/ packages/ patches/ scripts/
If git describe finds no tag, this is the first release — use the full history of those paths. If there are no commits touching apps/, packages/, patches/, or scripts/ since the last tag, stop: nothing to release.
Read the actual diffs of significant commits when the one-line messages aren't enough to describe user-visible changes.
Current version: node -p "require('./apps/desktop/package.json').version".
If the user passed patch/minor/major, apply it directly. Otherwise suggest one — any feat → minor, only fixes/refactors/chores → patch, breaking changes to user data or workflows → major — and ask the user to confirm the version number before continuing.
Prepend a section to apps/desktop/CHANGELOG.md (below the file header, above the previous version's section):
## X.Y.Z — YYYY-MM-DD
- 更新点……
Rules for the notes (they become the GitHub Release body verbatim, and users read them):
Update version in apps/desktop/package.json to the confirmed X.Y.Z.
git checkout -b release/desktop-vX.Y.Z
git add apps/desktop/package.json apps/desktop/CHANGELOG.md
git commit -m "release(desktop): vX.Y.Z"
git push -u origin release/desktop-vX.Y.Z
gh pr create --title "release(desktop): vX.Y.Z" --body "<release notes section>"
PR body = the new CHANGELOG section, plus one line noting that merging will auto-tag and publish the release.
Show the PR link and remind: merge = release. After merge, desktop-tag.yml tags and dispatches desktop-release.yml; the release publishes automatically and the Sparkle feed goes live immediately.
Then switch back to main: git checkout main.
## X.Y.Z section is missing.Take kansoku-trade/release from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.