Imported from lobehub/lobehub (
.agents/skills/version-release/SKILL.md) via skills.sh. Install upstream withnpx skills add lobehub/lobehub --skill version-release. Copyright stays with the author.
Version Release Workflow
This skill is a router. The detailed steps live in references/.
Scope Boundary (Important)
This skill is only for:
- Release branch / PR workflow
- CI trigger constraints (
auto-tag-release.yml) - GitHub Release note writing
This skill is not for writing docs/changelog/*.mdx.
If the user asks for website changelog pages, load ../docs-changelog/SKILL.md.
Mandatory Companion Skill
For every /version-release execution, you MUST load and apply:
../../../DESIGN.md(Voice & Content)
Overview
The primary development branch is canary. All day-to-day development happens on canary. When releasing, canary is merged into main. Conventional release PRs (๐ release: โฆ, release/*, hotfix/*) get a package.json bump commit from release-pr-version.yml while the PR is open. After merge, auto-tag-release.yml tags the merge commit and creates the GitHub Release. sync-main-to-canary runs on push to main.
Only two release types are used in practice (major releases are extremely rare and can be ignored):
| Type | Use Case | Frequency | Source Branch | PR Title Format | Version | Reference |
|---|---|---|---|---|---|---|
| Minor | Feature iteration release | ~Every 4 weeks | canary | ๐ release: v{x.y.0} |
Manually set | references/minor-release.md |
| Patch | Weekly release / hotfix / model / DB migration | ~Weekly or as needed | canary or main | Custom (e.g. ๐ release: 20260222) |
Auto patch +1 | references/patch-release-scenarios.md |
For writing the release-note body (any release type), see references/release-notes-style.md.
Auto-Release Trigger Rules (auto-tag-release.yml)
After a PR is merged into main, CI determines whether to release based on the following priority:
1. Minor Release (Exact Version)
PR title matches ๐ release: v{x.y.z} -> uses the version number from the title.
2. Patch Release (Auto patch +1)
Triggered by the following priority:
- Branch name match:
hotfix/*orrelease/*-> triggers directly (skips title detection) - Title prefix match: PRs with the following title prefixes will trigger:
style/๐ stylefeat/โจ featfix/๐ fixrefactor/โป๏ธ refactorhotfix/๐ hotfix/๐ฉน hotfixbuild/๐ท build
3. No Trigger
PRs that don't match any conditions above (e.g. docs, chore, ci, test) will not trigger a release when merged into main.
Automated Actions
- On the release PR (
release-pr-version.yml) โ ifpackage.jsonis behind, commit๐ chore(release): release version v{x.y.z}to the PR head. Minor titles๐ release: v{x.y.z}use that version; weekly /release/*/hotfix/*use latest stable tag + patch. - After merge (
auto-tag-release.yml) โ tagv{x.y.z}on the merge commit and create the GitHub Release. Patch version is latest stable tag +1, notpackage.json+1. sync-main-to-canaryโ runs on push tomain.
Agent Action Guide
When the user requests a release:
Precheck (applies to all release types)
Before creating the release branch, verify the source branch:
- Weekly Release (
release/weekly-*): must branch fromcanary - All other release/hotfix branches: must branch from
main; rungit merge-base --is-ancestor main <branch> && echo OK - If the branch is based on the wrong source, recreate from the correct base
Routing
Pick the right reference and follow it end-to-end:
- Minor release โ
references/minor-release.md - Patch release (weekly / hotfix / model launch / DB migration) โ
references/patch-release-scenarios.md - Writing the PR body / release notes (any release type) โ
references/release-notes-style.md
Hard Rules (apply to every release type)
- Do NOT manually modify
package.jsonversion โ CI handles it. - Do NOT manually create tags โ CI handles them.
- Minor PR title format is strict (
๐ release: v{x.y.z}). - Patch PRs do not need an explicit version number.
- Keep release facts accurate; do not invent metrics or availability statements. Release-note inputs (compare base, PR refs, contributor list) must be derived from
gitperreferences/release-notes-style.mdยง Computing Inputs โ never from memory or descriptions.
