Imported from ChefMooon/branch-schematic (
.github/skills/publish-release/SKILL.md). Install upstream withnpx skills add ChefMooon/branch-schematic --skill publish-release. Copyright stays with the author.
Branch Schematic Release Workflow
Use this skill for every Windows release, updater rehearsal, or version bump. Production releases are created from a Windows maintainer machine with the GitHub CLI. There is no tag-triggered GitHub Actions build.
Release Procedure
- Add or update the
## [X.Y.Z]entry inCHANGELOG.mdbefore changing the version. It must contain at least one bullet point. - Synchronize the stable version in
package.json,package-lock.json,src-tauri/Cargo.toml,src-tauri/Cargo.lock, andsrc-tauri/tauri.conf.json. - Commit and push the version change, then push the matching stable tag
vX.Y.Z. - Confirm
gh auth statussucceeds and set these local PowerShell variables:TAURI_UPDATER_PUBLIC_KEY,TAURI_SIGNING_PRIVATE_KEY, andTAURI_SIGNING_PRIVATE_KEY_PASSWORDwhen applicable. - Run
npm run release:local -- --tag vX.Y.Z. The runner validates the version and notes, creates a GitHub draft first, generates a temporary release config, builds NSIS updater artifacts locally, validateslatest.jsonand its matching.sig, uploads the assets, and verifies the draft. - Inspect the draft and the ignored report under
.release-status/<run>/. Each run containsstatus.jsonandstatus.md. - Publish the draft manually only after the installer and updater manifest pass inspection.
The runner never publishes automatically. If a build or upload fails, the draft is intentionally left available for diagnosis. Resuming an existing draft requires explicit ownership confirmation and a release id:
npm run release:local -- --tag vX.Y.Z --resume --release-id <release-id>
Validation
The runner reuses these focused helpers:
scripts/check-version-consistency.ps1validates all application and lockfile versions against the stable tag.scripts/prepare-release-config.mjsinjects the public key and enables NSIS updater artifacts while preserving the stablereleases/latestendpoint.scripts/extract-release-notes.ps1extracts the matching changelog entry.scripts/validate-updater-manifest.mjsvalidates the Windows x64 manifest, installer URL, version, notes, signature, and local assets.
Run the repository checks before a real release:
npm run test:version
npm run test:updater-manifest
npm run test:release-config
npm run test:release-local
npm test
npm run build
cargo check --manifest-path src-tauri/Cargo.toml
git diff --check
Signing and Security
Tauri updater signing is required. Never print, commit, or write the updater private key, password, or credential environment values to a report.
Windows Authenticode signing is currently deferred. A successful local release must not be described as publisher-signed unless a separate signing provider has been configured and independently verified.
Generated release configuration, changelog notes, installers, signatures, and the status directory are local artifacts and must not be committed.