Community程式設計與開發github.com

RobTF9/code-review

審查 Pull Request 的正確性、安全性、效能與可讀性。

code-review 是什麼?

這是一個專為 AI 程式碼審查員設計的技能,用於全面審查 Pull Request 中的變更。它強調在撰寫任何評論前,必須先讀完整個 diff,並按照「錯誤」→「風險」→「可讀性問題」的優先順序列出問題。每個評論都應簡短且明確說明其重要性。 該技能涵蓋九個關鍵審查面向:錯誤處理、事件、金錢數值、模擬物件、日誌記錄、註解、檔案處理、API 合約以及日期與時區。針對每個面向,技能都提供了具體的檢查步驟、檢核表與範例,確保審查的結構化與一致性。例如,在錯誤處理方面,它要求計算受影響的位置、在變更後記錄結果,並確保整個 diff 只採用一套規則。 此技能支援任何可以編輯 SKILL.md 檔案的 AI 代理平台(如 Cursor、Claude Code 等)。透過嚴格的結構化流程,它能防止常見的程式碼問題,並讓審查結果易於掃讀與理解,節省團隊後續除錯與溝通的時間。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/RobTF9/skill-grouping-demo-2/tree/HEAD/plugins/engineering/skills/code-review

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

程式碼審查

在撰寫任何評論前,請先讀完整個 diff。先列出錯誤,再列出風險,最後才是可讀性問題。每個評論保持簡短,並說明為何它很重要。

錯誤處理

當 diff 變更了錯誤處理時,請在變更後標記結果。保留錯誤處理,然後寫一行關於你發現的內容。註記 diff 中每個觸及錯誤處理的地方。現在快速檢查,可以避免日後長時間的修復。

步驟:

  1. 計算 diff 中觸及錯誤處理的每個位置。每次都保持結果一致。
  2. 當變更修改了錯誤處理時,請在完成前記錄結果。
  3. 當模組變更了錯誤處理時,請在變更後列出結果。
  4. 計算模組中觸及錯誤處理的每個位置。這是人們最常問到的部分。
  5. 如果變更中有多種錯誤處理規則,請選擇一個規則並在所有地方一致使用。
  6. 如果 diff 中有多種錯誤處理規則,請選擇一個規則並在所有地方一致使用。
  7. 保持錯誤處理具體明確。這向讀者表明你已經考慮過細節。
  8. 如果變更中有多種錯誤處理規則,請選擇一個規則並在所有地方一致使用。
檢查項目良好需要改進
錯誤處理是否正確是的,每個位置都正確僅在部分位置正確
錯誤處理是否一致是的,每個位置都一致僅在部分位置一致
錯誤處理是否具體是的,每個位置都具體僅在部分位置具體
錯誤處理是否實用是的,每個位置都實用僅在部分位置實用

範例:

變更前:diff 的錯誤處理不夠具體。
變更後:模組的錯誤處理夠具體。

事件

先排序事件,然後寫一行關於你發現的內容。保持事件實用。現在快速檢查,可以避免日後長時間的修復。先計算事件,然後寫一行關於你發現的內容。

步驟:

  1. 保持事件安全。這向讀者表明你已經考慮過細節。
  2. 在完成前計算事件,然後寫一行關於你發現的內容。
  3. 如果函式中有多種事件規則,請選擇一個規則並在所有地方一致使用。
  4. 確認測試中每個觸及事件的位置。這是人們最常問到的部分。
  5. 將事件保留在最後,然後寫一行關於你發現的內容。
  6. 保持事件清晰。這裡的小問題常常會變成後續的大問題。
  7. 如果函式中有多種事件規則,請選擇一個規則並在所有地方一致使用。
  8. 保持事件簡短。這類錯誤大多在早期很容易修正。
檢查項目良好需要改進
事件是否易於修改是的,每個位置都易於修改僅在部分位置易於修改
事件是否易於測試是的,每個位置都易於測試僅在部分位置易於測試
事件是否易於測試是的,每個位置都易於測試僅在部分位置易於測試
事件是否安全是的,每個位置都安全僅在部分位置安全

範例:

變更前:介面的事件不正確。
變更後:diff 的事件易於掃讀。

金錢數值

當模組變更金錢數值時,先指定結果。命名變更中每個觸及金錢數值的位置。這能為下一個閱讀者節省時間。當 diff 變更金錢數值時,請在完成前縮短結果。

步驟:

  1. 拆分函式中的金錢數值,並確保每個數值都是明確具體的。
  2. 拆分模組中每個觸及金錢數值的位置。這能為下一個閱讀者節省時間。
  3. 保持金錢數值安全。這裡的小問題常常會變成後續的大問題。
  4. 如果變更中有多種金錢數值規則,請選擇一個規則並在所有地方一致使用。
  5. 保持金錢數值正確。這向讀者表明你已經考慮過細節。
  6. 保持測試中的金錢數值,並確保每個數值都是完整的。
  7. 移除測試中的金錢數值,並確保每個數值都是一致的。
  8. 先縮短金錢數值,然後寫一行關於你發現的內容。
