跳到主要內容
wen aidev

Claude Code /verify 指令教學:內建自動驗證怎麼用(2026)

17 分鐘po-wen

Claude Code /verify 完整教學 | 內建驗證指令怎麼用、/run-skill-generator 錄製啟動配方、commit 前自動驗證的條件,以及什麼時候還是要自己寫 verify skill。

目錄

系列文章地圖

點節點可以直接跳到那一篇。

/verify 是 Claude Code 內建的驗證指令:它會把你的 app 建置、啟動,實際操作剛改完的功能並檢查結果,不是只靠測試或型別檢查。

用 Claude Code 開發,可以把「改完後實際跑一次」也交給它。一般專案直接打 /verify 就能用,啟動流程比較複雜的專案,再用 /run-skill-generator 把建置和啟動方式整理成 skill。

整個概念就三步 => 跑起來、驗證、打包成 skill。打包完之後,下次改完它就會依照同一套流程自己驗證。

上一篇 Claude Code 自動驗證與自主開發 講的是為什麼要讓 agent 自己驗證,以及 Run → Drive → Prove → Unblock 的思路。這篇講官方內建版本怎麼用。上一篇那種自己手寫 verify skill 的做法一樣有效,後面會講什麼時候還需要自己寫。

/verify、/run、/run-skill-generator 差在哪

這三個都是內建 skill,不用另外安裝:

指令做什麼什麼時候用
/run啟動並操作 app,讓你看到執行結果只想看改動跑起來的樣子
/verify建置、啟動 app,確認這次修改是否符合預期改完要確認有沒有壞
/run-skill-generator把專案的建置與啟動方式記錄成 skill,讓前兩個照著跑專案啟動流程比較複雜

/verify 跟 /run 的差別在目的。/run 是把東西跑起來給你看,/verify 是拿這次改動當標的,跑起來之後去檢查它對不對。官方的說法是不會退回去只跑測試或型別檢查。

/verify 怎麼驗證一次修改

一次 /verify 走的流程是這樣:

  1. 啟動專案:建置、啟動必要的服務
  2. 操作功能:開頁面、送 API 請求,真的去用剛改的東西
  3. 檢查結果:比對預期行為和實際結果
  4. 符合就回報:說明驗證了什麼、看到什麼
  5. 不符合就修:依錯誤訊息與 log 調整,再重新執行

這個迴圈跟上一篇的自動驗證迴圈是同一件事,差別在 /verify 把「怎麼起 app」這一步內建了。

開始前要有兩樣東西:啟動方式和驗收條件

/verify 能不能驗得準,取決於你給它兩樣東西:

  • 啟動方式:怎麼把 app 跑起來。內建版會自己推斷,推斷不準就靠後面講的配方
  • 驗收條件:什麼結果算對。這個要你自己講,它猜不到你心裡的標準

驗收條件寫得越具體,它越知道要去查哪裡:

模糊的說法具體的驗收條件
驗證訂單功能新增訂單後,重新整理仍看得到,金額與輸入一致
確認 API 有沒有壞POST 回 201,回傳的訂單 ID 能用 GET 查回同一筆資料
看一下登入輸入錯誤密碼會顯示錯誤訊息,且不會寫入 session

API 回傳成功,還要驗證什麼?

以「新增訂單」為例,API 回 200 只代表請求有被處理,不代表資料真的存進去了。所以驗收條件要一路寫到底層:

驗證層要檢查什麼為什麼 API 回應不夠
API 回應狀態碼、訂單 ID、回傳欄位200 不代表資料已保存
DB 查詢訂單是否存在、金額是否正確要確認實際寫入的結果
Log 紀錄錯誤訊息、關鍵事件與程式走的分支追查執行過程時,需要有對應的紀錄

三層一起查才完整。DB 查詢和 log 要怎麼下指令、log 該怎麼寫成 Claude 讀得懂的格式,在上一篇的 Backend 自動驗證三個層次 有完整範例,這裡不重複。

不用設定就能跑:/verify 怎麼知道怎麼啟動

/run 和 /verify 都不需要先設定。它們會依專案類型(CLI、server、TUI、瀏覽器操作型)和 README、package.json、Makefile 的內容,推斷要怎麼建置和啟動。

標準的專案這樣就夠了。推斷容易不準的情況:

  • 要先起資料庫
  • 需要 env 檔
  • 需要圖形介面環境
  • 要跑多步驟 build

