Release KISS Translator
Follow VERSION_MANAGEMENT.md and the repository's current scripts and workflow files. Treat package.json as the only version source. Never perform only part of a requested full release silently: report the exact completed stage and any remaining gate.
Safety rules
- Treat a request to complete a release as authorization to merge the release PR and create and push the release tag after every required check passes. Do not pause for confirmation at either step.
- Never push commits directly to
master, force-push, overwrite a tag, bypass a failed check, or merge a release PR before all required checks pass.
- Stop on a dirty worktree, a branch other than
dev, divergent local/remote branches, invalid GitHub authentication, an existing target tag, version disagreement, unexpected formatted files, failed checks, or failed builds.
- Do not stash, reset, discard, or absorb unrelated user changes. Do not repair authentication or change repository settings without a separate request.
- Use the repository's existing
pnpm version:* commands. Do not manually edit .env or manifest versions.
1. Inspect and choose the release
Read VERSION_MANAGEMENT.md, package.json, the top of CHANGELOG.md, src/scripts/update-version.mjs, src/scripts/sync-version.mjs, and .github/workflows/release.yml. Current repository files override examples in this skill.
Run read-only preflight checks:
git status --short --branch
git branch --show-current
git fetch origin --prune --tags
git rev-list --left-right --count dev...origin/dev
gh auth status
git tag --sort=-version:refname
Require a clean worktree, dev, and dev...origin/dev equal to 0 0; then run git pull --ff-only origin dev and recheck.
If the user did not specify the bump, ask them to choose patch, minor, major, or an exact SemVer version. Do not infer the release class from commits.
Compute the target version before changing files. Verify that v<target> does not exist locally or remotely and that no open dev to master release PR conflicts with this release.
2. Prepare the release on dev
Run exactly one matching command:
pnpm version:patch
pnpm version:minor
pnpm version:major
pnpm version:set -- <version>
Confirm package.json, .env, public/manifest.json, public/manifest.firefox.json, and public/manifest.thunderbird.json all contain the target version.
Find the latest version tag with git tag --sort=-version:refname. Review git log --oneline --no-merges <latest-tag>..HEAD, then prepend one ## v<target> section to CHANGELOG.md:
- Write concise Chinese bullets describing user-visible changes.
- Summarize behavior rather than copying commit messages mechanically.
- Exclude merges, formatting-only work, and internal implementation detail unless release-relevant.
- Preserve UTF-8 and every existing historical entry unchanged.
Run pnpm format, inspect git diff --name-only and git diff, and stop if formatting touched unrelated files. Do not silently include cleanup.
Run pnpm build+zip, then recheck all version values, the top CHANGELOG heading, git diff --check, and the complete diff.
Stage only the reviewed release files. Commit as chore: bump version to <target> and push with git push origin dev. Do not use git add ..
3. Create and merge the release PR
- Create or reuse the single open
dev to master PR titled Release v<target>. Include the new CHANGELOG section in its body.
- Watch all required checks to completion. If any check fails, stop and report it; do not merge.
- Present the PR URL, target version, checks, and release-note summary as a progress update without pausing.
- After all required checks pass, merge automatically using the repository's normal merge-commit strategy. Verify the PR is merged and record its merge commit.
4. Publish the tag
Synchronize production without writing directly to it:
git checkout master
git pull --ff-only origin master
Verify master contains the recorded PR merge commit, the target version in every version file, and ## v<target> as the first CHANGELOG section. Recheck that v<target> does not exist locally or remotely.
Report the exact tag command and explain that pushing it triggers .github/workflows/release.yml, then continue without pausing.
After every verification passes, run automatically:
git tag -a v<target> -m "Release version <target>"
git push origin v<target>
Find the tag-triggered release.yml run, watch it to completion, and verify gh release view v<target>. Report failures without retrying destructive or publication steps automatically.
5. Synchronize dev and report
After a successful release, run:
git checkout dev
git pull --ff-only origin dev
git merge --ff-only origin/master
git push origin dev
Report the released version, PR URL, merge commit, tag, workflow result, GitHub Release URL, and final branch state. If synchronization fails, leave published history untouched and report the exact recovery point.
1---2name: release-kiss-translator3description: Safely automate a complete KISS Translator release using the repository's version scripts, Chinese CHANGELOG convention, dev-to-master pull request flow, annotated version tags, and GitHub Actions release workflow. Use when asked to bump the project version, prepare a release, update release notes, create and merge the release PR, publish a version tag, or complete the end-to-end KISS Translator release process without intermediate confirmations.4---56# Release KISS Translator78Follow `VERSION_MANAGEMENT.md` and the repository's current scripts and workflow files. Treat `package.json` as the only version source. Never perform only part of a requested full release silently: report the exact completed stage and any remaining gate.910## Safety rules1112- Treat a request to complete a release as authorization to merge the release PR and create and push the release tag after every required check passes. Do not pause for confirmation at either step.13- Never push commits directly to `master`, force-push, overwrite a tag, bypass a failed check, or merge a release PR before all required checks pass.14- Stop on a dirty worktree, a branch other than `dev`, divergent local/remote branches, invalid GitHub authentication, an existing target tag, version disagreement, unexpected formatted files, failed checks, or failed builds.15- Do not stash, reset, discard, or absorb unrelated user changes. Do not repair authentication or change repository settings without a separate request.16- Use the repository's existing `pnpm version:*` commands. Do not manually edit `.env` or manifest versions.1718## 1. Inspect and choose the release19201. Read `VERSION_MANAGEMENT.md`, `package.json`, the top of `CHANGELOG.md`, `src/scripts/update-version.mjs`, `src/scripts/sync-version.mjs`, and `.github/workflows/release.yml`. Current repository files override examples in this skill.212. Run read-only preflight checks:2223 ```bash24 git status --short --branch25 git branch --show-current26 git fetch origin --prune --tags27 git rev-list --left-right --count dev...origin/dev28 gh auth status29 git tag --sort=-version:refname30 ```31323. Require a clean worktree, `dev`, and `dev...origin/dev` equal to `0 0`; then run `git pull --ff-only origin dev` and recheck.334. If the user did not specify the bump, ask them to choose `patch`, `minor`, `major`, or an exact SemVer version. Do not infer the release class from commits.345. Compute the target version before changing files. Verify that `v<target>` does not exist locally or remotely and that no open `dev` to `master` release PR conflicts with this release.3536## 2. Prepare the release on dev37381. Run exactly one matching command:3940 ```bash41 pnpm version:patch42 pnpm version:minor43 pnpm version:major44 pnpm version:set -- <version>45 ```46472. Confirm `package.json`, `.env`, `public/manifest.json`, `public/manifest.firefox.json`, and `public/manifest.thunderbird.json` all contain the target version.483. Find the latest version tag with `git tag --sort=-version:refname`. Review `git log --oneline --no-merges <latest-tag>..HEAD`, then prepend one `## v<target>` section to `CHANGELOG.md`:49 - Write concise Chinese bullets describing user-visible changes.50 - Summarize behavior rather than copying commit messages mechanically.51 - Exclude merges, formatting-only work, and internal implementation detail unless release-relevant.52 - Preserve UTF-8 and every existing historical entry unchanged.534. Run `pnpm format`, inspect `git diff --name-only` and `git diff`, and stop if formatting touched unrelated files. Do not silently include cleanup.545. Run `pnpm build+zip`, then recheck all version values, the top CHANGELOG heading, `git diff --check`, and the complete diff.556. Stage only the reviewed release files. Commit as `chore: bump version to <target>` and push with `git push origin dev`. Do not use `git add .`.5657## 3. Create and merge the release PR58591. Create or reuse the single open `dev` to `master` PR titled `Release v<target>`. Include the new CHANGELOG section in its body.602. Watch all required checks to completion. If any check fails, stop and report it; do not merge.613. Present the PR URL, target version, checks, and release-note summary as a progress update without pausing.624. After all required checks pass, merge automatically using the repository's normal merge-commit strategy. Verify the PR is merged and record its merge commit.6364## 4. Publish the tag65661. Synchronize production without writing directly to it:6768 ```bash69 git checkout master70 git pull --ff-only origin master71 ```72732. Verify `master` contains the recorded PR merge commit, the target version in every version file, and `## v<target>` as the first CHANGELOG section. Recheck that `v<target>` does not exist locally or remotely.743. Report the exact tag command and explain that pushing it triggers `.github/workflows/release.yml`, then continue without pausing.754. After every verification passes, run automatically:7677 ```bash78 git tag -a v<target> -m "Release version <target>"79 git push origin v<target>80 ```81825. Find the tag-triggered `release.yml` run, watch it to completion, and verify `gh release view v<target>`. Report failures without retrying destructive or publication steps automatically.8384## 5. Synchronize dev and report8586After a successful release, run:8788```bash89git checkout dev90git pull --ff-only origin dev91git merge --ff-only origin/master92git push origin dev93```9495Report the released version, PR URL, merge commit, tag, workflow result, GitHub Release URL, and final branch state. If synchronization fails, leave published history untouched and report the exact recovery point.