release-tauri
Skill8 starsChanged 5 months agoMITView on GitHub
Cut a release of the Tauri edition of OpenUsage (main branch): version bump, generate a GitHub Release-style changelog, update CHANGELOG.md, and publish a GitHub Release. Use when the user asks to tag a Tauri release, bump the version, create a changelog, cut a release, or publish release notes. Pairs with release-swift (the native Swift edition on the swift branch).
- Commits and pushes
In this repository2 other files it gives its agents.
- tauri-developmentSkill
- tauri-v2Skill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 8 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Read the current version from package.json and the latest Tauri tag: git tag --list 'v0.6.*' --sort=-v:refname | head -1.
- Distinctive: line 45
If the API returns null, fall back to the git author name from git log.
- Distinctive: line 51
Wait for the user to explicitly approve the changelog before making any file changes.
- Distinctive: line 55
Check for and update every version file that exists in the repo:
- Very specific: line 66
After updating any Cargo.toml, run cargo update -p {package_name} to sync Cargo.lock.
- Distinctive: line 70
Commit all changes (version bumps + CHANGELOG.md) in a single commit:
- Very specific: line 84
Ask the user before pushing.
- Distinctive: line 128
Only include category sections that have entries.
- Distinctive: line 156
Commit hashes in output are 7 characters (short hash).
- Distinctive: line 158
Never push automatically -- always ask the user first.
- Distinctive: line 159
Always publish release notes to GitHub Releases -- never skip this step.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Release Tauri
Bump the project version, generate a categorized changelog with author attribution, tag the release, and publish to GitHub Releases. This skill cuts the Tauri edition only.
Lane and scope
This skill cuts Tauri-edition releases only. Tauri stays on version lane 0.6.x; never bump to 0.7.x (Swift's lane). The Tauri edition is frozen - in practice the next release is the final "goodbye" build with the retirement banner. The native Swift edition has its own skill (release-swift) on the swift branch.
Workflow
1. Determine New Version
- Read the current version from
package.jsonand the latest Tauri tag:git tag --list 'v0.6.*' --sort=-v:refname | head -1. Do not use the repo-wide "latest tag" - it may now be a Swift0.7.xpre-release, which would skew the proposed version. - Tauri is frozen on the
0.6.xlane, so only patch bumps are allowed (e.g.0.6.27->0.6.28). Do NOT do a minor or major bump: from0.6.xthat produces0.7.0, which collides with Swift's lane and can hijack GitHub Latest. (Swift releases use the release-swift skill on theswiftbranch.) - Show the proposed new version and confirm with the user before proceeding.
2. Generate Changelog
Collect commits since the previous Tauri tag (the latest v0.6.* tag from step 1, not the repo-wide latest tag, which may be a Swift 0.7.x release) and build the changelog:
Categorization rules:
| Commit prefix | Category |
feat, feature, or starts with "Add" | New Features |
fix or starts with "Fix" | Bug Fixes |
refactor, enhance | Refactor |
chore, style, docs, perf, test, ci, build | Chores |
| Uncategorized | Bug Fixes |
Author attribution (required on every entry):
- Commits with a PR number (
(#123)):gh pr view {number} --json author -q '.author.login' - Commits without a PR number:
gh api /repos/{owner}/{repo}/commits/{full_hash} -q '.author.login' - If the API returns null, fall back to the git author name from
git log.
Output the changelog inside a markdown code block using the template below so the user can review it.
3. User Approval
Wait for the user to explicitly approve the changelog before making any file changes. Accept edits if offered.
4. Update Version Files + CHANGELOG.md
Check for and update every version file that exists in the repo:
package.jsonsrc-tauri/tauri.conf.jsonsrc-tauri/Cargo.toml(must update if tauri.conf.json exists)Cargo.toml(root-level, Rust projects)pyproject.tomlpubspec.yamlbuild.gradle/build.gradle.ktsInfo.plist(CFBundleShortVersionString)
After updating any Cargo.toml, run cargo update -p {package_name} to sync Cargo.lock.
Prepend the approved changelog to CHANGELOG.md immediately after the # Changelog header. Create the file with that header if it does not exist.
Commit all changes (version bumps + CHANGELOG.md) in a single commit:
chore: bump version to {new_version}5. Create Git Tag
git tag -a v{new_version} -m "v{new_version}"6. Push Commit + Tag
Ask the user before pushing. If confirmed, push the commit and tag before creating the GitHub Release — gh release create resolves the tag on the remote, so the version bump commit must already be there.
git push origin {branch}
git push origin v{new_version}7. Verify and publish (mandatory - never leave a draft)
publish.yml runs tauri-action with releaseDraft: false, so a clean run publishes the release immediately. Drafts still slip through in practice: an interrupted, failed, or re-run matrix job (aarch64 + x86_64), or a manual gh release create racing CI, can leave an orphan draft for the tag. (This is how the repo ended up with stale drafts for v0.6.1 and v0.6.8.) So always finish a release by verifying it is actually published:
gh run watch
gh release view v{new_version} --json isDraft,isPrerelease,assets \
--jq '{isDraft, isPrerelease, assets:[.assets[].name]}'Require isDraft=false, isPrerelease=false, and assets including latest.json and a .sig. If it is still a draft with complete assets: gh release edit v{new_version} --draft=false.
Publish the approved changelog onto the release. tauri-action creates the release with a generic default body, so you must set the notes explicitly - otherwise you ship the exact blank-body release this skill exists to prevent. Write the step 2 changelog to a file and apply it:
gh release edit v{new_version} --notes-file <changelog-file>If the workflow failed before tauri-action created the release, there is nothing to verify - re-run the workflow (gh run rerun <run-id> --failed) and wait. Do NOT create the release by hand with gh release create: a manual release ships without the signed .dmg, .sig, and latest.json updater assets and breaks auto-update for every Tauri user.
Before deleting any duplicate draft, reconcile it: compare its body and assets against the published release and migrate anything the published one is missing. (Release notes were lost this way for v0.6.1 and v0.6.8 - the published releases had blank bodies while the drafts held the changelog.) Migrate notes with gh release edit v{new_version} --notes-file <file>. Only then delete the duplicate draft. Guard the delete so it can NEVER remove the sole release for a tag - it only runs once a separate PUBLISHED (non-draft) release for that tag already exists:
tag="v{new_version}"
if [ "$(gh release view "$tag" --json isDraft --jq '.isDraft')" = "false" ]; then
gh api repos/{owner}/{repo}/releases --paginate \
--jq '.[] | select(.draft and .tag_name=="'"$tag"'") | .id' \
| xargs -I{} gh api -X DELETE repos/{owner}/{repo}/releases/{}
else
echo "No published release for $tag yet - publish it first; do NOT delete the draft."
fiDefinition of done: exactly one published, non-draft release for the tag, with updater assets AND the release notes present.
Changelog Template
Only include category sections that have entries.
## v{new_version}
### New Features
- {message} ([#{pr}](https://github.com/{owner}/{repo}/pull/{pr})) by @{author}
### Bug Fixes
- {message} ([#{pr}](https://github.com/{owner}/{repo}/pull/{pr})) by @{author}
### Refactor
- {message} ([#{pr}](https://github.com/{owner}/{repo}/pull/{pr})) by @{author}
### Chores
- {message} ([#{pr}](https://github.com/{owner}/{repo}/pull/{pr})) by @{author}
---
### Changelog
**Full Changelog**: [{prev_tag}...v{new_version}](https://github.com/{owner}/{repo}/compare/{prev_tag}...v{new_version})
- [{short_hash}](https://github.com/{owner}/{repo}/commit/{full_hash}) {commit message} by @{author}Rules
- Commit hashes in output are 7 characters (short hash).
- Tags are always prefixed with
v(e.g.v0.1.1). - Never push automatically -- always ask the user first.
- Always publish release notes to GitHub Releases -- never skip this step.
- For commits without a PR number, omit the PR link but still include the author.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