碰到這幾種,/verify 不一定能自己摸出正確的啟動方式,這時候就輪到下一段的配方。

三種觸發 /verify 的方式

方式怎麼發生
手動你自己打 /verify
Claude 自己呼叫工作過程中,Claude 判斷該驗證時自己叫用這個 skill
commit 前自動條件滿足時,Claude Code 會要求 Claude 在每次 commit 前先跑

第三種有條件,下面「commit 前自動驗證」那段會講。

啟動流程複雜時:用 /run-skill-generator 錄配方

/run-skill-generator 會從乾淨的環境把 app 跑起來,記下跑通的做法:安裝指令、環境變數、啟動腳本,然後存成專案專屬的 skill,放在 .claude/skills/run-<名稱>/。

之後 /run、/verify 還有 repo 裡其他 agent,都照這份配方跑,不用每次重新摸索。官方的建議是每個專案跑一次,之後 build 或啟動方式變了再跑。

/verify 自己也會錄配方

不只 generator 會錄。/verify 在沒有配方的情況下,得自己想辦法建置和操作 app,跑通之後會把有效的做法寫到 .claude/skills/verify/SKILL.md。放在 repo 根目錄,monorepo 的話放在改到的 package 目錄。

放在 repo 根目錄的這份配方,會取代內建的 /verify。這個功能需要 Claude Code v2.1.200 以上。

這份檔案只有在 Claude 被帶偏的時候才會改,例如某個指令失敗、少了一個步驟,所以可以放心 commit,不會每個 session 都冒出新的 diff。v2.1.205 之前不是這樣,當時內建的 skill 會要 Claude 把每次學到的東西都併進去,結果常常 merge conflict。

兩種配方的差別

項目/run-skill-generator 錄的/verify 自己錄的
位置.claude/skills/run-<名稱>/.claude/skills/verify/SKILL.md
內容怎麼建置、怎麼啟動怎麼啟動,加上怎麼操作並驗證
誰用/run、/verify、其他 agent/verify,取代內建版
什麼時候啟動流程複雜,先整理一次沒有配方時,跑一次 /verify 就自動產生
/verify 配方流程:第一次跑由內建版推斷並自動錄下配方檔,推斷失敗改用 /run-skill-generator,也可以自己寫 verify skill,之後在專案層級的配方會在 commit 前自動執行

圖說:第一次跑錄下配方,之後每次照配方驗證;自己寫的 skill 放在同一個位置

commit 前自動驗證的條件

這是整件事最方便、也最容易漏掉的地方。當 session 開始時已經有一個名為 verify 的 skill,Claude Code 會在 commit 指令裡要求 Claude:每次 commit 前先跑它。只改文件或測試的 commit 不跑。需要 Claude Code v2.1.286 以上。

要滿足三個條件:

條件內容
位置skill 在企業、個人、專案或額外目錄層級,或是 .claude/commands/ 底下同名的檔案
可被呼叫Claude 能自己叫用它。如果設了 disable-model-invocation: true,就不會有這個指示
git 指示沒有關掉 includeGitInstructions。關掉它,這個指示會跟內建的 commit、PR 指示一起消失

重點在第一條:內建的 /verify 本身不算,plugin 提供的 skill 和 claude.ai 帳號上的 skill 也不算。/verify 錄在 repo 根目錄的配方是專案層級的 skill,所以算。

換句話說,只用內建版、沒有錄過配方的話,commit 前不會自動跑。要讓它自動跑,先手動執行一次 /verify 讓它把配方寫出來,確認內容沒問題,把 .claude/skills/verify/SKILL.md commit 進 repo。之後每次 commit 前就會自動驗證。

名為 simplify 的 skill 也適用同樣的規則。

什麼時候還是要自己寫 verify skill

內建推斷加自動錄配方,已經能處理大部分專案。下面這幾種情況,自己寫會比較準:

  • 要指定 Claude 用哪個工具操作(例如用 Chrome MCP 去點頁面)
  • app 一打開就要登入,要預先設定 dummy auth 或 bypass
  • 要告訴它 log 在哪裡、用什麼指令讀
  • 想用 $ARGUMENTS 在呼叫時指定要測的場景

做法就是上一篇那樣,自己建 .claude/skills/verify/SKILL.md:

---
name: verify
description: 改完程式後實際跑一次,確認改到的功能行為正確。
---

