Communitygithub.com

SenroAI/agent-skills

透過檢查網站儲存庫、了解其使用者旅程,並撰寫可直接匯入的測試案例套件,為 WebMCP 網站建立 Senro 測試案例。用於從網站程式碼庫生成或擴充 Senro 測試套件時使用。

agent-skills 是什麼?

此技能(SenroAI/agent-skills)旨在幫助開發者或 AI 代理從目標網站的程式碼庫自動生成 Senro 測試案例。使用者只需提供一個已加入 Senro 的頁面所對應的儲存庫,代理便會分析該網站的原始碼、框架、相依性及文件,以發現其 WebMCP 工具的行為。接著,它會根據真實的使用者旅程、邊界條件及錯誤情境,產生指定數量的測試案例。這些測試案例會以 Senro 定義的匯入格式寫入 `./senro` 目錄,並在報告成功前先通過結構性預先驗證器檢查。此技能支援 Claude Code、Codex 等 AI 代理平台,並強調測試案例必須基於原始碼事實,不得虛構資料或行為。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SenroAI/agent-skills/tree/HEAD/skills/senro-tests

在你喜歡的 AI 中提問

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

說明文件

Senro 測試

根據使用者要求,從他們加入 Senro 的頁面所屬的儲存庫中,生成確定數量的有用 Senro 測試案例。編碼代理不執行 WebMCP 或生成的測試;Senro 稍後會針對已註冊的頁面執行這個套件。

工作流程

  1. 確認目前的儲存庫包含正在測試其 WebMCP 行為的頁面。將儲存庫視為唯一的事實來源。

  2. 在生成任何內容之前先檢查儲存庫。排除 .git、相依性目錄、建置輸出、涵蓋率輸出和生成檔案。

  3. 使用專案本身的原始碼、框架、相依性、測試、測試固件和文件,來判斷網站如何暴露其 WebMCP 工具。不要假設特定的 WebMCP API、框架、檔案佈局或註冊模式。

  4. 為每個發現的工具建立內部清單,包含其名稱、描述、輸入結構描述、註解、實作方式和可用的範例。

  5. 如果無法從儲存庫中確定任何 WebMCP 工具,則停止並清楚地報告。如果存在多個不相關的網站或應用程式,請識別它們並詢問要使用哪一個。

  6. 讀取相關的路由、元件、資料檔案、測試固件、驗證程式碼、文件和現有測試,以映射真實的使用者旅程和可見的成功與失敗狀態。

  7. 在撰寫測試案例之前先閱讀 references/import-format-v1.md。僅使用其中記錄的欄位和結構。

  8. 生成使用者要求的確切數量的不同測試案例。涵蓋儲存庫中最強的路徑,包括成功工作流程、邊界條件、無效輸入、空結果、復原、有重大影響的動作,以及在原始碼支援下的可見狀態斷言。

  9. 如果儲存庫無法支援請求數量的、有原始碼依據的有意義案例,請報告此限制並停止。不要用虛構的場景、值或行為來填充套件。

  10. 僅使用發現的原始碼所支援的工具名稱和引數。絕不虛構 ID、帳戶、產品、列舉值或後端狀態。當無法安全確定精確的執行時期值時,使用僅目標(goal-only)測試。

  11. 僅在原始碼支援預期路徑時才使用預期的工具呼叫。不要強迫一個可能有多個有效路徑的工作流程走完全相同的軌跡。

  12. 如有需要,建立 ./senro 目錄。將套件寫入 ./senro/test-cases.json。如果該檔案已存在於磁碟上,則使用下一個可用的數字後綴,例如 ./senro/test-cases-2.json。已刪除的 Git 追蹤檔案不算衝突。將套件直接保留在 ./senro 中;不要歸檔或移動現有檔案。

  13. 在報告成功之前,針對你生成的確切檔案執行內建的結構性預先驗證器:

    node <skill-root>/scripts/validate-tests.mjs <output-path>
    
  14. 報告確切的輸出路徑、測試數量、路徑涵蓋率以及任何假設。不要聲稱測試已通過執行時間驗證;Senro 必須在實際頁面上執行套件。

輸出規則

  • 寫入一個帶有 tests 陣列的 JSON 物件。
  • 保持測試名稱簡潔,不超過 70 個字元。
  • 撰寫自然的使用者請求。僅在對測試的行為至關重要時才包含技術細節。
  • 在原始碼支援的情況下,變換對話模式、評估類型和路徑複雜度。對於明確的請求使用腳本式對話,對於需要澄清或多輪決策的情況使用模擬對話。若增加變異無法帶來有用的涵蓋率,則不要強求。
  • 腳本測試僅提供一條初始使用者訊息。
  • 模擬測試提供空的作者訊息列表,且沒有作者跟進。
  • 確保每個測試都有一個目標、一個必需的預期呼叫,或一個頁面檢查。
  • 在成功的結果中描述代理應完成什麼。對必要的呼叫和引數使用工具呼叫預期值,對最終頁面狀態使用頁面檢查。當存在多個有效路徑時,不要在結果中規定實作路徑。
  • 保持設定呼叫具體;絕不要在設定引數中使用匹配器運算子。
  • 從原始碼中使用穩定的選擇器進行頁面檢查。
  • 斷言穩定的最終頁面狀態,而不是後續有效動作可能清除的臨時訊息。透過支援的工具呼叫和結果檢查或成功的結果來驗證中間行為。
  • 當工具呼叫評估被停用時,使用 expectedCall: null。它並不禁止工具呼叫。
  • 在生成套件期間不要修改網站原始碼。
  • 不要將機密、憑證或私人客戶資料寫入套件。

參考資料

相關技能