← ClaudeAtlas

dhpk-git-smart-commitlisted

將雜亂的 git 變更依邏輯分群、逐批提交,適用於需要把多項變更拆成多個邏輯一致 commit 的情境。Not for: 單一小變更或只��要一個 commit(直接 commit 即可)。Output: 可直接執行的分組提交計畫與 commit 指令。
hmj1026/dhpk · ★ 2 · Code & Development · score 71
Install: claude install-skill hmj1026/dhpk
# Git Smart Commit — 智慧拆分提交 將目前所有 staged / unstaged 變更,依功能邏輯分群後,逐批 `git add` + `git commit`。 --- ## When NOT to Use - 只有單一檔案、單一目的且預期只需要 1 個 commit。 - 目前在 merge/rebase 衝突中,尚未完成衝突解決。 - 使用者要求「只生成一筆 commit」或「僅提供訊息模板」。 --- ## 流程 — SSOT: `rules/execution-policy.md` owns commit/review safety; this skill owns grouping evidence ### 1. 檢查變更狀態 執行以下指令取得完整變更清單: ```bash git status --short ``` 若沒有任何變更,告知使用者「目前沒有需要提交的變更」後結束。 接著取得所有變更的 diff 內容(用來判斷分群邏輯): ```bash git diff git diff --cached ``` --- ### 2. 分析並分群 根據以下維度,將檔案變更分成多個 **commit 群組**,每組代表一個獨立的邏輯單元: #### 分群依據(優先順序) | 優先級 | 維度 | 範例(依專案實際路徑調整) | |--------|------|------| | 1 | **專案設定 / 核心與 AI 規則** | 依套件管理檔(`composer.json` / `package.json` / `pyproject.toml` 等)、框架設定目錄、`.gitignore`、`CLAUDE.md`、`AGENTS.md`、根目錄 `*.md` | | 2 | **資料表異動 (Migration)** | 專案的 migrations 目錄 | | 3 | **領域邏輯 (Domain / Infra)** | DDD 風格時的 `domain/*` 與 `infrastructure/*`;其他架構則依專案分層 | | 4 | **MVC 架構 (Controller/Model)** | 框架對應的 controllers / models / views 路徑 | | 5 | **核心工具 / 共用元件** | 專案自有共用元件或內部基礎庫 | | 6 | **前端 / Legacy JS bundle** | 主要 JS bundle(`js/*` 等)、`css/*` | | 7 | **自動化測試** | 專案測試目錄(`tests/*` 等) | | 8 | **文件 / 規格 (OpenSpec)** | `docs/*`、`openspec/*` | #### 分群規則 - **領域模型與基礎設施**:同步修改的 `Domain` 與對應的 `Infrastructure` 實作應視為同一組(完整業務邏輯)。 - **MVC 功能**:同一個 Feature 的 `Controller` + `Model` + `View` 可歸為同一組。 - **資料庫遷移**:`Migration` 檔案應盡量獨立成一個 commit,方便追蹤資料庫 Schema 變更。 - **測試**:若修改某個功能,連帶修改其 `tests/*` 內的測試,應合併在同一個 commit 中。 - **其他微小變更**:若某一組只有 1 個檔案且改動極小(< 5