Community程式設計與開發github.com

zehuichan/vibe-harness

用於審查此儲存庫中的 Pull Request 或本機變更;引導審查者了解專案標準 (AGENTS.md、專案簡介、防禦模式、代理筆記、文件標準、已執行的檢查) 以及純程式碼無法顯示的審查檢查項目。

vibe-harness 是什麼?

此技能旨在引導開發者或 AI 代理進行結構化的程式碼審查,特別適用於遵循嚴格標準的專案。它透過一系列「真相來源」(如 AGENTS.md 和防禦模式文件)來建立審查基準,確保審查者不是僅憑記憶判斷,而是對照具體的專案規範。技能定義了多個「阻斷性要求」,例如新文字需經過語義審查、文件必須與程式碼一致、以及生命週期管理與清理的驗證。此外,它還提供了一系列詳細的「手動檢查」指導,涵蓋介面合約、錯誤處理、並發性、能力與消費者適配性、模型視角、測試強度與邊界情況等複雜面向。最後,它指導如何以結構化方式(內聯與頂層評論分離)報告缺陷,並要求區分阻斷性問題與建議事項。此技能支援的審查平台可包括 Claude Code、Cursor 或 Codex 等,透過明確的命令與文件路徑整合進開發流程。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zehuichan/vibe-harness/tree/HEAD/skills/code-review

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

在你喜歡的 AI 中提問

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

說明文件

審查一個變更

此技能為指導方針,非完整檢查清單。 驗證並擷取變更的即時基礎分支和確切目標分支,然後在使用設定檔的 commands.change-scope 列出變更路徑後,再閱讀 diff 和足夠的周邊程式碼以理解設計。在重新定位或合併後重新建立基礎分支。優先考慮正確性、生命週期、安全性和破壞的必要行為,而非風格;一個帶有實質依據的阻斷性問題的簡短審查,勝過一長串無關緊要的小問題清單。

在判斷 diff 之前,請先閱讀需求。 將變更路徑對應到下方的來源,開啟每個所屬頁面,然後才對照這些需求閱讀 diff。僅憑記憶中的規則來判斷 diff,正是讓違規行為通過審查的原因。

真相來源

  • AGENTS.md 位於根目錄及每個觸及的子樹目錄中:長期命令。
  • .agents/project-profile.md:命令、已啟用的面向、每個面向的證據,以及專案特定規則。
  • docs/defensive-patterns/:審查中強制執行的規則,每個工件系列一個頁面;閱讀 diff 觸及的每個頁面。
  • docs/AGENTS.md 和 docs-standard:文件放置位置與紀律。
  • prose-standard:註解、文件、提示與可見字串所需的覆蓋範圍和編輯判斷。
  • error-handling:失敗分類、所有權、包含、保證與報告。
  • lifecycle-review:外掛程式、服務和元件中的單例狀態、不可逆效應與清理順序。
  • test-reliability:針對擁有資源、非同步或不穩定的測試進行隔離與回歸證明。
  • .agents/notes/:設計原理。將與代理筆記的分歧視為設計討論,而非自動否決。
  • 當設定檔啟用 surfaces.ui 時,需使用 ui-ux-review 和 responsive-ui 技能。

阻斷性要求

  1. 新文字需接受語義審查。 對每個新增或修改的 Markdown 段落、API 文件、註解、提示、描述、診斷訊息和可見字串使用 prose-standard。自動化檢查無法建立準確性、放置位置或覆蓋範圍。
  2. 文件與程式碼一致。 設定、預設值、錯誤、連線欄位、事件和公開行為需在同一 diff 中更新其所屬的 README 和 API 文件。標記實作敘述、測試演練、審查歷史和重複的原理說明。
  3. 所有權與清理。 對於具有生命週期的外掛程式、服務或元件程式碼,對變更的行為和受影響的消費者套用 lifecycle-review。每個新的註冊都需證明其釋放機制。
  4. 必要的證據存在。 驗證作者已針對此 diff 執行了相關檢查(請參閱 pre-push-checks),且 CI 涵蓋其餘部分;審查兩者都無法偵測到的語義差距。
  5. 本地化 UI 複製。 當設定檔啟用 surfaces.localized-ui 時,拒絕以標記語言、範本、輔助函數回傳值、無障礙屬性或元件預設值嵌入的產品文字;要求使用語言環境機制並提供每個受影響語言環境的證據。使用者資料、模型資料和連線資料保持原樣。
  6. 記錄重大變更。 當設定檔啟用 surfaces.public-api 時,外部可感知的重大變更需在同一 diff 中附上升級指南(請參閱 upgrade-guide)。

