Version Release Skill
版本發布整合工具。結合工作日誌檢查、CHANGELOG 更新、Git 操作(合併、Tag、推送、清理)。
三步驟發布流程
- Pre-flight 檢查 - 驗證 Ticket 完成度、技術債務、版本同步
- 文件更新 - 清理 todolist、更新 CHANGELOG、確認版本號
- Git 操作 - 合併、建立 Tag、推送、清理分支
各步驟的完整偽程式碼和檢查邏輯:
references/release-workflow-details.md
CLI 使用
# 啟動新版本
/version-release start --version 0.18.0 --description "測試重寫"
# 啟動新版本(預覽模式)
/version-release start --version 0.18.0 --from 0.17.2 --dry-run
# 完整發布(自動偵測版本)
/version-release release
# 指定版本 + 預覽模式
/version-release release --version 0.19 --dry-run
# 只執行檢查
/version-release check
# 只更新文件
/version-release update-docs
| 子命令 | 說明 |
|--------|------|
| start | 啟動新版本(Options: --version(必填)、--from、--description、--dry-run) |
| release | 完整發布流程(Options: --version、--dry-run、--force) |
| check | 只執行 Pre-flight 檢查 |
| update-docs | 只更新文件 |
start 子命令
程式化版本啟動流程,完整生命週期:start -> check -> release。
執行步驟:
- 前版本驗證(檢查 completed 狀態和 git tag)
- 重複檢查(確認新版本不存在)
- 更新 todolist.yaml(插入新版本條目,字串操作保留格式)
- 建立 worklog 目錄結構和主檔案(從模板生成)
- Bump package.json 和 manifest.json 版本號
- 輸出摘要報告和下一步建議
版本偵測
偵測優先順序:--version 參數 -> git branch (feature/vX.Y) -> package.json -> git tag
版本策略(Chrome Extension 雙版本來源)
| 來源 | 檔案 | 說明 |
|------|------|------|
| NPM 版本 | package.json | 專案主版本,Ticket/Wave 以此為準 |
| Chrome 版本 | manifest.json | Chrome Web Store 發布版本 |
check 子命令驗證兩者一致,不一致視為錯誤。配置檔:.version-release.yaml(可選)。
前置條件
- Python 3.10+、Git 2.0+、
pyyaml - 完成 Phase 4 重構評估,技術債務已分類
- 在
feature/v{VERSION}分支上,package.json/manifest.json版本號已更新
使用流程檢查清單
- [ ] 所有 Ticket 已完成(無 pending/in_progress)
- [ ] 技術債務已分類到 todolist.yaml
- [ ] 權限需求變更檢查已完成(依專案類型,見「權限需求變更檢查」章節)
- [ ] 運行
check確認所有檢查通過 - [ ] 運行
release --dry-run預覽 - [ ] 運行
release完成發布 - [ ] 驗證 main 分支已更新、Tag 已建立、feature 分支已清理
參考資料
| 資料 | 說明 |
|------|------|
| references/release-workflow-details.md | 三步驟完整偽程式碼和檢查邏輯 |
| references/cli-output-examples.md | CLI 輸出範例和版本偵測說明 |
| references/troubleshooting.md | 常見問題和恢復指引 |
權限需求變更檢查
版本發布或推進時,若專案有面向使用者的權限宣告,須檢查權限是否較上一發布版本變更;有變更則同步更新權限說明文件與上架頁的權限聲明。Why:應用程式商店(Chrome Web Store、Google Play、App Store)審核會比對上架頁的權限聲明與專案實際的權限宣告檔,兩者不符是審核卡關的常見原因。Consequence:權限說明 drift 後,審核退件需重新提交,延誤發布。Action:發布前依下方專案類型對照表,檢查權限宣告檔差異並同步更新。
各專案類型處理方式
不同專案類型的權限宣告位置與更新對象不同,後端服務則無此需求:
| 專案類型 | 是否需檢查 | 權限宣告位置 | 同步更新對象 |
|---------|-----------|-------------|-------------|
| Chrome Extension | 是 | manifest.json 的 permissions / host_permissions | README 權限說明、隱私權政策文件、Chrome Web Store 開發者後台 |
| 行動 APP(Android / iOS) | 是 | Android AndroidManifest.xml;iOS Info.plist 的 usage description | 權限說明文件、Google Play / App Store 上架頁的權限與隱私聲明 |
| 後端服務 | 否 | 無使用者端權限宣告 | N/A |
檢查步驟(適用「需檢查」的專案類型)
- 比對權限宣告位置的內容與上一發布版本(git tag 或上一 release commit)的差異。
- 若有新增或移除權限,同步更新上表「同步更新對象」欄列出的所有文件與上架頁。
- 若無變更,於該版本 worklog 的技術筆記章節標註「權限無變更」。
相關 Skill: tech-debt-capture(Phase 4 技術債務提取)
Last Updated: 2026-04-01 Version: 1.0.0
修改 source 後必須重新安裝
重要:本 skill 透過
uv tool install安裝為獨立 CLI,source(本目錄)與 installed(~/.local/share/uv/tools/<package>/)是兩份獨立 Python package。修改 source 後若未 reinstall,CLI 仍使用 stale installed 版本,新增的函式會 AttributeError 或被 hasattr 包裝靜默吞掉(W11-037 根因)。
修復指令:
cd .claude/skills/<本 skill 目錄> && uv tool install . --force --reinstall
自動偵測:每次 SessionStart 由 uv-tool-staleness-check-hook 比對 source vs installed SHA256,偵測 stale 時提示修復指令。對應 ticket-skill 本身另有 ticket-reinstall-hook 自動 reinstall。