SKILL.md
readonlyread-only
name
git-commit
description
執行 git commit,包含 Conventional Commit 訊息分析、智慧暫存與訊息產生。當使用者要求提交變更、建立 git commit 或提及 "/commit" 時使用。支援:(1) 從變更自動偵測類型與範圍,(2) 從 diff 產生 Conventional Commit 訊息,(3) 互動式提交,可覆寫類型/範圍/描述,(4) 智慧檔案暫存以進行邏輯分組
Git Commit with Conventional Commits
概述
使用 Conventional Commits 規範建立標準化、語義化的 git 提交。分析實際 diff 以決定適當的類型、範圍與訊息。
Conventional Commit 格式
<類型>[可選範圍]: <描述>
[可選正文]
[可選頁尾]
提交類型
| 類型 | 用途 |
|---|---|
feat |
新功能 |
fix |
錯誤修正 |
docs |
僅文件 |
style |
格式/風格(無邏輯變更) |
refactor |
程式碼重構(無功能/錯誤修正) |
perf |
效能改善 |
test |
新增/更新測試 |
build |
建置系統/相依性 |
ci |
CI/設定變更 |
chore |
維護/雜項 |
revert |
還原提交 |
重大變更
# 類型/範圍後加驚嘆號
feat!: 移除已棄用的端點
# BREAKING CHANGE 頁尾
feat: 允許設定檔擴充其他設定檔
BREAKING CHANGE: `extends` 鍵的行為已變更
工作流程
1. 分析 Diff
# 若檔案已暫存,使用暫存 diff
git diff --staged
# 若無暫存,使用工作目錄 diff
git diff
# 同時檢查狀態
git status --porcelain
2. 暫存檔案(如有需要)
若無暫存或想以不同方式分組變更:
# 暫存特定檔案
git add path/to/file1 path/to/file2
# 依模式暫存
git add *.test.*
git add src/components/*
# 互動式暫存
git add -p
絕不提交機密資訊(.env、credentials.json、私鑰)。
3. 產生提交訊息
分析 diff 以決定:
- 類型:這是哪種變更?
- 範圍:影響哪個區域/模組?
- 描述:一行摘要變更內容(現在式、祈使語氣、少於 72 字元)
4. 執行提交
# 單行
git commit -m "<類型>[範圍]: <描述>"
# 多行含正文/頁尾
git commit -m "$(cat <<'EOF'
<類型>[範圍]: <描述>
<可選正文>
<可選頁尾>
EOF
)"
最佳實務
- 每次提交一個邏輯變更
- 現在式:"add" 而非 "added"
- 祈使語氣:"fix bug" 而非 "fixes bug"
- 參考議題:
Closes #123、Refs #456 - 描述保持在 72 字元內
Git 安全協定
- 絕不更新 git config
- 未經明確要求,絕不執行破壞性指令(--force、hard reset)
- 除非使用者要求,絕不跳過 hooks(--no-verify)
- 絕不強制推送至 main/master
- 若因 hooks 導致提交失敗,修正後建立新提交(不修改舊提交)