1. 啟動專案,等 localhost:3000 回 200
2. 用 Chrome MCP 開 localhost:3000,登入走 dummy auth
3. 操作這次改到的功能,再加上 $ARGUMENTS 指定的場景
4. 對照驗收條件檢查結果,需要時讀 log 確認程式走對分支
5. 回報做了哪些操作、看到什麼結果,附上截圖或指令輸出

如果遇到障礙,找到解法並更新這個 skill。

只要檔名和位置對,它就會取代內建版,同時符合 commit 前自動執行的位置條件,兩邊的好處都拿得到。

我的建議是不要從空白開始寫。先跑一次 /verify 讓它錄出第一版,再把登入、工具、log 這些它猜不到的東西手動補進去,比從零寫快,也不會漏掉專案裡你沒想到的啟動細節。

驗證要多嚴格:四種做法怎麼選

官方 best practices 把「怎麼讓 Claude 自己驗證」分成幾個強度。/verify 是其中一種做法,跟其他方式可以疊加:

做法設定成本適合
同一個 prompt 裡要求不用設定任何任務現在就能用,直接寫「改完跑一次檢查,失敗就修」
/goal 條件一句話整個 session 都要做到某個檢查通過才停,每個回合後有獨立的評估
Stop hook要寫腳本要決定性的關卡,檢查沒過就不讓這一輪結束
驗證用 subagent要寫 prompt 或 workflow讓一個乾淨 context 的模型來挑戰結果,改的人不要自己打分數

官方還有兩個提醒值得照做:

  • 要求 Claude 附證據:貼測試輸出、執行的指令和回傳的結果、或結果截圖,不要只說「驗證過了」。看證據比自己重跑一次快,而且你沒盯著的 session 也能事後檢查
  • 自己再跑一次 /verify:Claude 自己的檢查通過後,你手動跑一次 /verify,對照實際跑起來的 app 再確認一次

Stop hook 的設定方式在上一篇的 Pro tip 有講。有了 commit 前自動執行之後,Stop hook 的角色變成「每一輪結束都擋一次」,兩者的時間點不一樣,不是二選一。

先這樣設定

沒有任何設定的專案,照這個順序做:

  1. 跑一次 /verify,看它能不能自己把 app 起來
  2. 起不來或需要資料庫、env 檔,先跑 /run-skill-generator 錄啟動配方
  3. 確認 .claude/skills/verify/SKILL.md 的內容,補上登入方式、工具、log 位置,然後 commit
  4. 之後每次 commit 前會自動驗證;重要的改動,驗收條件自己寫具體

FAQ

Claude Code 的 /verify 和 /run 有什麼差別?

/run 負責把 app 啟動起來並操作,讓你看到執行結果。/verify 是確認「這次修改」是否符合預期,重點是驗證,不是單純跑起來。兩個都是內建 skill,不用另外安裝。

使用 /verify 前需要先設定什麼嗎?

一般專案不用。/verify 會從專案類型、README、package.json、Makefile 推斷怎麼建置和啟動。需要資料庫、env 檔、圖形介面或多步驟 build 的專案,推斷容易不準,這時再用 /run-skill-generator 把啟動方式錄成 skill。

為什麼 commit 前沒有自動跑 /verify?

內建的 /verify 本身不會觸發自動執行。要有一個名為 verify 的 skill 放在個人、專案、企業或額外目錄層級,Claude 能呼叫它,而且沒有關掉 includeGitInstructions,才會在 commit 前自動跑。只改文件或測試時不跑。需要 Claude Code v2.1.286 以上。

/verify 可以取代 unit test 嗎?

不行,兩者互補。/verify 是把 app 真的跑起來、操作它、檢查結果,驗證使用者會碰到的行為;unit test 驗證的是單一邏輯。測試通過但畫面壞掉,或反過來,都會發生。

之前自己寫的 verify skill 還要留著嗎?

要。需要指定 Chrome MCP、預先處理登入牆、告訴 Claude log 在哪裡時,自己寫的 skill 比內建推斷準。只要檔案放在 .claude/skills/verify/SKILL.md,就會取代內建版,也符合 commit 前自動執行的位置條件。

參考資料

台灣用戶:

透過 LINE Pay 支持

國際用戶:

透過 Ko-fi 支持

相關文章

留言討論

Facebook 留言