AI 寫程式碼已經又快又便宜,真正的瓶頸移到了前面:需求到底寫得夠不夠清楚,清楚到 AI 不用猜。
業界這一年收斂出來的解法叫 Spec-Driven Development(SDD):先把需求、user story、驗收條件(AC)寫成結構化文件,再讓 AI 依規格實作。但如果每次都要貼一大段 prompt 來交代方法論,不但累,團隊裡每個人貼的版本還會不一樣。
更好的做法是:把方法論封裝成 Skill,把角色封裝成 Agent,一次打造、重複使用。
判斷準則很簡單:
- Skill 封裝「方法論」——人還在迴圈裡,skill 提供做事的章法。適合需求訪談、拆 story、寫 AC 這些人必須逐輪參與決策的上游工作。
- Agent 封裝「角色」——它有自己的乾淨 context,自主跑完一段工作,交出可驗證的產出。適合對抗性審查、依 AC 實作這些依既定判準自主執行的下游工作。
規律是:上游偏 skill(價值在逼出人類決策),下游偏 agent(價值在自主執行,人只驗收結果)。

圖 1:Skill 與 Agent 的判斷分流
這篇文章分三部分:第一部分打造四個 skill 和兩個 agent;第二部分用它們把台灣高鐵訂票系統從需求一路做到實作;第三部分帶你實際修改一次 skill 和一次 agent,並逐層驗證更新真的生效——因為環境會變、模型會換代,工具箱不是打造一次就完工的。所有內容都可以直接複製貼上,照著做就能完成。
第一部分:打造你的 Skill 與 Agent 工具箱
事前準備
你需要安裝好 Claude Code。打開終端機:
mkdir thsr-booking && cd thsr-booking
mkdir -p specs .claude/skills .claude/agents
claude
完成後的目錄結構會是:
thsr-booking/
├── specs/ # 規格文件(第二部分產出)
└── .claude/
├── skills/
│ ├── req-interview/SKILL.md # Skill 1:需求訪談
│ ├── story-splitting/SKILL.md # Skill 2:拆解 story
│ ├── ears-ac/SKILL.md # Skill 3:EARS 格式 AC
│ └── sbe-examples/SKILL.md # Skill 4:例子問答
└── agents/
├── spec-reviewer.md # Agent 1:對抗性審查者
└── tdd-developer.md # Agent 2:測試先行開發者
建立方式很簡單:把下面每一節的內容直接貼給 Claude Code,請它建立對應檔案。例如:
請建立 .claude/skills/req-interview/SKILL.md,內容如下:
(貼上 Skill 1 的完整內容)
六個檔案依序建完,工具箱就好了。
Skill 1:需求訪談(req-interview)
為什麼是 skill 不是 agent: 訪談的提問協議可以封裝,但回答問題的人不可取代。做成全自主 agent 等於讓 AI 自問自答,把「AI 猜測」重新包裝成「AI 決策」,整個流程的價值就被掏空了。
—
name: req-interview
description: 以結構化訪談方式整理軟體需求。當使用者想開發
新系統、整理需求、或說「訪談我」時使用。禁止在訪談前
直接產出需求文件。
—
# 需求訪談協議
## 鐵律
先不要寫任何需求文件。用訪談方式釐清需求,
每一輪只問 3~5 個問題。
## 訪談順序(前一面向釐清後才進入下一個)
1. 目標使用者與核心使用情境
2. 範圍邊界(這一版做什麼、明確不做什麼)
3. 業務規則
4. 限制條件(法規、支付、既有系統整合)
5. 成功指標
## 產出
訪談結束後,產出 specs/00-project-brief.md,必須包含:
– 目標與非目標
– 使用者角色
– 業務規則清單
– 風險與假設
– 未決問題(open questions)
## 最重要的規則
凡是使用者沒有明確回答、你不確定的地方,
一律列入「未決問題」,禁止自行填入預設值。
Skill 2:拆解 Story(story-splitting)
為什麼是 skill: 垂直切片和 INVEST 是可以寫死的判斷準則,但砍 story、排優先序仍是人拍板。
—
name: story-splitting
description: 將需求文件拆解為 epic 與 user story。當使用者
要求拆 story、建立 story map、或需求整理完成後使用。
—
# Story 拆解準則
## 輸入
specs/00-project-brief.md 與 specs/constitution.md
## 規則
– 每個 story 用「As a [角色], I want [能力],
so that [效益]」格式
– 採垂直切片:每個 story 對使用者有獨立可驗證的價值
– 用 INVEST 原則自我檢查每個 story,不合格的說明原因
– 標注 story 之間的相依關係
– 每個 story 給編號(US-01、US-02…)
– 標注最小可演示路徑(walking skeleton)
– 只能拆解 brief 裡有的需求,禁止自行發明功能
## 產出
specs/01-story-map.md,以 epic 分組
Skill 3:EARS 格式 AC(ears-ac)
為什麼是 skill: 這是最典型的 skill——句型限定、編號規則、「不准腦補」全是可封裝的規範。而且它會成為跨角色的共同語言:之後的 spec-reviewer 和 tdd-developer 兩個 agent 都依據這份 skill 來解讀 AC。
—
name: ears-ac
description: 為 user story 撰寫 EARS 格式的驗收條件。
當使用者要求寫 AC、驗收條件、acceptance criteria 時使用。
—
# EARS 驗收條件撰寫準則
## 句型(只准用這三種)
– WHEN <觸發事件> THE SYSTEM SHALL <行為>
– IF <錯誤條件> THEN THE SYSTEM SHALL <行為>
– WHILE <持續狀態> THE SYSTEM SHALL <行為>
## 編號
AC-{story編號}-{兩位流水號},例如 AC-04-01
## 必要涵蓋範圍
正常路徑、逾時、失敗、重複操作、併發情境
## 最重要的規則
凡是 spec 未明確定義的業務規則(例如時限幾分鐘、
可重試幾次),禁止自行決定,一律列在文件末端的
【待人類決策】區塊,等使用者裁決後才更新為正式 AC。
## 產出
specs/us-{編號}-{名稱}.md,一個 story 一個檔案
Skill 4:例子問答(sbe-examples)
為什麼是 skill: EARS 適合「觸發→反應」的單一行為;有配額、時間窗、規則組合的複雜業務規則,要用 Specification by Example 的例子問答釘死邊界——而例子的答案必須來自人。
—
name: sbe-examples
description: 用具體例子問答釐清複雜業務規則,產出 Gherkin
scenario。當業務規則涉及多條件組合(配額、日期、身分
交乘)或使用者要求「用例子確認」時使用。
—
# 例子問答協議(Specification by Example)
## 進行方式
– 每次只提出一個具體例子,必須含明確的數值
(日期、金額、配額狀態),不准用抽象描述
– 提出例子後,問使用者:系統應該有什麼行為?
– 使用者回答後,把確認過的例子寫成 Gherkin scenario
– 持續問到所有邊界都覆蓋,最後再問一次:
「還有沒有你想到、但我沒問到的情況?」
## 例子選擇策略
優先問邊界:恰好在門檻上、門檻前後一單位、
配額恰好歸零、多條規則同時適用時的優先序
## 產出
specs/us-{編號}-{名稱}.feature,累積確認過的 scenario
Agent 1:對抗性審查者(spec-reviewer)
為什麼是 agent 不是 skill: 同一個對話裡的 AI 會傾向認同自己剛寫的東西。審查者需要全新的乾淨 context、獨立角色、不需要人在迴圈,產出一份報告——這正是 subagent 的甜蜜點。
注意 tools: 只給唯讀權限——審查者不該有改文件的權力,這本身就是治理設計。
—
name: spec-reviewer
description: 對 specs/ 下的 AC 與 feature 檔做對抗性審查。
AC 撰寫完成後使用,或使用者要求審查規格時使用。
tools: Read, Grep, Glob
—
你是挑剔的資深測試工程師。閱讀 specs/ 目錄下所有文件,
進行對抗性審查:
1. 找出遺漏的邊界案例
2. 找出互相矛盾的規則(包含與 constitution.md 的矛盾)
3. 找出無法測試的敘述(含糊形容詞、沒有明確判準的句子)
4. 檢查併發情境:同一資源被兩個操作同時競爭時,
規格是否定義了明確結果
只提出問題與質疑,禁止修改任何文件。
輸出依嚴重度排序(Blocker / Major / Minor)的問題清單。
Agent 2:測試先行開發者(tdd-developer)
為什麼是 agent: 可自主執行、有明確驗證標準(測試通過 + AC 對照表),人只驗收結果。注意它載入 ears-ac skill 的規範來解讀 AC——skill 作為共同語言的價值在這裡兌現。
—
name: tdd-developer
description: 依 specs/ 下的 AC 以測試先行方式實作 user
story。當使用者要求實作某個 story 時使用。
—
你是嚴謹的開發者,依 .claude/skills/ears-ac/SKILL.md
的規範解讀 AC。實作流程:
1. 讀取指定 story 的 AC 檔與 .feature 檔
2. 先把每一條 AC 轉成一個失敗的自動化測試
(一條 AC 至少對應一個測試)
3. 執行測試,確認全部失敗
4. 實作程式碼,讓測試逐一通過
5. 全部通過後,產出對照表:
AC 編號 → 測試名稱 → 通過狀態
## 鐵律
– 過程中發現 spec 有缺漏或歧義,立刻停下來問使用者,
禁止自行腦補業務規則
– 禁止修改測試來遷就實作;測試錯了要先回報
– 【待人類決策】區塊還有未裁決項目的 story,拒絕實作
工具箱完成。接下來的實戰,你會發現每一步的 prompt 都變得非常短——因為方法論已經內建了。
第二部分:實戰台灣高鐵訂票系統