手動檢查

  • 意圖與介面合約: 追蹤每個變更介面的兩端。確認實作與描述及任何代理筆記相符,包括錯誤、取消、所有權和釋放機制。
  • 錯誤處理: 拒絕「捕獲並繼續」的模式,除非狀態擁有者確認後續工作的前提條件仍然成立。
  • 生命週期與並發性: 對於非同步設定、回呼、程序或拆卸,檢查發佈前的競爭條件、等待期間的取消、獨立的錯誤報告、回呼的包含性、重入前的所有權、完整的分離清理,以及靜止狀態的釋放機制。
  • 能力與消費者適配性: 追蹤每個目前的消費者,然後標記消費者特定的行為洩漏到共享介面中的情況。也標記相反的情況:一個通用服務上的新公開方法,其唯一呼叫者僅為一個內部消費者;更傾向於將私有能力在建構時傳遞給該消費者。
  • 範圍、所有權與必要性: 將每個抽象、狀態機、選項、防禦性複製和相容性路徑對應到其目前的合約、生產消費者與所屬模組。挑戰不相關的功能與投機性的通用性。
  • 設定與公開選擇: 詢問支援每個預設值、公開操作集合、格式或引入的外部概念的當前消費者證據或既有實作經驗。當該證據不存在時,要求明確的選擇或推遲。
  • 模型視角: 當專案將提示、工具架構或結果傳送給模型時,檢查模型實際接收到的確切文字。標記模型任務範圍之外的概念,並透過測試或快照驗證穩定文字保持一致以及動態行為。
  • 強制執行: 追蹤每個拒絕路徑直到執行該操作的函式;測試能夠繞過架構、提示、外觀、包裝器或監聽器排序的直接和間接呼叫者。
  • 借用與衍生狀態: 確定每個保留的值是借用還是擁有的,然後追蹤通知以及每個快取、提示、UI 回顯、重播和查詢檢視,直到其文件記錄的成功點和權威來源。
  • 邊界涵蓋最終操作: 找到完整發出或保留結果(包括包裝器與元資料)的擁有者。探索極小與精確的邊界、過大的單一塊,以及多位元組文字是否受到位元組限制。
  • 真實進入點: 測試在相關情況下執行已發佈的載入器、二進位檔案、工作者或子程序。手動組合的測試設定無法捕捉無效的匯出。
  • 測試強度: 斷言應針對預期的回歸失敗,並驗證外部狀態、日誌、事件或釋放機制,而非重述實作內容。覆蓋率是必要的,但並不代表該情境是正確的證據。
  • 負面控制: 驗證對於每個變更的驗收規則,一個故意無效的情況會透過真正的執行器失敗。
  • 已實作的代理筆記與已發佈的現實相符: 當變更實作了一個提議的筆記時,在同一 diff 中將其移動並重寫為現在式的已發佈狀態。
  • 翻譯: 比較兩邊的含義與術語;結構相符並不能證明翻譯品質。

報告發現

說明缺陷、位置、影響和證據。將在地化的缺陷以內聯方式放置在相關 diff 範圍的最緊湊範圍內;對於跨架構、範圍或綜合性的問題,使用頂層評論。將阻斷性問題與建議事項分開,並省略已通過檢查強制執行的事項。在接收審查時,驗證每個主張,並以技術理由修正或反駁它。

Individual skills in this repo

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

相關技能