Community程式設計與開發github.com

daniloduuarte/verify-saas

驗證程式碼變更是否破壞了任何功能。完整模式執行型別檢查、lint、建置和測試,並與儲存的基準線比較(區分新錯誤與舊債,並提醒新的路由、依賴項或遷移,特別標記包含安全性關鍵字的遷移)。快速模式(--quick)僅對變更的檔案執行型別檢查、lint 和測試。請在適當的時機使用(請參閱「何時執行」);在提交、推送和部署前必須執行。

verify-saas 是什麼?

daniloduuarte/verify-saas 是一個 AI 代理技能,旨在為 SaaS 專案提供可靠的變更驗證。它透過比較當前程式碼狀態與儲存的基準線,幫助開發者區分新引入的錯誤(迴歸)與預先存在的技術債務。該技能支援完整模式(執行型別檢查、lint、建置和測試)和快速模式(僅對變更的檔案進行檢查),並能偵測結構變更,例如新增路由、依賴項變更或資料庫遷移(特別是包含「安全性」或「權限」等關鍵字的遷移)。此技能專為 Claude Code、Cursor 等 AI 代理工具設計,鼓勵在開發流程中的關鍵時刻(例如每次任務完成後、推送或部署前)執行,以自動化品質閘道。其獨特之處在於使用基準線檔案(`verify-saas.baseline.json`)進行比較,該檔案應提交至版本控制,從而實現跨工作階段和機器的持續驗證。此外,它提供詳細的互動式報告,使用清晰的符號標示迴歸(✗)、改善(✓)和資訊(ℹ),並引導代理根據使用者的專案結構和業務規則進行配置。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/daniloduuarte/verify-saas/tree/HEAD/verify-saas

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

在你喜歡的 AI 中提問

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

說明文件

何時執行(決定規則)

謹慎執行,不要反射性執行。根據情況選擇驗證層級:

情況執行內容
僅文件、註解、評論、計畫或規格不執行。 告知無需驗證。
工作進行中:編輯之間、修正回合、「我是否破壞了型別?」快速: node .claude/skills/verify-saas/driver.mjs --quick(如果只變更了單一型別,也可以僅執行型別命令)
每個任務或邏輯批次結束時,提交之前完整模式,執行一次
在任何 git push、部署或合併到主分支之前完整模式,強制執行。 如果上一次完整執行剛好涵蓋即將推送的提交,則不重複執行。
新增遷移、變更 package.json、建置設定、存取/驗證規則完整模式,在該變更完成時執行(結構變更風險高)
在 git pull 或合併他人工作之後完整模式(重新錨定基準線)

絕對不能:

  • 連續執行兩次,中間沒有變更;
  • 在讀取第一次報告之前啟動第二次執行;
  • 與同一資料夾中的其他建置或測試並行執行;
  • 在即時調整回合(等待提交請求)中間執行完整模式。

一定要:

  • 確認測試指向測試用資料庫/環境,絕非正式環境(請參閱 README 中的警告);
  • 在執行前重新檢視自己的 diff:多餘的 import 和錯誤的屬性名稱可以透過閱讀發現,無需浪費一次執行;
  • 閱讀完整報告,而不只是結束代碼。

如何執行

在專案根目錄中:

node .claude/skills/verify-saas/driver.mjs            # 完整模式
node .claude/skills/verify-saas/driver.mjs --quick    # 快速模式,不影響基準線
node .claude/skills/verify-saas/driver.mjs --baseline # 重新捕捉當前狀態為「良好」

所有專案特定的設定(命令、資料夾、警告關鍵字、啟用或停用的步驟)都放在專案根目錄的 verify-saas.config.json 中。如果沒有這個檔案,則使用 Next.js + TypeScript + npm 的預設值。

結束代碼:0 = 沒有變糟;1 = 有東西變糟或已經壞了(型別、建置或測試)。

首次使用:適應專案(給正在閱讀此內容的代理)

如果使用者剛剛安裝了此技能,並要求將其適應到他們的 SaaS 專案,請依序執行以下步驟:

  1. 閱讀專案(package.json 或等效檔案,遷移資料夾,測試如何執行),並調整 verify-saas.config.json:型別、lint、建置和測試的命令,structure.migrationsDir 和 alertKeywords。關閉("enabled": false)專案不包含的部分。
  2. 詢問使用者業務上不能破壞的部分(例如:行事曆不能有重複時段、庫存不能為負數、餘額必須相符、公司 A 不能看到公司 B 的資料、收款兩次只扣帳一次...)。不要憑空發明規則:與使用者確認,並為這些規則編寫測試,使用 docs/exemplos-por-nicho.md 作為模板。
  3. 確認測試環境。 絕不針對正式環境執行測試。如果沒有測試用資料庫或環境,請停止並通知使用者。
  4. 然後才執行 node .claude/skills/verify-saas/driver.mjs --baseline 並顯示報告,指出已經壞掉的(舊債)和通過的部分。
  5. 告訴使用者調整了哪些內容,並提醒他們應審查已編寫的測試。

如何閱讀報告

按順序:

  1. 型別:通過/失敗,以及與基準線相比的錯誤數量。
  2. Lint:透過指紋(檔案:行號:欄位:規則)進行比較,而不僅僅是計數。「之前 5 個錯誤,之後 5 個錯誤」可能隱藏了 5 個不同的錯誤。舊債永遠不是你的責任;只有新的才算。
  3. 建置:通過/失敗,以及路由列表(如有設定)。
  4. 測試:通過/失敗,與基準線比較。
  5. 結構:新增、移除或版本變更的依賴項;新的遷移,如果包含警告關鍵字(安全性/權限),則會標記警告。

符號:✗ 迴歸(需要修正),✓ 改善,= 無變更,ℹ 資訊,⚠ 請確認是否為預期行為。

列印後,完整模式會用當前狀態覆寫基準線。因此:在再次執行之前修正所有迴歸,否則第二次執行會將該錯誤視為「舊債」。

最佳實踐

  • 基準線檔案(verify-saas.baseline.json)應該提交到專案中;它使得「從上次執行以來」的比較能夠在不同的工作階段和機器之間正常運作。
  • 第一次在專案中使用時:在您確定狀態良好的情況下使用 --baseline 執行。
  • 遷移僅透過檔案名稱進行比較。此技能不會套用或驗證 SQL;它只會通知有新遷移出現,以及是否涉及安全性。
  • 此技能不會安裝依賴項(npm install 是一個比驗證本身應該執行的動作更大的操作)。
  • 如果報告顯示一個「新」問題,但您並未造成,請檢查是否有人在兩次執行之間更改了儲存庫(git log -3 --oneline)。
  • 真正的保護來自於您編寫的測試(請參閱 docs/exemplos-por-nicho.md)。此技能僅確保它們被執行,並在發生變化時發出通知。

相關技能