generate-changelog-zh-twlisted
Install: claude install-skill CloudyWing/ai-dotfiles
# 產生 CHANGELOG(繁體中文)
## 格式基礎
檔名為 `CHANGELOG.md`,文件標題為 `# Changelog`。全大寫是根目錄檔名慣例(與 `README.md`、`LICENSE.md` 同類),標題屬於給人閱讀的散文層,採一般標題大小寫,兩者不共用同一套規則。[Keep a Changelog](https://keepachangelog.com/) 的規格頁範例與該專案自身的 `CHANGELOG.md` 皆採 `# Changelog`。
版本區段的結構沿用 conventional-changelog 風格,與 Keep a Changelog 規格不同,差異如下:
| 項目 | 本 Skill | Keep a Changelog |
| --- | --- | --- |
| 版本標題 | `## v1.2.0 (2026-04-04)` | `## [1.2.0] - 2026-04-04` |
| 分類名稱 | New Features/Bug Fixes/Improvements/BREAKING CHANGE | Added/Changed/Deprecated/Removed/Fixed/Security |
採 conventional-changelog 分類的理由是條目由 Conventional Commits 的 type 推導,分類與 commit type 一對一對應。版本號依 MinVer 規格推進,條目語言使用台灣用語正體中文。
## 使用方式
```
/generate-changelog-zh-tw [版本號]
```
若未傳入版本號,依 MinVer 規格自動推算下一個版本號(見步驟 1)。
## 執行步驟
### 1. 確認版本號
**已傳入版本號**:直接使用,確認格式符合 `MAJOR.MINOR.PATCH`(可含預發布後綴如 `-preview.1`)。
**未傳入版本號**,依序嘗試以下來源:
1. **從分支名稱推算**:執行 `git branch --show-current` 取得當前分支名稱。
- 若符合 `release/vX.Y.Z` 或 `hotfix/vX.Y.Z` 格式,擷取版本號(去掉 `v` 前綴),直接使用。
- 若不符合上述格式,進入下一步。
2. **從 Git Tag 推算**:執行 `git tag --sort=-v:refname | head -1` 取得最新標籤,讀取自上次標籤以來的 commit 類型,依下列規則推算:
- 有任何 `BREAKING CHANGE` → 升 MAJOR。
- 有 `feat:` 但無 Breaking Change → 升 MINOR。
- 僅有 `fix:`、`docs:`、`chore:` 等 → 升 PATCH。
3. **無任何標籤**:詢問使用者初始版本號(預設建議 `0.1.0`)。
### 2. 取得 Commit 紀錄
執行:
```bash
git log [上次標籤]..HEAD --pretty=format:"%H %s" --no-merges
```
若無標籤,改用:
```bash
git log --pretty=format:"%H %s" --no-merges
```
### 3. 過濾與分類 Commit
依 Conventional Commits 類型分類,過濾掉非使用者可