A

test-driven-development

作者 addyosmani

test-driven-development 技能可協助你先寫出會失敗的測試,再用最小幅度的修正讓測試通過。適合用於邏輯變更、錯誤修復、回歸問題與邊界情境,特別是在你需要可驗證證據,而不只是看似合理的修補方案時。

Stars18.8k
收藏0
評論0
加入時間2026年4月21日
分類Skill 测试
安裝指令
npx skills add addyosmani/agent-skills --skill test-driven-development
編輯評分

這項技能評分為 84/100,代表它對想採用對 agent 友善的 TDD 工作流程、並需要明確觸發條件與逐步指引的使用者來說,是一筆相當扎實的目錄收錄。相較於泛用提示詞,它能幫助 agent 以更少猜測來判斷是否該使用此技能並實際執行;不過它仍然是單一檔案技能,沒有額外的輔助腳本或參考資料。

84/100
亮點
  • 觸發條件明確:描述中直接指出此技能適用於實作新邏輯、修復 bug 與行為變更。
  • 流程指引清楚可操作:內容完整交代 RED-GREEN-REFACTOR 週期,以及何時適合或不適合使用。
  • 實務深度不錯:主體內容紮實,包含多個標題、限制說明與程式碼範例,而非僅有占位文字。
注意事項
  • 沒有支援檔案或安裝指令:使用者只會拿到 SKILL.md,因此是否能順利採用,取決於是否仔細閱讀文件。
  • 標示為 experimental/test,且缺乏外部參考資料,因此可信度主要仰賴內容本身,而非工具鏈或引用來源。
總覽

test-driven-development 技能概覽

test-driven-development 技能能幫助你先用測試證明行為,再實作出讓測試通過的最小修正。它最適合處理邏輯變更、錯誤修正、邊界條件與回歸問題,尤其是「看起來沒問題」還不夠的情況。如果你需要 test-driven-development skill 來降低猜測成本,這份指南會說明它何時適用,以及它實際能改善什麼:更安全的修改、更清楚的需求,以及在初次補丁後更少的來回重工。

這個技能是用來做什麼的

在任務會改變行為時使用 test-driven-development:像是新增函式、調整條件、重現 bug,或任何可能默默破壞既有程式的情況。當專案本來就有測試時,它特別有用,因為你可以讓 agent 在專案既有的證明系統內工作,而不是從零猜出行為。

它的不同之處在哪裡

這個技能的核心價值是紀律:先寫會失敗的測試,再只實作能讓測試通過的最小變更。這樣能讓 agent 有明確目標,及早暴露缺漏的假設,也有助於把修正範圍控制得更窄。對 test-driven-development for Skill Testing 來說,這往往就是「看起來合理的補丁」與「已驗證的修正」之間的差別。

什麼情況下不適合

不要把這個技能用在沒有執行期行為的變更上:像是文案修訂、靜態內容更新,或純設定調整。如果專案幾乎沒有測試覆蓋,這個技能還是有幫助,但導入速度會比較慢,因為在工作流程開始產生成效之前,測試架構本身可能就需要先設置好。

如何使用 test-driven-development 技能

安裝並檢視這個技能

請使用 test-driven-development install 的套件安裝流程:

npx skills add addyosmani/agent-skills --skill test-driven-development

安裝完成後,先從 SKILL.md 開始看。在這個 repository 裡,沒有額外的 rules/resources/scripts/ 資料夾可供依賴,所以主要工作就是仔細閱讀技能檔,並把其中的指引對應到你的程式碼庫。

把模糊任務改寫成可測試的提示

最好的 test-driven-development usage 會先從行為描述開始,而不是直接要求解法。好的輸入像是:「先為空白 email 驗證新增一個會失敗的測試,再在 src/auth.ts 實作最小修正。」不夠好的輸入像是:「把登入做得更好。」請包含可觀察的結果、已知的檔案或模組,以及你在意的回歸風險。

依照 RED-GREEN-REFACTOR 迴圈執行

把這個技能當成工作流程來用:先寫一個在現有程式碼下會失敗的測試,再寫最小的程式變更讓它通過,之後只有在測試仍然通過時才重構。如果失敗情境很難重現,先停下來把測試案例收斂得更精準,再動手改實作。這個技能最有效的時候,是失敗案例已經具體到足以證明 bug。

先讀對的檔案

對這個 repo 來說,最重要的第一個閱讀目標是 SKILL.md。接著請檢查目標專案裡的本地測試設定:測試執行器設定、既有測試慣例,以及你打算修改的程式附近有哪些相鄰測試。如果專案已經有很明確的模式,就完全照著做;如果沒有,就保持測試精簡且明確。

test-driven-development 技能 FAQ

這只適合有經驗的工程師嗎?

不是。初學者也可以使用 test-driven-development,但需要清楚的起點:一個行為、一個會失敗的測試、一個最小修正。這個技能在小型 bug 修正上比在大型功能開發上更容易上手。

這和一般提示有什麼不同?

一般提示可能只是在要求寫出「能運作」的程式碼。這個技能要求的是證明。test-driven-development guide 會推著 agent 把成功定義為「測試通過」,這能降低歧義,也讓審查更容易。

什麼時候不該選它?

如果是文件、格式調整,或無法用執行期行為表達的變更,就先跳過它。若專案沒有可用的測試架構,而你只需要快速做一個非行為性的修改,也不適合用它。

它適用所有生態系嗎?

原則上可以,但實際的測試命令、斷言方式與檔案結構都會依技術棧而定。這個技能本身不綁框架;你本地 repo 的慣例才會決定你要用 Jest、Vitest、pytest、JUnit,還是其他 runner。

如何改善 test-driven-development 技能

給 agent 更明確的失敗案例

最有力的輸入會同時指出失敗行為、預期結果與邊界條件。例子像是:「當 parseDate("") 執行時,應該丟出 InvalidDateError;請先加測試,再修補 parser。」這能幫助 test-driven-development skill 避免模糊的實作猜測。

提供既有測試風格

請提到附近的測試檔、命名模式,以及專案已經在用的 helper 或 fixture。如果 repo 對類似行為使用 table-driven tests、mocks 或 integration tests,也請直接說明。對齊本地慣例能提高信任度,也更容易讓輸出結果直接合併。

留意常見失敗模式

最常見的錯誤是先寫實作再寫測試、使用一個本來就會通過的測試,以及把修正範圍擴大到超出失敗案例。若第一次輸出太發散,請改要求「最小可失敗測試」和「單一最小補丁」。這通常是取得可靠 test-driven-development usage 的最快路徑。

用證據迭代,不要靠猜測

在第一輪之後,請要求下一個證據點:另一個邊界案例、一個回歸測試,或一個在測試仍通過前提下的重構。如果 bug 很微妙,請要求一份修正前後的行為摘要,以及要新增的精確測試名稱。這能讓工作流程始終以可觀察的行為為基準,而不是依賴假設。

評分與評論

尚無評分
分享你的評論
登入後即可為這項技能評分並留言。
G
0/10000
最新評論
儲存中...