From cc-copilot-plugin
分析 git staged changes 並根據 Conventional Commits (1.0.0-beta.4) 規範自動生成繁體中文 commit message 與建議的分支名稱。使用時機包括:(1) 需要為已暫存 (staged) 的變更生成符合規範的提交訊息、(2) 需要根據變更內容建議一個有意義的分支名稱、(3) 確保提交包含正確的類型 (type) 與範圍 (scope)、(4) 在主分支 (main/master) 工作時需要自動化分支建議。適用於包含「幫我寫 commit message」、「產生 commit」、「建立 branch」、「取個分支名」、「提交變更」等請求的情境。會根據變更量與風險自動選擇簡單或詳細的提交模式。
How this skill is triggered — by the user, by Claude, or both
Slash command
/cc-copilot-plugin:commit-messageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
根據 [Conventional Commits 1.0.0-beta.4](https://www.conventionalcommits.org/zh-hant/v1.0.0-beta.4/) 規範,分析 git staged changes 並自動生成繁體中文 commit message 與建議的分支名稱。
根據 Conventional Commits 1.0.0-beta.4 規範,分析 git staged changes 並自動生成繁體中文 commit message 與建議的分支名稱。
完整規範細節請參考
references/conventional-commits-spec.md;本檔只保留 skill 的執行流程與本 skill 特有的格式約束。
main/master 直接提交,並引導切換至建議分支。references/terminology.md)- 開頭)feat(parser):、fix(api):、chore(eslint):| 類型 | 用途 | SemVer |
|---|---|---|
feat | 新增功能 | MINOR |
fix | 修正臭蟲 | PATCH |
docs | 文件更新 | — |
style | 程式碼格式調整(不影響功能) | — |
refactor | 重構程式碼 | — |
perf | 效能優化 | — |
test | 測試相關 | — |
build | 建置系統或外部相依性 | — |
ci | CI 設定檔案 | — |
chore | 其他雜項 | — |
revert | 撤銷先前的 commit | — |
兩種標示方式(擇一或合併使用):
!:feat(api)!: 變更使用者認證機制BREAKING CHANGE: <描述>(BREAKING CHANGE 必須大寫)使用 ! 時,正文或頁腳必須包含 BREAKING CHANGE: description。完整範例見 references/examples.md。
執行輔助腳本,輸出為單一 JSON 物件:
uv run <skill-dir>/scripts/analyze_git.py
# 或(無 uv 時)
python <skill-dir>/scripts/analyze_git.py
輸出 JSON schema:
{
"branch": "feature/foo",
"is_main": false,
"score": 7,
"risk_factors": ["大量變更 (250 行)", "涉及認證或安全邏輯"],
"files_changed": 4,
"total_lines": 250,
"insertions": 200,
"deletions": 50,
"files": {
"new": ["src/login.tsx"],
"modified": ["src/auth.ts"],
"deleted": [],
"renamed": []
},
"suggested_branches": ["feat/login", "feat/auth-logic"]
}
| 欄位 | 說明 |
|---|---|
files.new | 新增的檔案(git status 顯示 A) |
files.modified | 修改的現有檔案(顯示 M) |
files.deleted | 刪除的檔案(顯示 D) |
files.renamed | 重新命名或複製的檔案(R/C,格式 "old -> new") |
若無 staged 變更,腳本會以非零 exit code 結束並於 stderr 輸出錯誤。
依 is_main 判斷:
情況 A(安全分支): is_main = false
情況 B(主分支): is_main = true
suggested_branches 建議符合規範的新分支名稱(例如:feat/login-form-validation、fix/payment-bug)。請先切換至建議的分支(或自訂分支)後,再執行 commit。依 score 與 risk_factors 決定生成深度:
| 分數 | 模式 | 行為 |
|---|---|---|
< 4 | 簡單 | 生成單行 commit message(type + subject) |
4 ≤ score ≤ 8 | 詳細 | 生成含正文(Body)的 commit message |
> 8 | 拆分 | 進入步驟 4,停止單一 commit 流程 |
當 staged 變更橫跨多種提交類型(例如同時含 feat 與 build)時,即使 score ≤ 8 也應進入步驟 4。
停止產出單一 commit message,改以拆分引導回應使用者:
git reset 指令(取消目前 staging)git add 的檔案清單### ⚠️ 偵測到高複雜度變更 (Score: 10)
本次變更涉及認證邏輯重構與套件更新,建議拆分為兩個提交以符合原子化原則:
#### 第一步:重構認證邏輯
1. 執行:`git reset`
2. 執行:`git add src/auth.ts src/security.ts`
3. Commit Message:`refactor(auth): 重構認證模組安全性邏輯`
#### 第二步:更新套件
1. 執行:`git add pnpm-lock.yaml`
2. Commit Message:`build: 更新相依性鎖定檔`
依檔案狀態決定 commit type(優先使用,再搭配 diff 內容確認):
| 狀況 | 建議類型 |
|---|---|
files.new 為主,且為功能性程式碼 | feat |
files.new 為主,且為測試檔案(*.test.*, *.spec.*) | test |
files.new 為主,且為文件(.md, .txt) | docs |
僅有 files.modified,修正問題邏輯 | fix |
僅有 files.modified,程式碼重構(無功能變更) | refactor |
僅有 files.renamed 或檔案搬移 | refactor |
僅有 files.deleted(清理舊程式碼) | chore 或 refactor |
| 混合多種狀態,涉及功能新增 | feat(並考慮拆分) |
結合 git diff 內容確認描述的精確性。
將完整的 Commit Message 覆寫至 .git/COMMIT_EDITMSG(使用檔案寫入工具)。
輸出對應的 git commit 指令:
git commit -F .git/COMMIT_EDITMSG
詢問使用者:是否需要協助執行上述 commit 指令?
詳細範例請參考 references/examples.md,涵蓋:
快速參考:
feat: 新增使用者登入功能
- 實作 JWT 認證機制
- 新增登入表單驗證
fix(cart): 修正購物車金額計算錯誤
- 修正折扣碼套用順序問題
git add 選擇性地 stage 要提交的變更。package-lock.json、yarn.lock、pnpm-lock.yaml、bun.lockb、Cargo.lock、go.sum、poetry.lock、Gemfile.lock、composer.lock。references/conventional-commits-spec.md - 慣例式提交 1.0.0-beta.4 完整規範references/examples.md - 各類型 commit message 範例集references/terminology.md - 繁體中文(台灣慣用)技術詞彙對照Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub gn00678465/cc-copilot-plugins --plugin cc-copilot-plugin