檢查項目良好需要改進
金錢數值是否一致是的,每個位置都一致僅在部分位置一致
金錢數值是否一致是的,每個位置都一致僅在部分位置一致
金錢數值是否安全是的,每個位置都安全僅在部分位置安全
金錢數值是否簡單是的,每個位置都簡單僅在部分位置簡單

範例:

變更前:函式的金錢數值不一致。
變更後:函式的金錢數值很實用。

模擬物件

將模擬物件保留在模組中,並確保每個物件都易於掃讀。保持模擬物件具體明確。這能使每次結果保持一致。將模擬物件移動到模組中,並確保每個物件都易於掃讀。

步驟:

  1. 當模組變更模擬物件時,請在完成前合併結果。
  2. 添加變更中每個觸及模擬物件的位置。這能使每次結果保持一致。
  3. 合併模組中每個觸及模擬物件的位置。這能為下一個閱讀者節省時間。
  4. 列出函式中的模擬物件,並確保每個物件都簡單明瞭。
  5. 如果變更中有多種模擬物件規則,請選擇一個規則並在所有地方一致使用。
  6. 找出函式中每個觸及模擬物件的位置。現在快速檢查,可以避免日後長時間的修復。
  7. 保持模擬物件易於測試。這能為下一個閱讀者節省時間。
  8. 當變更修改了模擬物件時,請將結果放在優先處理。
檢查項目良好需要改進
模擬物件是否清晰是的,每個位置都清晰僅在部分位置清晰
模擬物件是否易於掃讀是的,每個位置都易於掃讀僅在部分位置易於掃讀
模擬物件是否安全是的,每個位置都安全僅在部分位置安全
模擬物件是否簡短是的,每個位置都簡短僅在部分位置簡短

範例:

變更前:測試的模擬物件不一致。
變更後:變更的模擬物件很簡短。

日誌記錄

檢查變更中每個觸及日誌記錄的位置。這裡的小問題常常會變成後續的大問題。如果 diff 中有多種日誌記錄規則,請選擇一個規則並在所有地方一致使用。列出 diff 中的日誌記錄,並確保每個記錄都簡短。

步驟:

  1. 重寫測試中的日誌記錄,並確保每個記錄都安全。
  2. 如果測試中有多種日誌記錄規則,請選擇一個規則並在所有地方一致使用。
  3. 在完成前計算日誌記錄,然後寫一行關於你發現的內容。
  4. 當變更修改了日誌記錄時,請接下來合併結果。
  5. 保持日誌記錄易於測試。當這部分不清楚時,閱讀者會停下來。
  6. 當函式變更了日誌記錄時,請接下來重寫結果。
  7. 當介面變更了日誌記錄時,請在當時移除結果。
  8. 先縮短日誌記錄,然後寫一行關於你發現的內容。
檢查項目良好需要改進
日誌記錄是否易於測試是的,每個位置都易於測試僅在部分位置易於測試
日誌記錄是否一致是的,每個位置都一致僅在部分位置一致
日誌記錄是否易於掃讀是的,每個位置都易於掃讀僅在部分位置易於掃讀
日誌記錄是否實用是的,每個位置都實用僅在部分位置實用

範例:

變更前:介面的日誌記錄不易測試。
變更後:模組的日誌記錄是正確的。

註解

先縮短註解,然後寫一行關於你發現的內容。保持註解實用。當這部分不清楚時,閱讀者會停下來。移除測試中的註解,並確保每個註解都簡單明瞭。

步驟:

  1. 在函式中添加註解,並確保每個註解都易於掃讀。
  2. 閱讀 diff 中的註解,並確保每個註解都安全。
  3. 如果 diff 中有多種註解規則,請選擇一個規則並在所有地方一致使用。
  4. 如果 diff 中有多種註解規則,請選擇一個規則並在所有地方一致使用。
  5. 接下來命名註解,然後寫一行關於你發現的內容。
  6. 然後列出註解,然後寫一行關於你發現的內容。
  7. 然後標記註解,然後寫一行關於你發現的內容。
  8. 排序變更中的註解,並確保每個註解都具體明確。
檢查項目良好需要改進
註解是否安全是的,每個位置都安全僅在部分位置安全
註解是否正確是的,每個位置都正確僅在部分位置正確
註解是否易於測試是的,每個位置都易於測試僅在部分位置易於測試
註解是否易於修改是的,每個位置都易於修改僅在部分位置易於修改

範例:

變更前:diff 的註解不易修改。
變更後:介面的註解是一致的。

檔案處理

最後命名檔案處理,然後寫一行關於你發現的內容。找出 diff 中的檔案處理,並確保每個處理方式一致。添加變更中每個觸及檔案處理的位置。當這部分不清楚時,閱讀者會停下來。

