commit-message

📁 gn00678465/agentskills 📅 Jan 26, 2026
0
总安装量
3
周安装量
安装命令
npx skills add https://github.com/gn00678465/agentskills --skill commit-message

Agent 安装分布

github-copilot 3
gemini-cli 3
amp 1
opencode 1
kimi-cli 1
codex 1

Skill 文档

慣例式提交訊息生成器

根據 Conventional Commits 1.0.0-beta.4 規範,分析 git staged changes 並自動生成繁體中文 commit message。

使用時機

  • 需要為 staged changes 生成 commit message
  • 想要符合慣例式提交規範的提交訊息
  • 需要繁體中文描述的 commit message

慣例式提交規範

完整規範請參考 references/conventional-commits-spec.md

組成結構

<類型>[可選的作用範圍]: <描述>

[可選的正文]

[可選的頁腳]

類型(Type)

根據官方規範,以下兩種類型具有語意化版本意義:

類型 SemVer 說明
feat MINOR 新增功能
fix PATCH 修正臭蟲

以下類型由 @commitlint/config-conventional 推薦使用:

類型 說明
docs 文件更新
style 程式碼格式調整(不影響功能)
refactor 重構程式碼
perf 效能優化
test 測試相關
build 建置系統或外部相依性
ci CI 設定檔案
chore 其他雜項(工具、配置等)
revert 撤銷先前的 commit

作用範圍(Scope)- 可選

  • 作用範圍必須由描述程式區段的名詞組成,並用括號包覆
  • 範例:feat(parser):、fix(api):、chore(eslint):

描述(Subject)

  • 必須緊接在類型/作用範圍的冒號與空格之後
  • 本 Skill 要求使用繁體中文撰寫
  • 限制在 50 字元以內
  • 使用祈使句(如:「新增」、「修正」、「更新」)
  • 不加句號
  • 清楚描述變更的核心內容

正文(Body)- 可選

  • 必須在描述後的一個空行之後開始
  • 本 Skill 要求使用繁體中文撰寫
  • 使用項目符號列表(- 開頭)
  • 每個項目描述一個具體變更
  • 優先說明做了什麼,必要時補充原因
  • 使用台灣常用技術詞彙(如:「套件」、「設定」、「腳本」)

頁腳(Footer)- 可選

  • 包含關於提交的詮釋資訊
  • 範例:相關的拉取請求、審核者、重大變更
  • 每個詮釋資訊一行

重大變更(Breaking Changes)

根據官方規範,重大變更對應到 SemVer 的 MAJOR 版本。標示方式:

方式一:在類型後加 !

feat(api)!: 變更使用者認證機制

BREAKING CHANGE: 移除舊版 API 端點,所有用戶端需更新至新版 SDK

方式二:僅在頁腳標示

feat: 變更使用者認證機制

- 實作新版 OAuth 2.0 流程
- 移除舊版 session 認證

BREAKING CHANGE: 移除舊版 API 端點,所有用戶端需更新至新版 SDK

規範要求:

  • BREAKING CHANGE 必須大寫
  • 使用 ! 提示時,正文或頁腳內必須包含 BREAKING CHANGE: description

執行步驟

步驟 1:取得變更資訊

# 檢查當前狀態與分支
git status

# 查看已 staged 的變更統計
git diff --staged --stat

# 查看已 staged 的變更內容
git diff --staged

步驟 2:檢查分支

判斷當前分支是否為 main 或 master:

情況 A(安全分支): 若當前不是 main 或 master 分支

  • 繼續執行步驟 3

情況 B(主分支): 若當前是 main 或 master 分支

  • 停止後續操作
  • 依據變更內容,建議符合規範的新分支名稱
    • 範例:feat/login-form-validation、fix/payment-bug
  • 回報錯誤:請先切換至建議的分支(或自訂分支)後,再執行 commit。

步驟 3:分析複雜度

根據 git diff --staged --stat 輸出,使用以下評分系統計算複雜度:

複雜度評分表

起始分數為 0,符合條件則加分:

類別 條件 分數
變更量 變更行數 > 200 +3
變更檔案數 > 5 +2
高風險檔案 涉及 lock 檔案(package-lock.json、yarn.lock、pnpm-lock.yaml) +5(強制複雜模式)
涉及資料庫 Schema 或 Migration +3
涉及認證或安全邏輯(auth、security、permission) +3
架構變更 涉及設定檔(*.config.*、.env*) +2
涉及 CI/CD 設定(.github/、.gitlab-ci.yml) +2

步驟 4:選擇提交模式

根據總分選擇提交模式:

情況 A:簡單模式(分數 < 4)

  • 直接使用 -m 參數生成 commit message
  • 適用於小型、低風險的變更
git commit -m "feat: 新增使用者登入功能"

多行訊息:

git commit -m "feat: 新增使用者登入功能" -m "- 實作 JWT 認證機制
- 新增登入表單驗證"

情況 B:複雜模式(分數 >= 4)

  • 使用檔案方式生成詳細的 commit message
  • 適用於大型、高風險或需要詳細說明的變更
# 將訊息寫入 .git/COMMIT_EDITMSG
git commit -F .git/COMMIT_EDITMSG

或使用獨立檔案(提交後需清理):

# macOS/Linux
git commit -F commit-message.txt && rm -f commit-message.txt

# Windows
git commit -F commit-message.txt
# 提交後手動刪除 commit-message.txt

步驟 5:生成 Commit Message 並確認

  1. 分析變更類型和影響範圍
  2. 根據變更內容決定最適合的 commit type
  3. 依據步驟 4 選擇的模式,輸出完整的 Commit Message
  4. 輸出對應的 git commit 指令
  5. 詢問使用者:是否需要協助執行 commit?
    • 是:執行 git commit 指令完成提交
    • 否:由使用者自行複製指令執行

範例

詳細範例請參考 references/examples.md,涵蓋:

  • 基礎範例:feat、fix、docs、style、refactor、perf、test、build、ci、chore、revert
  • 進階範例:含作用範圍、破壞性變更、問題編號、共同作者、複雜變更
  • 不良範例:常見錯誤寫法與修正建議

快速參考:

feat: 新增使用者登入功能

- 實作 JWT 認證機制
- 新增登入表單驗證
fix(cart): 修正購物車金額計算錯誤

- 修正折扣碼套用順序問題

注意事項

  • 只有 staged 狀態的變更會被考慮
  • 未 staged 的變更不會包含在 commit message 分析中
  • 建議先使用 git add 選擇性地 stage 要提交的變更
  • 若變更過於複雜,建議拆分為多個獨立的 commit
  • 當提交符合一或多種提交類型時,應盡可能切成多個提交

常用技術詞彙對照

英文 繁體中文(台灣慣用)
package 套件
config/configuration 設定
script 腳本
dependency 相依性
component 元件
module 模組
function 函式
variable 變數
parameter 參數
implement 實作
initialize 初始化
optimize 優化
refactor 重構
validate 驗證
authentication 認證
authorization 授權
bug 臭蟲
pull request 拉取請求

參考資料