apply-semantic-versioning
О программе
Этот навык анализирует изменения в коде, чтобы автоматически определить правильное повышение семантической версии (major/minor/patch) в соответствии с SemVer 2.0.0. Он обрабатывает обнаружение критических изменений, идентификаторы предварительных релизов и метаданные сборки для подготовки выпуска. Используйте его после слияния изменений для разрешения разногласий по версиям или для обеспечения корректной тегировки перед релизом.
Быстрая установка
Claude Code
Рекомендуетсяnpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/apply-semantic-versioningСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
施語義版控
依變析定正版升。此技讀版檔、分變為破(主)、功(次)、修(補)、算新版、更諸檔。循 SemVer 2.0.0 規。
用時
- 備新發而須定正版乃用
- 合變後、標前乃用
- 察變為破否乃用
- 加預發標(alpha、beta、rc)乃用
- 解何升宜之爭乃用
入
- 必要:含版檔(DESCRIPTION、package.json、Cargo.toml、pyproject.toml、或 VERSION)之項根
- 必要:上發後之 git 史(標或提交)
- 可選:用之提交約(Conventional Commits、自由式)
- 可選:將施之預發標(alpha、beta、rc)
- 可選:若檔不可讀則前版
法
第一步:讀當前版
覓項根之版檔而讀之。
# 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 |
分類則:
- 若任一變破,升為 MAJOR(重次與補為零)
- 若無破而任新功,升為 MINOR(重補為零)
- 若僅修,升為 PATCH
特例:
- 1.0.0 前:初發中(
0.x.y),次升可含破。明書 - 棄用:棄函乃次變(仍行)。除之為主
- 內變:重構而不變公 API 乃補
得: 諸變分為破/功/修而升級定。
敗則: 若變歧,偏高升。保守主升勝於破下游之次升。
第四步:算新版
施升於當前版:
| 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為首 rc
預發先後: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(無前綴)[email protected](monorepo)
得: git 標合新版。
敗則: 若標已存,版未正升。以 git tag -l "v1.3*" 察重標解之而進。
驗
- 當前版自正版檔讀
- 上發後諸提交皆析
- 每變分為破、功、或修
- 升級合最重變(破 > 功 > 修)
- 新版循 SemVer 2.0.0 式:
MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD] - 項中諸版檔一致更
- 無版跳(如 1.2.3 直至 1.4.0 而 1.3.0 未發)
- git 標合新版與項約
- 預發後綴若用,循正先後(alpha < beta < rc)
陷
- 跳次:自 1.2.3 直至 1.4.0 因「加二功」。每發一升;功數非定版
- 視棄用為破:棄函(加警)乃次變。僅除之為破
- 忘 1.0.0 前則:1.0.0 前,API 視不穩。諸項於此階以次升破變,然當書
- 版檔不一:更 package.json 而不更 package-lock.json、或更 DESCRIPTION 而不更 CITATION。諸版引須同步
- 建元混:建元(
+build.123)不影版先後。1.0.0+build.1與1.0.0+build.2先後同 - 不標發:無 git 標,後升不能定變析之基
參
manage-changelog— 守配版升之更記plan-release-cycle— 謀發里程以定何時升release-package-version— R 特之發流含版升commit-changes— 以正辭提交版升create-github-release— 自版標建 GitHub 發
GitHub репозиторий
Похожие навыки
content-collections
МетаЭтот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
polymarket
МетаЭтот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
creating-opencode-plugins
МетаЭтот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
sglang
МетаSGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
