qmai-release
GitHub用于在QMAI仓库执行稳定版发布的标准化流程,涵盖版本元数据更新、多文件校验、提交至main及创建注解标签。变更点为移除CI等待步骤,改为仅通过打tag触发编译以优化效率。
Trigger Scenarios
Install
npx skills add Mochocyang/QMAI --skill qmai-release -g -y
SKILL.md
Frontmatter
{
"name": "qmai-release",
"description": "Release a stable QMAI version by updating version metadata and changelog, pushing main, then creating and pushing an annotated version tag. Use when asked to bump, publish, or tag a QMAI stable release; do not use for prerelease builds or ordinary PR delivery."
}
QMAI Stable Release
Use this workflow only in the Mochocyang/QMAI repository. Preserve the user's authorization boundary: preparing a release does not authorize pushing, tagging, or publishing unless the user requested those external mutations.
Release invariants
- Push the release commit to
mainby itself. Never pushmainand the version tag in one command or atomic push. - Do not wait for main CI before tagging. Main CI does not compile release binaries; only the tag workflow does.
- Never create the tag while local required validation is failing.
- Never overwrite, move, or force-push
mainor a release tag. - Stop if
origin/mainmoves away from the release commit before tagging. Reconcile the new remote state instead of tagging an older commit. - Use an annotated tag named
v<package-version>and verify that the remote tag resolves to the release commit.
Workflow
-
Confirm the repository and release target.
- Verify the remote is
Mochocyang/QMAI. - Require a clean worktree before switching or pulling.
- Fetch
origin/mainand tags, switch tomain, and update with--ff-only. - Confirm the requested version is a stable semantic version and the tag does not already exist locally or remotely.
- Verify the remote is
-
Update the complete QMAI release surface.
package.json- root package version and root package entry in
package-lock.json src-tauri/Cargo.toml- the
qmaipackage entry insrc-tauri/Cargo.lock src-tauri/tauri.conf.jsonsrc/lib/changelog.tssrc/lib/changelog.spec.ts- Derive release notes from commits since the previous version tag. Do not invent features or copy stale notes.
-
Validate before committing.
- Confirm every version source has the exact requested version.
- Run
node scripts/release-notes.mjs <version>and inspect that it returns the intended Chinese notes rather than the generic fallback. - Run
npx vitest run src/lib/changelog.spec.ts scripts/release-notes.spec.mjs. - Run
npm run test:mocks,npm run build, andgit diff --checkunless the user explicitly narrows validation. - If a required check fails, do not tag. Separate a verified pre-existing baseline failure from a release regression and obtain explicit authorization before proceeding despite it.
-
Commit and push only
main.- Use a Chinese Conventional Commit such as
chore(release): 升级版本至 <version>. - Re-fetch
origin/mainimmediately before pushing and confirm it is the release commit's parent. - Push only
main. Record the exact release commit SHA.
- Use a Chinese Conventional Commit such as
-
Tag after
mainis on the release commit.- Fetch
origin/mainand tags again. - Require local
HEAD,origin/main, and the recorded release SHA to match. - Reconfirm that
v<version>does not exist. - Create an annotated tag on the recorded SHA, then push only that tag in a separate command.
- Fetch
-
Verify delivery.
- Verify remote
mainand the dereferenced remote tag both resolve to the recorded release SHA. - Confirm
QMAI Multi-Platform Releasestarted for that tag and SHA. - Report the release workflow URL and current status. Do not claim release completion while jobs or required assets are pending.
- Verify remote
Version History
-
03fe775
Current 2026-09-09 00:55
移除发布前等待main CI完成的步骤,改为直接推送main并单独打tag,因CI缓存时效短且全量编译不划算,正式包仅在打tag时编译。
- 20447a2 2026-08-27 15:01


