From 707e0a5f2f47cd5207bd334c60a2ae64d44745ba Mon Sep 17 00:00:00 2001 From: Jeffery Date: Sat, 11 Jul 2026 12:09:20 +0000 Subject: [PATCH] =?UTF-8?q?docs(code-review-resolve):=20=E8=A3=9C=E5=BC=B7?= =?UTF-8?q?=20C=20=E9=9A=8E=E6=AE=B5=E7=9B=A4=E9=BB=9E=E8=88=87=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E8=A6=8F=E5=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/code-review-resolve/SKILL.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/skills/code-review-resolve/SKILL.md b/skills/code-review-resolve/SKILL.md index f31292c..59575c8 100644 --- a/skills/code-review-resolve/SKILL.md +++ b/skills/code-review-resolve/SKILL.md @@ -12,7 +12,7 @@ argument-hint: "[--findings ] [--target <目標分支>] [- | --- | --- | | A. Git 同步 | `git fetch` → 當前分支不在遠端則切換 develop(再退而 master)→ `git pull`/必要時解衝突 → 只有來源分支與 PR 目標分支相同時才建立新工作分支 | | B. 解決問題 | 讀 `findings.json` / `exclusions.json` → 依等級 🔴→🟠→🟡→🔵 逐條修復或判斷誤報 → 已解決者自 `findings.json` 移除,誤報寫入 `exclusions.json` 後也可移除;**無待處理問題則跳到階段 D** | -| C. 分類提交 | 必須分析並涵蓋工作區所有變更(已修改/新增/刪除/改名,含 findings/exclusions 更新)→ 依 feat/fix/docs/style/refactor/perf/test/chore/revert 分組 → 各組一個 commit | +| C. 分類提交 | 必須分析並涵蓋工作區所有變更(已修改/新增/刪除/改名,含已暫存與未暫存、未追蹤檔、findings/exclusions 更新)→ 依 feat/fix/docs/style/refactor/perf/test/chore/revert 分組 → 各組一個 commit | | D. Push 當前分支 | 認證管理器 → 失敗改 token → 再失敗詢問使用者;**無 commit 可 push 則跳到階段 E** | | E. 發出 PR | 確定目標分支(不明必問)→ 選 PR 描述(完整/簡單/自訂)→ token 呼叫 Gitea API 建 PR → 通知並清除內文 | @@ -237,16 +237,17 @@ canonical 等級為 `critical` / `warning` / `info`;其他寫法容錯對應 ### C1. 盤點工作區變更 ```bash -git status --porcelain +git status --porcelain=v1 -uall git diff # 已追蹤檔的未暫存變更 git diff --staged # 已暫存變更 +git ls-files --others --exclude-standard # 未追蹤檔 ``` -涵蓋**所有**變更:已修改、新增(未追蹤)、刪除、改名。**無任何變更** → 回報「工作區無變更可提交」,跳過提交直接進入階段 D(D 會因無 commit 可 push 而跳到階段 E)。 +盤點時必須以 `git status --porcelain=v1 -uall` 為主,不可只看 `git diff`,因為那會漏掉未追蹤檔。盤點範圍必須包含**所有**變更:已修改檔、新增檔(`??` 未追蹤檔)、刪除檔、改名檔,以及已暫存與未暫存變更。`git diff`、`git diff --staged`、`git ls-files --others --exclude-standard` 只作為輔助核對。**無任何變更** → 回報「工作區無變更可提交」,跳過提交直接進入階段 D(D 會因無 commit 可 push 而跳到階段 E)。 ### C2. 依異動內容歸類 conventional commit 類型 -逐一檢視每個變更檔的**實際異動內容**(不只看路徑),歸入下列其一: +逐一檢視每個變更檔的**實際異動內容**(不只看路徑),歸入下列其一;**所有 `??` 未追蹤檔都必須納入分類**,不能因為它們不在 `git diff` 裡就漏掉: | type | 適用情境 | | --- | --- | @@ -262,10 +263,11 @@ git diff --staged # 已暫存變更 - **同一檔案橫跨多型** → 以該檔**主要異動性質**歸類;難以拆分時就近歸入影響最大的一類,並在總結註記。 - **階段 B 修復產生的變更**:依其性質歸類(修 bug→`fix`、補功能→`feat`、改文件→`docs`…)。`findings.json` / `exclusions.json` 的問題狀態更新歸 `chore`。 +- **未追蹤新檔**:必須照實際內容歸入對應 type,必要時在提交前明確 `git add -- `,不可因為是新檔就略過。 ### C3. 產出提交計畫 -把變更檔依 type 分組,**每個 type 一個 commit**,輸出提交計畫;除非使用者要求確認或分組有不可忽略的取捨,否則直接提交: +把變更檔依 type 分組,**每個 type 一個 commit**,輸出提交計畫;**所有變更項目都必須被追蹤並納入計畫,不能遺漏任何 `??` 未追蹤檔**。除非使用者要求確認或分組有不可忽略的取捨,否則直接提交: | 順序 | type(範圍) | commit 訊息 | 納入檔案 | | --- | --- | --- | --- | @@ -280,6 +282,7 @@ git diff --staged # 已暫存變更 - `一句總結`:把這個 commit 內所有異動**總結成一句**繁體中文(簡短、聚焦做了什麼)。 - 範例:`feat(使用者登入): 新增帳密登入與 token 簽發`、`fix(結帳流程): 修正空購物車導致的結帳例外`、`perf(物件查詢): 改用批次查詢降低 DB 往返`、`docs(README): 補上安裝與呼叫方式說明`、`chore(ai-review 狀態): 更新 findings.json 與 exclusions.json`。 - **提交順序建議**:`fix`/`feat` 等核心異動在前,`docs`/`style`/`chore` 在後(純屬建議,可依相依性調整)。 +- **盤點要求**:提交計畫必須完整對應 C1 盤點出的所有變更項目,若有新檔或未追蹤檔,必須明確列入對應 commit,不能只根據 `git diff` 下結論。 ### C4. 執行分類提交 @@ -292,6 +295,8 @@ git commit -m "type(範圍): 一句總結" # 範圍=實際異動的功能/ - **逐組 add/commit**,確保每個 commit 只含該類異動;不要一次 `git add -A` 再混在一起。 - 改名/刪除檔一併納入對應組的 `git add`(`git add -A -- <路徑>` 或明確列出)。 +- **所有 `??` 未追蹤檔都必須納入提交**;若是新檔,必要時要明確執行 `git add -- `,不可漏掉。 +- **不可只根據 `git diff` 判斷變更**;C1 盤點出的所有異動都必須反映到分類與提交,否則視為提交計畫不完整。 - commit 完成後進入階段 D(push)。`--no-commit` 時不進入後續階段;若工作區無變更而沒有產生任何新 commit,仍進入階段 D,由 D 判斷無 commit 可 push 後跳到階段 E。 ---