圖 2:高鐵訂票系統開發全流程與人類閘門
Step 0:建立專案憲法
憲法是「不管做哪個功能都不能違反」的全域規則,所有 skill 和 agent 都會參照它。貼給 Claude Code:
請建立 specs/constitution.md:
# 專案憲法:台灣高鐵訂票系統
– 介面語言:繁體中文;程式碼與註解:英文
– 法規:個資法(身分證字號必須加密儲存)
– 業務鐵律:一個座位在同一時間只能被一張有效訂單持有
– 付款規則:訂位成立後,限時內未完成付款即自動釋放座位
– 規格文件是 source of truth:需求變更時先改規格再改程式
Step 1:需求訪談
原本要貼一大段訪談指令,現在只要一句:
我要開發台灣高鐵訂票系統,請訪談我。
req-interview skill 會自動接手,開始逐輪提問:「非會員可以訂票嗎?」「一筆訂單最多幾張票?」「大學生優惠在哪個時點驗證身分?」「自由座要不要納入這一版?」你逐題回答,不確定的就說不確定——它會列進未決問題,不會自己猜。
為了讓後面的範例一致,假設我們的回答把第一版範圍定為:
做: 單程對號座訂票、非會員訂票、信用卡付款、超商與車站取票
不做: 自由座、TGo 會員、團體票、定期票、去回程票
你的檢查點: 打開 specs/00-project-brief.md,重點看「未決問題」清單——這是整份文件最有價值的部分,它把 AI 猜測轉成了等你拍板的決策。
Step 2:拆解 User Story
請根據 brief 拆解 user story。
story-splitting skill 產出 specs/01-story-map.md(節錄):
## Epic 1:查詢與訂位
– US-01 查詢班次:旅客輸入起訖站、日期、時段,
查看可訂班次與票價
– US-02 選擇票種:全票/孩童/敬老/愛心,及早鳥優惠
– US-03 選擇座位:標準/商務、靠窗/走道,或自動配位
## Epic 2:付款與取票
– US-04 完成付款:信用卡付款,逾時自動釋放座位
– US-05 取得票證:取票代碼,可於超商或車站取票
## Epic 3:訂位管理
– US-06 查詢訂位紀錄
– US-07 退票:依乘車前時間計算手續費
Walking skeleton:US-01 → US-03(自動配位)→ US-04
你的檢查點: 切片是否真的垂直?有沒有 brief 裡沒提、AI 過度發揮的 story?直接說「US-XX 刪掉」「US-YY 排第一」讓它更新。
Step 3:撰寫 AC
請為 US-04 撰寫驗收條件。
ears-ac skill 產出 specs/us-04-payment.md(節錄):
AC-04-01 WHEN 旅客完成訂位,THE SYSTEM SHALL 保留座位
並開始付款倒數(時長待決策)
AC-04-02 IF 倒數結束仍未完成付款,THEN THE SYSTEM SHALL
釋放座位、將訂位狀態改為「已取消」,並通知旅客
AC-04-03 IF 信用卡授權失敗,THEN THE SYSTEM SHALL 顯示
失敗原因,並允許在保留期限內重試
AC-04-04 WHILE 訂位處於「保留中」,THE SYSTEM SHALL 確保
該座位不出現在其他旅客的可選座位中
【待人類決策】
– 座位保留時間是幾分鐘?
– 授權成功但請款失敗,如何處理?
– 付款進行到一半、倒數歸零,以哪個時間點為準?
你的檢查點: 逐題裁決【待人類決策】,例如回覆:
保留時間 10 分鐘;授權成功但請款失敗視同付款失敗、
訂位保留至期限;以「付款請求送出」的時間點為準。
請更新 AC。
Step 4:用例子釘死早鳥優惠
早鳥優惠的規則比較複雜,請用例子跟我確認。
sbe-examples skill 開始逐一提問:
Claude: 乘車日 2026/08/20,今天是 2026/07/25(乘車前 26 天)。該班次 65 折配額已售完,8 折配額尚有餘量。旅客查詢全票票價,系統應顯示什麼?
你: 顯示 8 折早鳥票價。
確認過的例子累積到 specs/us-02-early-bird.feature:
Scenario: 65折配額售完,提供次一級折扣
Given 乘車日為 2026/08/20,今日為 2026/07/25
And 該班次 65 折配額已售完,8 折配額尚有餘量
When 旅客查詢該班次全票票價
Then 系統顯示 8 折早鳥票價
Scenario: 乘車前 5 天內不提供早鳥
Given 乘車日為 2026/07/18,今日為 2026/07/14
When 旅客查詢該班次票價
Then 系統僅顯示全票原價,不顯示早鳥選項
Step 5:呼叫審查者 Agent
請用 spec-reviewer 審查目前所有規格。
subagent 在全新的 context 裡讀完 specs/,回報問題清單,例如:
– Blocker: AC-04-02 說逾時釋放座位,但旅客此刻若正停在信用卡 3D 驗證頁面,規格未定義結果
– Major: 兩位旅客同時對最後一個座位送出訂位,「同時送出」的瞬間誰成立,規格未定義
– Minor: 早鳥的「乘車前 N 天」未定義以何時區、何時刻計算
你的檢查點: 逐條裁決——有道理的,請 Claude Code 補 AC;過度設計的,明確標注 out of scope 寫進文件。這就是把對抗性測試前移到需求階段,比寫完程式才發現便宜太多。
Step 6:呼叫開發者 Agent
請用 tdd-developer 實作 US-04。
它會:把每條 AC 轉成失敗的測試 → 確認全部失敗 → 實作到逐一通過 → 交出「AC 編號 → 測試名稱 → 通過狀態」對照表。如果 US-04 還有未裁決的【待人類決策】,它會拒絕實作——這是我們在 agent 定義裡寫死的鐵律。
那份對照表就是你的驗收閘門(Eval Gate):每一條需求都有對應的測試在守著,AI 產的程式碼不再靠肉眼逐行檢查,而是靠規格驗證。
第三部分:實際修一次 Skill 和 Agent
工具箱不是打造一次就完工的。環境會變、業務規則會變、模型每隔幾個月換代一次。該調整的訊號有三種:觸發失準(該啟動沒啟動,或不該啟動卻啟動)、行為偏差(有啟動但違反了裡面的規則)、環境變遷(規則改了、流程改了、模型升級了)。

