技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
apply-semantic-versioning【数据与研究】Apply semantic versioning (SemVer 2.0.0) to determine the correct version bump based on change analysis. Covers major/minor/patch classification, pre-release identifiers, build metadata, and breaking change detection. Use when preparing a new release to determine the correct version number, after merging changes before tagging, evaluating whether a c…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
藉變更分析判並施正確之語意化版本升級。涵蓋 major/minor/patch 分類、預發識別碼、構建元資料與破壞性變更偵測。遵 SemVer 2.0.0 規格。
於專案根尋並讀版本檔。
# R packages
grep "^Version:" DESCRIPTION
# Node.js
grep '"version"' package.json
# Rust
grep '^version' Cargo.toml
# Python
grep 'version' pyproject.toml
# Plain file
cat VERSION
將當前版本解析為 major.minor.patch 之分量。若版本含預發後綴(如 1.2.0-beta.1),分別注之。
預期: 當前版本識為 MAJOR.MINOR.PATCH[-PRERELEASE]。
失敗時: 若無版本檔現,查 VERSION 檔或 git 標籤(git describe --tags --abbrev=0)。若全無版本,初開發起 0.1.0,若專案有穩定公共 API 則起 1.0.0。
取自上次標記發行以來之變更清單。
# Find the last version tag
git describe --tags --abbrev=0
# List commits since that tag
git log --oneline v1.2.3..HEAD
# If using Conventional Commits, filter by type
git log --oneline v1.2.3..HEAD | grep -E "^[a-f0-9]+ (feat|fix|BREAKING)"
若無標籤,對初提交或已知基線比。
預期: 提交清單附訊息,可按變更類型分類。
失敗時: 若 git 歷史不可用或標籤缺,請開發者人工述變更。依其述分類。
施 SemVer 分類規則:
| Change Type | Version Bump | Examples |
|---|---|---|
| Breaking (incompatible API change) | MAJOR | Renamed/removed public function, changed return type, removed parameter, changed default behavior |
| Feature (new backwards-compatible functionality) | MINOR | New exported function, new parameter with default, new file format support |
| Fix (backwards-compatible bug fix) | PATCH | Bug fix, documentation correction, performance improvement with same API |
分類規則:
特例:
0.x.y),minor 升或含破壞性變更。明文記預期: 每變更分為破壞/功能/修復,整體升級層次已判。
失敗時: 若變更曖昧,寧高升。保守之 major 升勝於斷下游碼之 minor 升。
對當前版本施升級:
| Current | Bump | New Version |
|---|---|---|
| 1.2.3 | MAJOR | 2.0.0 |
| 1.2.3 | MINOR | 1.3.0 |
| 1.2.3 | PATCH | 1.2.4 |
| 0.9.5 | MINOR | 0.10.0 |
| 2.0.0-rc.1 | (release) | 2.0.0 |
若請預發標籤:
1.3.0-alpha.1 為將來 1.3.0 之首 alpha1.3.0-beta.1 為首 beta1.3.0-rc.1 為首發行候選預發優先:alpha < beta < rc < (release)。
預期: 新版本號依 SemVer 規則計算。
失敗時: 若當前版本格式錯或非 SemVer,先正規化之。如 1.2 化為 1.2.0。
將新版本寫至宜檔。
# R: Update DESCRIPTION
# Change "Version: 1.2.3" to "Version: 1.3.0"
// Node.js: Update package.json
// Change "version": "1.2.3" to "version": "1.3.0"
// Also update package-lock.json if present
# Rust: Update Cargo.toml
# Change version = "1.2.3" to version = "1.3.0"
若專案有多檔引用版本(如 _pkgdown.yml、CITATION、codemeta.json),皆更新。
預期: 一切版本檔一致更新至新版本號。
失敗時: 若檔更新失敗,回退一切變更以保一致。從不留版本檔於部分更新之態。
提交版本升後,建 git 標籤。
# Annotated tag (preferred)
git tag -a v1.3.0 -m "Release v1.3.0"
# Lightweight tag (acceptable)
git tag v1.3.0
用專案立之標籤格式:
v1.3.0(最常)1.3.0(無前綴)package-name@1.3.0(單倉庫多套件)預期: Git 標籤已建,合於新版本。
失敗時: 若標籤已存,版本未正確升。以 git tag -l "v1.3*" 查重複標籤並先解之。
MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]+build.123)不影版本優先。1.0.0+build.1 與 1.0.0+build.2 同優先manage-changelog — 維與版本升配對之變更日誌條目plan-release-cycle — 規劃決何時版本升之發行里程release-package-version — R 特定之發行工作流,含版本升commit-changes — 以宜訊息提交版本升create-github-release — 自版本標籤建 GitHub release