Community程式設計與開發github.com

gaurang-vedlogic/codebase-assessment

針對任何程式碼庫(前端、後端、行動應用、資料或基礎設施,不限語言),根據 rules/ 中的規則目錄進行評估,並產出客戶端可用的 HTML 評估報告(深入架構審查、執行決策摘要、應用組合儀表板)。當被要求評估、審查、稽核或產出程式碼庫評估報告,或從現有評估 JSON 重新產生報告時使用。

codebase-assessment 是什麼?

這是一個程式碼庫評估技能,專為需要進行深入、系統性且具防禦性的程式碼審查的開發人員和 AI 代理設計。它能引導使用者從原始程式碼逐步產出一份準備好交付給客戶的 HTML 報告。該技能最與眾不同的特色在於其嚴謹的方法論——強制要求先建立系統模型(包括不變量、攻擊者和資料流),然後以四個步驟的「反駁」流程檢驗每個發現,以避免誤報。它支援任何語言和技術堆疊,透過規則目錄(`rules/`)自動偵測堆疊並載入對應的檢查清單。最終產出物是標準化的 JSON 檔案,再轉譯為多種報告格式,包括架構審查報告和跨應用程式的客戶儀表板。此技能特別強調證據鏈(要求具體的檔案和行號)、覆蓋率透明度以及分數的可追溯性,非常適合顧問、技術領導或任何需要產出高可信度、可防禦的程式碼評估的人。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gaurang-vedlogic/architecture-assessment/tree/HEAD/.claude/skills/codebase-assessment

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

在你喜歡的 AI 中提問

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

說明文件

程式碼庫評估

你是審查者。這項技能帶你從程式碼庫走向一份客戶端可用的報告。

產出是一個 JSON 檔案 (assessments/<slug>.assessment.json),產生器將其轉譯成 每種報告格式。你寫的任何其他內容都不是可交付成果。


開始之前

按此順序閱讀以下檔案。不要跳過它們——它們包含了區分可防禦報告與猜測清單的原則。

  1. METHODOLOGY.md — 四步驟的候選→發現流程、不變量、信心水準、 覆蓋率紀律,以及不該做的事。這是最重要的檔案。
  2. scoring/dimensions.md、scoring/maturity-model.md、scoring/criticality-priority.md、 scoring/effort-estimation.md — 觀察結果如何轉化為數字。
  3. rules/README.md — 規則格式與堆疊偵測。
  4. schema/assessment.schema.json — 確切的輸出合約。
  5. examples/industrifinans.assessment.json — 一個完整的範例。請閱讀它的形狀與 深度,切勿參考其內容。那些發現屬於另一個不同的系統。

流程

步驟 1 — 建立系統模型

在尋找缺陷之前。 在 systemModel 中記錄:

  • 目的與領域。 系統的用途以及它儲存的資料。這定義了你發現的所有問題的影響範圍—— 同樣的缺陷在金融平台上可能是關鍵性的,在一個測試工具中則可能微不足道。
  • 參與者與信任邊界。 誰可以存取什麼。然後指出真實的攻擊者——通常是 一個已認證的低權限使用者,而不是匿名的網際網路攻擊者。
  • 關鍵資料流。 從入口到儲存的請求路徑,以及認證路徑。
  • 8–15 個不變量 — 必須永遠為真的正面陳述,混合通用不變量與 特定於此領域的不變量。在驗證它們時,將每個標記為 HOLDS(成立)、VIOLATED(違反)或 CHECK(待檢查)。

跳過這一步會使後續的每個嚴重性判斷都變得武斷。

步驟 2 — 偵測堆疊並載入規則

使用 rules/README.md § 堆疊偵測 中的標記表。載入 rules/universal/ 中的每個檔案 加上匹配的堆疊包。在 monorepo 中,請按套件分別偵測並載入聯集。查閱 rules/INDEX.md 取得完整的目錄清單。

步驟 3 — 閱讀程式碼

按執行順序閱讀:進入點 → 中介軟體 → 路由器 → 處理器 → 服務 → 資料存取。 缺陷存在於層級之間的縫隙中,這是逐檔案閱讀會忽略的。

除了類別搜尋之外,還可以使用 METHODOLOGY.md § 發現 中的技巧——同級比較、 身份追蹤、錯誤路徑上的控制到後果、邊界清查。它們能找到搜尋找不到的東西。

邊閱讀邊記錄你讀過的內容;你會在 coverage 中需要它。

步驟 4 — 先反駁,再報告

每個候選發現都必須經過 METHODOLOGY.md 中的四個步驟。大多數會在步驟 2 或 3 被淘汰。

  • 將倖存者報告為發現,每個附帶 confidence(信心水準)。
  • 將被淘汰的記錄在 refutedCandidates(被反駁的候選)中,並附上淘汰它的步驟。這不是填充內容—— 這是審查嚴謹的證據,而且會包含在報告中。
  • 當某個問題真實存在但不如最初聲稱的那麼嚴重時,降級而非刪除。

每個發現都需要 evidence(證據),包含真實的 file(檔案)以及,如果你打開過它,line(行號)。如果你無法指向程式碼,那就不是一個發現——它可能反而屬於 suggestions(建議)。

將重複的實例合併成一個系統性發現,附上 2–3 個具代表性的參考和一個 instances(實例數量)計數。一個系統性發現勝過八個重複的發現。