圖 3:三種訊號的診斷分流
光講原則不夠,這一節我們真的跑兩次修改:一次修 skill(ears-ac),一次修 agent(tdd-developer),而且每次都驗證到確認新版真的在運作為止。
情境一:修 Skill——ears-ac 自行假設了業務規則
第 1 步:重現並保存失敗案例
某天你請它為 US-04 寫 AC,產出裡出現了這一條:
AC-04-01 WHEN 旅客完成訂位,THE SYSTEM SHALL 保留座位
並開始 15 分鐘付款倒數
spec 從來沒有定義過保留時間。skill 明明寫了「禁止自行決定」,它還是以「業界慣例」為由假設了 15 分鐘,而且沒列入【待人類決策】。
先別急著改,把證據存下來。貼給 Claude Code:
請把剛才這段對話中我的指令與你的產出、以及偏差之處,
存成 .claude/skills/ears-ac/failures/2026-07-15-自行假設時限.md
產出的失敗案例檔長這樣:
# 失敗案例:自行假設業務規則
## 我的指令
請為 US-04 撰寫驗收條件。
## 產出(節錄,偏差處)
AC-04-01 WHEN 旅客完成訂位,THE SYSTEM SHALL 保留座位
並開始 15 分鐘付款倒數
## 問題
spec 從未定義保留時間。skill 明明寫了「禁止自行決定」,
它仍以「業界慣例」為由假設了 15 分鐘,
且未列入【待人類決策】。
失敗案例是調整 skill 最重要的原料——沒有具體案例,你只會憑感覺加規則,越加越亂。
第 2 步:診斷分流
判斷是哪一種問題:產出有 EARS 句型、有 AC 編號,代表 skill 有被載入——所以不是 frontmatter description 的觸發問題,是內文規則不夠強。(反過來,如果它完全用一般方式回答、連 EARS 格式都沒有,那要改的是 description,把使用者實際會說的話——例如「列 AC」——加進觸發詞。)
第 3 步:讓 Claude Code 提出最小修改
不用自己盯著檔案猜,把失敗案例丟給它:
請閱讀 .claude/skills/ears-ac/SKILL.md 和
failures/2026-07-15-自行假設時限.md。
請診斷:是哪一段規則寫得不夠明確,導致它以「業界慣例」
為由自行假設了 15 分鐘?
提出「最小修改」——只改必要的地方,不要重寫整份 skill。
先給我修改前後的 diff,經我確認後才更新檔案。
注意兩個關鍵字:最小修改(防止 AI 順手重寫整份文件,讓你無法追蹤)和經我確認後才更新(連改 skill 這件事,人也要守閘門)。
它的診斷會指出:原規則只說「禁止自行決定」,但沒有封死「引用業界慣例」這條側門,也沒有交付前的自我檢查機制。你確認後,它做出的修改如下(這是實際執行後的 git diff):
— a/.claude/skills/ears-ac/SKILL.md
+++ b/.claude/skills/ears-ac/SKILL.md
@@ -21,6 +21,17 @@ AC-{story編號}-{兩位流水號},例如 AC-04-01
凡是 spec 未明確定義的業務規則(例如時限幾分鐘、
可重試幾次),禁止自行決定,一律列在文件末端的
【待人類決策】區塊,等使用者裁決後才更新為正式 AC。
+「業界慣例」「常見預設值」不構成自行決定的理由。
+
+反例(禁止):
+AC-04-01 … SHALL 保留座位並開始 15 分鐘付款倒數
+正確寫法:
+AC-04-01 … SHALL 保留座位並開始付款倒數(時長待決策)
+【待人類決策】座位保留時間是幾分鐘?
+
+## 交付前自我檢查
+輸出前逐條檢查每個 AC:是否含有任何 spec 中
+找不到出處的具體數值?有,就改寫並移入【待人類決策】。
三個修改動作,對應三種常見手法:封側門(把它用來合理化偏差的理由明文排除)、給反例(一個具體反例勝過三條抽象規則)、加自我檢查(逼它交付前逐條核對)。
第 4 步:確認更新成功——三層驗證
這是最多人跳過、也最不該跳過的一步。驗證分三層:
(1)檔案層:確認檔案真的改了,而且只改了該改的。
git diff .claude/skills/ears-ac/SKILL.md
看到的就是上面那份 diff——沒有多改一行,才叫最小修改。
(2)載入層:開新對話,確認新版有被載入。
這裡有個最常見的坑:skill 是在對話開始時載入的,舊對話裡改 skill,當下那個對話可能還在用舊版。 所以驗證前先結束 Claude Code(Ctrl+C),重新啟動 claude,然後問:
在寫 AC 之前,請先說明 ears-ac skill 目前對
「spec 未定義的業務規則」有哪些要求?
如果它的回答提到「業界慣例不構成理由」和「交付前自我檢查」,代表新版已載入。如果講的還是舊版內容,回頭檢查檔案路徑和 frontmatter 格式是否正確。
(3)行為層:用同樣的輸入重跑,比對行為。
在同一個新對話貼上當初出事的原始指令,一字不改:
請為 US-04 撰寫驗收條件。
修正後的產出:
AC-04-01 WHEN 旅客完成訂位,THE SYSTEM SHALL 保留座位
並開始付款倒數(時長待決策)
…
【待人類決策】
– 座位保留時間是幾分鐘?(spec 未定義)
15 分鐘消失了,問題回到了該回的地方——你的桌上。最後補一個反向測試,確認沒有修過頭:
什麼是 EARS 格式?
它應該正常解說,而不是硬套 skill 開始產 AC——這確認 description 的觸發範圍沒有被這次修改弄壞。
第 5 步:進版本控管
git add .claude/
git commit -m “ears-ac: 加入反例與交付前自我檢查,修正自行假設業務規則
失敗案例: failures/2026-07-15-自行假設時限.md”
commit message 記錄為什麼改,並指向失敗案例。半年後模型換代,你才知道哪條規則是為了防哪個坑、哪些可以拿掉。
情境二:修 Agent——tdd-developer 的測試跑了十分鐘
事故
你請 tdd-developer 實作 US-04,它交出的對照表看起來很漂亮,但整個測試套件跑了十分多鐘。一看程式碼,測「逾時釋放座位」那條 AC 時,它寫了真實的 sleep(600) 等倒數結束。功能是對的,但這種測試進了 CI 就是災難。
這就是「鐵律來自事故」:agent 的鐵律不是一開始想像出來的,是從真實事故長出來的。
修改
Agent 檔案就是純文字,修法和 skill 一樣。這次的事故很明確,可以直接下指令:
tdd-developer 在 US-04 用真實 sleep 等待 600 秒來測逾時,
導致測試套件跑了十分鐘。
請在 .claude/agents/tdd-developer.md 的鐵律區塊
加入一條規則防止此事故。最小修改,
先給我 diff,經我確認後才更新。
實際執行後的 diff:
— a/.claude/agents/tdd-developer.md
+++ b/.claude/agents/tdd-developer.md
@@ -18,5 +18,8 @@
## 鐵律
– 過程中發現 spec 有缺漏或歧義,立刻停下來問使用者,
禁止自行腦補業務規則
+- 測試時間相關邏輯(逾時、倒數、期限)必須使用
+ 可注入的時鐘或 fake timer,禁止 sleep 真實等待;
+ 整個測試套件必須在 30 秒內跑完
– 禁止修改測試來遷就實作;測試錯了要先回報
– 【待人類決策】區塊還有未裁決項目的 story,拒絕實作
注意這條鐵律的寫法:不只禁止(sleep),還給了正確做法(可注入時鐘 / fake timer)和可驗證的判準(30 秒內跑完)。可驗證的判準讓「有沒有改好」變成客觀問題。
驗證
開新對話,重跑同樣的任務:
請用 tdd-developer 實作 US-04。
驗收兩件事:
1. 新鐵律生效: 交付的對照表末端多了一行類似「測試套件執行時間:0.4 秒(使用 fake timer)」,程式碼裡的倒數邏輯改成了可注入的時鐘。
2. 舊鐵律沒被弄壞: 它在動工前仍然先確認了 US-04 的【待人類決策】已全數裁決——修一條規則,不能弄壞其他規則,這就是 agent 的回歸驗證。
順手把這次修改也 commit:
git commit -am “tdd-developer: 加入 fake timer 鐵律,禁止 sleep 真實等待
事故: US-04 逾時測試用真實 sleep 600 秒”
跑完兩個情境,git log 會長這樣——每一次修改都有出處、有理由:
fbf5067 tdd-developer: 加入 fake timer 鐵律,禁止 sleep 真實等待
89c5e02 ears-ac: 加入反例與交付前自我檢查,修正自行假設業務規則
c48c5e2 初版 skill 與 agent
另外,agent 還有一個 skill 沒有的調整維度:權限收放。tools: 是治理工具——spec-reviewer 多嘴改了文件?確認它只有 Read、Grep、Glob。tdd-developer 每次都要問能不能跑測試?放寬執行權限。原則是先給最小權限,出現具體需求才放寬,每次放寬都要說得出理由。