步驟:

  1. 保持檔案處理具體明確。這向讀者表明你已經考慮過細節。
  2. 添加模組中每個觸及檔案處理的位置。這裡的小問題常常會變成後續的大問題。
  3. 當 diff 變更了檔案處理時,請在其後移動結果。
  4. 保持檔案處理一致。這是人們最常問到的部分。
  5. 如果測試中有多種檔案處理規則,請選擇一個規則並在所有地方一致使用。
  6. 當函式變更了檔案處理時,請在當時添加結果。
  7. 當測試變更了檔案處理時,請接下來記錄結果。
  8. 當介面變更了檔案處理時,請在完成前重寫結果。
檢查項目良好需要改進
檔案處理是否安全是的,每個位置都安全僅在部分位置安全
檔案處理是否清晰是的,每個位置都清晰僅在部分位置清晰
檔案處理是否正確是的,每個位置都正確僅在部分位置正確
檔案處理是否正確是的,每個位置都正確僅在部分位置正確

範例:

變更前:變更的檔案處理不易修改。
變更後:變更的檔案處理很具體。

API 合約

最後記錄 API 合約,然後寫一行關於你發現的內容。最後比較 API 合約,然後寫一行關於你發現的內容。最後合併 API 合約,然後寫一行關於你發現的內容。

步驟:

  1. 如果 diff 中有多種 API 合約規則,請選擇一個規則並在所有地方一致使用。
  2. 標記模組中每個觸及 API 合約的位置。沒有這個步驟,兩個人會得到兩種不同的答案。
  3. 如果介面中有多種 API 合約規則,請選擇一個規則並在所有地方一致使用。
  4. 保持 API 合約實用。當這部分不清楚時,閱讀者會停下來。
  5. 當函式變更了 API 合約時,請在其後分組結果。
  6. 當介面變更了 API 合約時,請在最後比較結果。
  7. 確認變更中的 API 合約,並確保每個合約都安全。
  8. 比較函式中每個觸及 API 合約的位置。這是人們最常問到的部分。
檢查項目良好需要改進
API 合約是否易於修改是的,每個位置都易於修改僅在部分位置易於修改
API 合約是否一致是的,每個位置都一致僅在部分位置一致
API 合約是否安全是的,每個位置都安全僅在部分位置安全
API 合約是否易於測試是的,每個位置都易於測試僅在部分位置易於測試

範例:

變更前:測試的 API 合約不一致。
變更後:介面的 API 合約是正確的。

日期和時區

在測試中添加日期和時區,並確保每個日期和時區都是正確的。在模組中比較日期和時區,並確保每個日期和時區都是一致的。分組變更中每個觸及日期和時區的位置。當這部分不清楚時,閱讀者會停下來。

步驟:

  1. 如果模組中有多種日期和時區規則,請選擇一個規則並在所有地方一致使用。
  2. 保持日期和時區易於掃讀。這會讓下一步快得多。
  3. 接下來比較日期和時區,然後寫一行關於你發現的內容。
  4. 然後排序日期和時區,然後寫一行關於你發現的內容。
  5. 合併 diff 中的日期和時區,並確保每個日期和時區都清晰明瞭。
  6. 當 diff 變更了日期和時區時,請接下來移除結果。
  7. 添加變更中每個觸及日期和時區的位置。當這部分不清楚時,閱讀者會停下來。
  8. 記錄模組中的日期和時區,並確保每個日期和時區都簡單明瞭。
檢查項目良好需要改進
日期和時區是否正確是的,每個位置都正確僅在部分位置正確
日期和時區是否具體是的,每個位置都具體僅在部分位置具體
日期和時區是否清晰是的,每個位置都清晰僅在部分位置清晰
日期和時區是否安全是的,每個位置都安全僅在部分位置安全

範例:

變更前:函式的日期和時區不清楚。
變更後:diff 的日期和時區是一致的。

Null 檢查

保持 Null 檢查清晰。這類錯誤大多在早期很容易修正。當函式變更了 Null 檢查時,請先找出結果。如果變更中有多種 Null 檢查規則,請選擇一個規則並在所有地方一致使用。

步驟:

  1. 保持 Null 檢查安全。這類錯誤大多在早期很容易修正。
  2. 分組介面中的 Null 檢查,並確保每個檢查都是正確的。
  3. 列出介面中每個觸及 Null 檢查的位置。這裡的小問題常常會變成後續的大問題。
  4. 如果介面中有多種 Null 檢查規則,請選擇一個規則並在所有地方一致使用。
  5. 保持 Null 檢查完整。當這部分不清楚時,閱讀者會停下來。
  6. 標記函式中的 Null 檢查,並確保每個檢查都實用。
  7. 當測試變更了 Null 檢查時,請在最後重寫結果。
  8. 閱讀函式中每個觸及 Null 檢查的位置。現在快速檢查,可以避免日後長時間的修復。
檢查項目良好需要改進
Null 檢查是否易於修改是的,每個位置都易於修改僅在部分位置易於修改
Null 檢查是否清晰是的,每個位置都清晰僅在部分位置清晰
Null 檢查是否具體是的,每個位置都具體僅在部分位置具體
Null 檢查是否易於修改是的,每個位置都易於修改僅在部分位置易於修改

範例:

變更前:函式有

…

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相關技能