何時執行(決定規則)
謹慎執行,不要反射性執行。根據情況選擇驗證層級:
| 情況 | 執行內容 |
|---|---|
| 僅文件、註解、評論、計畫或規格 | 不執行。 告知無需驗證。 |
| 工作進行中:編輯之間、修正回合、「我是否破壞了型別?」 | 快速: 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 專案,請依序執行以下步驟:
- 閱讀專案(
package.json或等效檔案,遷移資料夾,測試如何執行),並調整verify-saas.config.json:型別、lint、建置和測試的命令,structure.migrationsDir和alertKeywords。關閉("enabled": false)專案不包含的部分。 - 詢問使用者業務上不能破壞的部分(例如:行事曆不能有重複時段、庫存不能為負數、餘額必須相符、公司 A 不能看到公司 B 的資料、收款兩次只扣帳一次...)。不要憑空發明規則:與使用者確認,並為這些規則編寫測試,使用
docs/exemplos-por-nicho.md作為模板。 - 確認測試環境。 絕不針對正式環境執行測試。如果沒有測試用資料庫或環境,請停止並通知使用者。
- 然後才執行
node .claude/skills/verify-saas/driver.mjs --baseline並顯示報告,指出已經壞掉的(舊債)和通過的部分。 - 告訴使用者調整了哪些內容,並提醒他們應審查已編寫的測試。
如何閱讀報告
按順序:
- 型別:通過/失敗,以及與基準線相比的錯誤數量。
- Lint:透過指紋(檔案:行號:欄位:規則)進行比較,而不僅僅是計數。「之前 5 個錯誤,之後 5 個錯誤」可能隱藏了 5 個不同的錯誤。舊債永遠不是你的責任;只有新的才算。
- 建置:通過/失敗,以及路由列表(如有設定)。
- 測試:通過/失敗,與基準線比較。
- 結構:新增、移除或版本變更的依賴項;新的遷移,如果包含警告關鍵字(安全性/權限),則會標記警告。
符號:✗ 迴歸(需要修正),✓ 改善,= 無變更,ℹ 資訊,⚠ 請確認是否為預期行為。
列印後,完整模式會用當前狀態覆寫基準線。因此:在再次執行之前修正所有迴歸,否則第二次執行會將該錯誤視為「舊債」。
最佳實踐
- 基準線檔案(
verify-saas.baseline.json)應該提交到專案中;它使得「從上次執行以來」的比較能夠在不同的工作階段和機器之間正常運作。 - 第一次在專案中使用時:在您確定狀態良好的情況下使用
--baseline執行。 - 遷移僅透過檔案名稱進行比較。此技能不會套用或驗證 SQL;它只會通知有新遷移出現,以及是否涉及安全性。
- 此技能不會安裝依賴項(
npm install是一個比驗證本身應該執行的動作更大的操作)。 - 如果報告顯示一個「新」問題,但您並未造成,請檢查是否有人在兩次執行之間更改了儲存庫(
git log -3 --oneline)。 - 真正的保護來自於您編寫的測試(請參閱
docs/exemplos-por-nicho.md)。此技能僅確保它們被執行,並在發生變化時發出通知。