圖 4:Skill / Agent 調整循環與三層驗證
因應時代變遷:定期健檢
除了事故驅動的修改,建議每季(或每次模型大版本升級後)做一次健檢:
請閱讀 .claude/skills/ 和 .claude/agents/ 下的所有檔案
(含 failures/),以現在的你的能力為基準,回答:
1. 哪些規則是為了防範舊模型的弱點,現在可能已經多餘?
2. 哪些規則互相矛盾或重複?
3. 哪些 description 的觸發詞已不符合團隊的說話習慣?
只提出建議與理由,不要修改任何檔案。
它的建議你逐條裁決——跟審 AC 是同一個模式:AI 提案,人拍板。
三個常見錯誤
一、skill 肥大症。 每次出事就加一條規則,半年後 SKILL.md 變成三百行大雜燴,模型反而抓不到重點。規則超過一頁時先問:哪些可以合併?哪些其實是另一個 skill?(例如 ears-ac 裡長出一堆 Jira 同步規則,該拆成獨立的 jira-sync skill。)
二、否定句堆疊。 「不准這樣、禁止那樣」堆了十條,不如像情境一那樣:封側門 + 一個反例 + 自我檢查。否定句只告訴模型不能去哪,反例和正確寫法才告訴它該去哪。
三、改了不驗證。 憑感覺改完就收工,結果修好一個偏差、弄壞兩個原本正常的行為。三層驗證——檔案層(diff)、載入層(新對話確認)、行為層(同輸入重跑 + 反向測試)——一層都不能省。沒有回歸驗證的修改,跟沒有測試的重構一樣危險。
回顧:這套設計在講什麼
一、prompt 變短了,品質變穩了。 第二部分每一步的指令都只有一句話,因為方法論已封裝進 skill。更重要的是團隊效應:每個人呼叫的都是同一份 skill,產出格式一致、規則一致——skill 是團隊的共同語言,不是個人的 prompt 秘笈。
二、上游 skill,下游 agent,人守閘門。 需求、story、AC 這些上游工作,價值在「逼出人類決策」,所以做成 skill、人留在迴圈;審查、實作這些下游工作,價值在「依既定判準自主執行」,所以做成 agent、人只驗收結果。人的角色沒有消失,而是集中到了五個檢查點:未決問題拍板、story 取捨、【待人類決策】裁決、審查報告裁決、驗收對照表。
三、哪些刻意不自動化,跟哪些自動化一樣重要。 技術上完全可以做一個「自動訪談 + 自動回答 + 自動產 brief」的全自主 pipeline,demo 會很漂亮——但未決問題清單會消失,AI 猜測會重新偽裝成 AI 決策。忍住這個誘惑,是這套設計最重要的一條線。
四、skill 和 agent 是活的資產,用維護程式碼的紀律維護它們。 失敗案例驅動修改、最小修改、回歸驗證、版本控管、定期健檢——你對 code 怎麼做,對 skill 就怎麼做。而調整的每一步,仍然是同一個模式:AI 診斷、AI 提案,人拍板。
你只需要 Claude Code、六個文字檔、和一個 specs/ 資料夾。今天就可以開始。
發表迴響