步驟 5 — 評分

  • 維度。 預設的七個維度在 scoring/dimensions.md 中。這個集合是可設定的——如果 任務需要的話可以替換一個(例如「品質保證 / 測試」),但保持在 5–8 個,並在整個 組合中保持一致。
  • 成熟度。 從 3.0 開始,套用 scoring/maturity-model.md 中的調整。每個 維度都需要一個 keyGap(關鍵差距),指出導致分數下降的具體發現。
  • 目標。 現實的 6–12 個月目標。永遠不是 5.0。永遠不要低於當前分數。
  • 嚴重性 / 優先級 / 階段。 從 scoring/criticality-priority.md 推導得出——不要 盲目複製規則的預設值。任何偏差都必須在 rationale(理由)中說明。
  • 工作量。 根據 scoring/effort-estimation.md 以人天計算。當真正未知時使用 null;永遠不要 為了填滿欄位而編造一個數字。

步驟 6 — 記錄好的部分

用 positivePosture 填寫已驗證的優勢,遵守相同的證據標準。一份純負面 的報告讀起來像是一種攻擊,並且會被忽略;它也未能告訴團隊在補救過程中該保護什麼。「未發現 SQL 注入」是一個覆蓋率陳述,不是一個優勢。

步驟 7 — 覆蓋率與判定

  • coverage(覆蓋率) — 方法、規模(以及你如何計算的)、你深入閱讀了什麼、你透過搜尋 瀏覽了什麼、你沒有閱讀什麼,以及注意事項。要具體。這使得發現具有可證偽性。
  • verdict(判定)與 releaseGates(發布閘門) — 僅當任務包含部署決策時。說明每個 環境的判定;封鎖正式環境同時核准開發/測試環境是常見的結果。 嚴重性不等於閘門——為每個閘門提供理由。

對於諮詢性質的評估,完全省略 verdict(判定)與 releaseGates(發布閘門)。報告會自行調整。

步驟 8 — 撰寫、驗證、產生

將 meta.repoPath 設定為你審查的儲存庫的絕對路徑。這會將報告傳送到 <repoPath>/architecture-review/ 而不是此工具的 output/ 目錄——可交付成果 應屬於它所描述的程式碼。僅在被評估的程式碼不在磁碟上時省略它。

寫入 assessments/<slug>.assessment.json,然後:

npm run validate -- --input assessments/<slug>.assessment.json
npm run report   -- --input assessments/<slug>.assessment.json

npm run report 也會在報告旁邊寫入客戶範圍的 Review-dashboard.html, 該儀表板是根據與此報告共享 meta.client 的所有評估建構的。請確切地 拼寫 meta.client,與該客戶其他評估中的拼寫完全一致,否則儀表板會分裂。切勿為了客戶 可交付成果而執行 npm run portfolio --all——它會跨越客戶,僅供內部使用。

解決每個錯誤。 閱讀每個警告,並修正根本問題或能夠為其辯護—— 這些警告編碼了上述規則(階段 1 之外的 P0、P0 膨脹、缺少證據、 階段 1 工作量主導、目標為 5.0)。


輸出檔案

所有輸出都是 HTML — 自包含的單一檔案,包含內聯 SVG 圖表,適合列印為 PDF。

檔案寫入位置目標讀者
ARCHITECTURE-REVIEW-<app>.html<repoPath>/architecture-review/所有人。每個應用一份報告,涵蓋高階主管資料以及完整的技術證據。
<slug>.assessment.json<repoPath>/architecture-review/報告旁的副本,以便儲存庫攜帶完整記錄。assessments/ 保持為權威來源。
Review-dashboard.html<repoPath>/architecture-review/僅此客戶應用程式的彙總,隨每份報告自動產生。不包含來自其他客戶的任何內容。

每個應用一份報告。 架構審查以判定、目標、高階主管摘要和記分卡開頭,供決策者使用, 然後繼續深入系統模型、覆蓋率、證據和路線圖,供工程師使用。

存在兩個可選輸出——--brief 參數後的簡潔 DECISION-BRIEF 以及 --docx 參數後的 Word 版本。 兩者都是嚴格的子集。除非使用者明確要求,否則不要產生任何一個。


嚴格規則

  • 切勿手動編輯產生的 HTML。 修改 JSON 並重新產生。如果報告需要說 些新東西,請先擴充 schema/assessment.schema.json 和 tools/。
  • 切勿從 examples/ 複製發現。 它描述的是另一個客戶的系統。
  • 切勿捏造檔案路徑或行號。 如果你沒有打開它,你就沒有證據。
  • 切勿將規則本身報告為一個發現。「應該使用依賴注入」不是一個發現。 「OrderService 在其 order.service.ts:31 建構了自己的 DbContext,因此無法在沒有 即時資料庫的情況下進行測試」才是。
  • 不要填充路線圖。 每個人天必須追溯到一個發現。
  • 僅限 Node — 此機器上未安裝 Python。

規模

一個小型應用通常會產生 10–20 個發現和 30–60 人天。一個中型平台, 25–40 個發現和 80–150 人天。如果你的數字根據系統規模遠超出這個範圍, 那表示有些地方偏離了方向——通常是嚴重性膨脹或未合併的重複項。

相關技能