| name | git-helper |
| version | 1.0.0 |
| description | Git 操作輔助,提供 commit message 規範、分支策略與 PR 指引 |
| author | miles990 |
| tags | ["git","version-control","commit","pull-request"] |
| interface | {"input":[{"name":"action","type":"string","description":"操作類型:commit, branch, pr, merge","required":true},{"name":"changes","type":"object","description":"變更內容(檔案列表、差異)","required":false},{"name":"context","type":"object","description":"額外上下文","required":false}],"output":[{"name":"suggestion","type":"object","description":"操作建議"},{"name":"command","type":"string","description":"建議的 git 指令"},{"name":"next_action","type":"string","description":"建議的下一步"}]} |
| triggers | [{"pattern":"準備提交","description":"準備 git commit 時"},{"pattern":"Milestone 完成","description":"Milestone 完成需要提交"},{"pattern":"建立 PR","description":"準備建立 Pull Request"}] |
Git Helper
分析變更 → 產出 commit message → 執行 git 操作
核心理念
┌─────────────────────────────────────────────────────────────────┐
│ 清晰的 git 歷史是專案的寶貴資產 │
│ │
│ 本 Skill 職責: │
│ • 產出規範的 commit message │
│ • 建議分支策略 │
│ • 協助建立 PR │
│ • 維護清晰的 git 歷史 │
└─────────────────────────────────────────────────────────────────┘
Commit Message 規範
Conventional Commits 格式
<type>(<scope>): <description>
[optional body]
[optional footer]
Type 類型
| Type | 說明 | 範例 |
|---|
feat | 新功能 | feat(auth): add login API |
fix | Bug 修復 | fix(ui): correct button alignment |
docs | 文件更新 | docs: update README |
style | 格式調整 | style: format code |
refactor | 重構 | refactor(api): extract helper |
test | 測試 | test: add user tests |
chore | 雜項 | chore: update deps |
Commit Message 產生流程
┌─────────────────────────────────────────────────────────────────┐
│ 1. 分析變更 │
│ → git diff --staged │
│ → 識別變更類型和範圍 │
│ │
│ 2. 判斷 type │
│ → 新增功能?修復 bug?重構? │
│ │
│ 3. 判斷 scope │
│ → 哪個模組受影響? │
│ │
│ 4. 撰寫 description │
│ → 簡潔說明「做了什麼」 │
│ │
│ 5. 加入 footer │
│ → Co-Authored-By 標記 │
└─────────────────────────────────────────────────────────────────┘
Commit 範例
Milestone 完成
git commit -m "$(cat <<'EOF'
feat(M2): 完成核心 UI 元件
- 2.1 建立 TodoList 元件
- 2.2 建立 TodoItem 元件
- 2.3 實作基本樣式
驗收:靜態列表可正確顯示
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
Bug 修復
git commit -m "$(cat <<'EOF'
fix(api): 修正用戶驗證失敗問題
問題:登入時偶爾出現 401 錯誤
原因:token 過期檢查邏輯錯誤
解法:修正過期時間比較運算
Fixes #123
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
分支策略
Git Flow 簡化版
main ─────────────────────────────────────────────►
│ ↑
└─── feature/xxx ─── PR ─── merge ───┘
分支命名
| 類型 | 格式 | 範例 |
|---|
| 功能 | feature/描述 | feature/add-login |
| 修復 | fix/issue-號碼 | fix/issue-123 |
| 重構 | refactor/描述 | refactor/api-layer |
Pull Request 模板
## Summary
<1-3 bullet points>
## Changes
- 變更 1
- 變更 2
## Test Plan
- [ ] 單元測試通過
- [ ] 手動測試完成
## Screenshots (if applicable)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
最小範例
用戶:提交這些變更
AI:
1. 分析 git diff
2. 識別:新增了 TodoList 元件
建議 commit:
┌─────────────────────────────────────────────────────┐
│ 📝 Commit Message │
│ │
│ feat(ui): 新增 TodoList 元件 │
│ │
│ - 建立 TodoList.jsx │
│ - 建立 TodoList.css │
│ - 實作基本列表渲染 │
│ │
│ 🤖 Generated with Claude Code │
│ Co-Authored-By: Claude <noreply@anthropic.com> │
└─────────────────────────────────────────────────────┘
要執行這個 commit 嗎?
與其他 Skill 的協作
┌─────────────────────────────────────────────────────────────────┐
│ 在工作流程中的位置 │
│ │
│ [實作] → [test-helper] → [code-reviewer] → [git-helper] │
│ ↓ │
│ commit & push │
│ ↓ │
│ 建立 PR │
└─────────────────────────────────────────────────────────────────┘
安全規則
┌─────────────────────────────────────────────────────────────────┐
│ ❌ 禁止: │
│ • 不更新 git config │
│ • 不執行 force push │
│ • 不執行 hard reset │
│ • 不跳過 hooks (--no-verify) │
│ │
│ ✅ 必須: │
│ • 每次 commit 前確認變更內容 │
│ • 包含 Co-Authored-By 標記 │
│ • 遵循 Conventional Commits 格式 │
└─────────────────────────────────────────────────────────────────┘
設計原則
- 清晰歷史 - commit message 要有意義
- 小步提交 - 一個 commit 做一件事
- 可追溯 - 能從 commit 找到對應的需求
- 規範一致 - 團隊使用統一格式
- 安全優先 - 不執行危險操作
限制與邊界
- 不執行 force push、hard reset 等危險操作
- 需要用戶確認後才執行 commit
- 複雜的 merge conflict 需要人工處理
- 不自動推送到遠端(除非用戶明確要求)