From sc-cc-plugin
依據 8 大核心原則審查程式碼的註解品質——解釋 Why 而非 What、說明魔法數字與 Hack 的原因、標示 Caveat 與副作用、TODO/FIXME 標籤規範、公開 API 合約文件、記錄未採納方案(Why Not)、連結外部脈絡、以及保持註解新鮮度。當使用者說「幫我審查/檢查/看一下這段程式碼的註解」、「這段程式碼有沒有文件」、「review my comments」、「這樣寫 OK 嗎」並貼上含有值得評估的註解的程式碼時,主動觸發此 Skill。進行 Code Review 且評估範圍包含文件品質時也應觸發。輸出為結構化審查報告,不修改程式碼。
How this skill is triggered — by the user, by Claude, or both
Slash command
/sc-cc-plugin:review-commentsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
針對使用者提供的程式碼(片段、整個檔案或 diff),依照 8 大核心原則審查每一條註解。目標是找出具誤導性、缺乏重要脈絡、或只解釋「做什麼」而非「為什麼」的問題,同時指出做得好的範例。
針對使用者提供的程式碼(片段、整個檔案或 diff),依照 8 大核心原則審查每一條註解。目標是找出具誤導性、缺乏重要脈絡、或只解釋「做什麼」而非「為什麼」的問題,同時指出做得好的範例。
只輸出審查報告,不修改或改寫任何程式碼。
需檢查的所有種類:
//、#、--、<!-- -->)/* */、""" """、(* *))TODO: / FIXME: 標籤詳細說明與完整範例請參考 references/principles.md。摘要如下:
| # | 原則 | 審查核心問題 |
|---|---|---|
| 1 | Why,而非 What | 這條注解解釋了意圖與決策,還是只在複誦程式碼的行為? |
| 2 | 魔法數字與 Hack | 每個 Workaround 和 Hardcode 的值都有解釋原因嗎? |
| 3 | Caveat 與副作用 | 潛在的地雷、順序限制、效能陷阱都有警示嗎? |
| 4 | TODO/FIXME 規範 | 標籤是否附帶脈絡說明與工作看板追蹤編號? |
| 5 | Public API 合約 | 匯出的函式/類別有完整的 JSDoc/Docstring 嗎? |
| 6 | Why Not(未採納方案) | 刻意不用顯而易見做法的原因,有寫出來嗎? |
| 7 | 連結外部脈絡 | 規格書、法規、設計文件有附連結,而非整段複製嗎? |
| 8 | 新鮮度 | 每條注解都還與當前程式碼一致嗎? |
針對每條注解,判斷它違反了哪個原則,以及嚴重程度:
在標記「缺少注解」之前,先確認程式碼本身是否已透過好的命名自我說明。isUserEligibleForFreeShipping(user, cart) 這種函式名稱已清楚表達意圖,不需要另加注解。只有當 why 真的無法從程式碼結構中推斷時,才標記為缺失。
被注解掉的程式碼:幾乎都是問題——版本控制系統已承擔歷史記錄的職責,請逐一標記。
資訊不足時,主動提問而非自行假設:審查過程中如果遇到無法單憑程式碼片段判斷的情況(例如:某個魔法數字不知道是否已在其他檔案說明、某條注解看起來過期但不確定業務邏輯是否已變更、某個設計選擇背後可能有你看不到的歷史脈絡),不要自行猜測或假設。明確指出「這裡無法判斷,原因是 XXX,請提供 YYY」,讓使用者補充必要資訊後再給出結論。錯誤的假設比沒有結論更有害。
固定使用以下結構:
原則 8:新鮮度
📍 位置:cart.js 第 3 行,getCartTotal 函式
❌ 問題:說明這條注解哪裡違反原則,以及會造成什麼具體的困惑或 Bug
💡 建議:具體的改善方向
(依此類推)
(依此類推)
列出 1–3 個做得好的注解,說明好在哪裡。指出好的示範和指出壞的一樣重要——讓開發者知道哪個方向是對的。
列出程式碼中應該有但沒有的位置。只列出 why 真的不明顯、不寫會讓未來工程師困惑的地方,不要為了補充而補充。
這個區塊供下游 rewrite skill 使用。將上方報告所有有行動意義的項目轉換成結構化清單,rewriter 可以直接依此執行,不需重新判斷。
每個項目必須包含:
id:流水號action:REWRITE(改寫)、DELETE(刪除)、FLAG(資訊不足,需人工確認)、KEEP(良好,不動)file:檔案名稱(必填,例如 cart.js、utils/reward.py;若使用者未提供檔名則填 unknown)line:注解所在的起始行號(必填,rewriter 依此定位;若為多行注解則填起始行)location:輔助描述(函式名稱或簡短情境說明,供人類閱讀用)original:原始注解文字reason:為什麼要這樣處理(一行,供人類審閱用)suggested:(僅 REWRITE 需填)建議的新注解文字question:(僅 FLAG 需填)需要人工回答的問題,rewriter 會向使用者提問後再執行[
{
"id": 1,
"action": "REWRITE",
"file": "cart.js",
"line": 5,
"location": "getCartTotal 函式上方",
"original": "// 計算購物車總金額(注意:此金額已經包含 60 元基本運費)",
"reason": "過期誤導性注解:函式實際只計算商品總價,不含運費",
"suggested": "// 取得購物車內所有商品的純商品總價(不含運費與優惠折抵)"
},
{
"id": 2,
"action": "DELETE",
"file": "cart.js",
"line": 32,
"location": "checkout 函式內,if (!user.isVerified) 上方",
"original": "// 先驗證",
"reason": "複誦 What,程式碼本身已自我說明"
},
{
"id": 3,
"action": "FLAG",
"file": "cart.js",
"line": 18,
"location": "calcLateFee 函式內",
"original": "// TODO: fix later",
"reason": "空洞 TODO,缺乏說明與票號,需人工補充",
"question": "這個 TODO 具體要修什麼?是否有對應的 Jira/issue 追蹤編號?"
},
{
"id": 4,
"action": "KEEP",
"file": "cart.js",
"line": 35,
"location": "checkout 函式內,await reserveInventory 上方",
"original": "// 這裡不能用 Promise.all,必須按順序執行",
"reason": "正確的 Caveat 注解,警示了潛在的重構陷阱"
}
]
規則:
file + line 是 rewriter 精確定位的唯一依據,兩者都不可省略。若使用者未提供檔名,填 unknown;若程式碼片段沒有行號,從第 1 行開始自行計算。直接、具體、實用。每個問題都說明它可能造成什麼困惑或 Bug,不只是說「違反了原則 X」。
如果整個程式碼完全沒有注解,但命名清晰到無需說明,要明確且正面地肯定這件事。
審查整個檔案時,依嚴重程度和實際影響排優先順序。有嚴重問題時不要在次要問題上打轉——三個重點清楚的問題,遠比十個模糊的問題更有價值。
npx claudepluginhub dannychou7911/sc-cc-pluginCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.