Theme / v6.3.0

Superpowers

AI 開發方法論

實戰範例

實戰範例 010:把模糊需求變成清楚步驟 - 用 writing-plans 拆解加個搜尋功能

示範 writing-plans skill 如何把一句模糊需求轉成有驗收標準的階段計畫

情境

使用者最常給 AI 的需求,往往是這種話:「幫我加個搜尋功能」。

這句話對 AI 來說資訊量太少。什麼東西要被搜尋?搜尋結果要怎麼顯示?要不要 debounce?要不要 highlight 符合的字?這些全部不講清楚的話,AI 會自己腦補,然後你可能拿到一個「能跑但完全不是你要的」實作。

這個範例示範 writing-plans skill 怎麼把這種模糊需求,拆成有階段、有驗收標準(definition of done)的計畫。

不用 skill 的話會發生什麼事?

如果你直接跟 AI 說「幫我加個搜尋功能」,多半會這樣:

你:幫我加個搜尋功能
AI:好的,我來建立搜尋輸入框、filter 邏輯、UI 呈現...
(開始改 5 個檔案,你只能事後看 diff)

問題不在 AI 寫得好不好。問題在於你根本沒機會說「階段 1 先做欄位就好,debounce 之後再說」。AI 一次把所有東西做完,你想中途喊停都很難。

第 1 步:觸發 writing-plans skill

把那句模糊需求,原封不動丟給 writing-plans。這個 skill 的工作就是「把模糊變具體」。

觸發

使用 writing-plans skill,把「幫我加個搜尋功能」拆成實作計畫

AI 回應摘要

## 搜尋功能實作計畫

### 階段 1:基本搜尋欄位與 filter(預估 30 分鐘)
- [ ] 在清單上方加 text input
- [ ] 輸入文字時 filter 目前清單
- [ ] 空字串顯示全部
- 驗收標準:輸入 "abc" 時只看到 title 含 "abc" 的項目,清空後恢復全部

### 階段 2:debounce 與效能(預估 15 分鐘)
- [ ] 輸入後延遲 300ms 才 filter
- [ ] 大量項目時不卡 UI
- 驗收標準:連續快速輸入時,filter 只在最後一次觸發,不會每次 keystroke 都跑

### 階段 3:highlight 符合的字串(預估 20 分鐘)
- [ ] 符合的部分用粗體或底色標示
- [ ] 大小寫不敏感
- 驗收標準:搜尋 "abc" 時,結果裡的 "abc" 不論大小寫都要被標出來

### 跨階段共通
- [ ] 每階段結束跑測試
- [ ] 每階段獨立 commit

第 2 步:檢查計畫,決定要不要調整

拿到計畫之後別急著實作,先看一遍。常見的調整方向:

  • 階段 3 的 highlight 其實不急,可以之後再說,那就把它標成「之後做」。
  • 階段 1 的驗收標準不夠細,例如沒提到「搜尋空白會怎樣」,可以補上。
  • 順序不對,例如你想先做 debounce 再做基本 filter(少見,但有可能)。

這個「先檢查再實作」的動作,是 writing-plans 跟「直接辦」最大的價值。你拿到的是一份可以改的計畫,不是一份不能回頭的 diff。

為什麼這份計畫有價值?

關鍵不在於「列了三個階段」。關鍵在於每個階段都有驗收標準

模糊需求 writing-plans 拆出來的計畫
「加個搜尋功能」 三個明確階段,每階段獨立可交付
不知道何時算做完 每階段有 definition of done
一次改完才能看 階段 1 做完就能 demo 給人看
出問題難回頭 每階段獨立 commit,可逐階回滾

驗收標準最大的好處,是你跟 AI 都知道「這階段什麼時候算做完」。沒有這個共識,AI 會一直加東西、一直改,你也不知道什麼時候該喊停。

第 3 步:把計畫交給執行型 skill

writing-plans 只負責「產出計畫」。計畫要落地,要靠執行型 skill:

  • 小計畫 → 用 test-driven-development 一個階段一個階段做,紅綠重構
  • 多階段複雜計畫 → 用 executing-plans 按計畫 todo 推進
  • 想把整個流程串起來 → 用 quick-flow workflow(brainstorming → writing-plans → TDD → verification)

下一個範例(011)會走完一遍 quick-flow,看這四個 skill 怎麼串起來交付一個完整的小功能。

常見疑問

問:計畫寫完就定案了嗎? 不用。做到一半發現遺漏(例如忘了考慮空字串),可以再觸發一次 writing-plans 補上。計畫是活的。

問:階段一定要切這麼細嗎? 看任務大小。這個範例只有三個階段是因為搜尋功能本身就小。更大的功能可能切到七、八個階段,但每個階段的「驗收標準不能省」這個原則不變。

問:debounce 為什麼不放在階段 1 一起做? 因為階段 1 的目標是「能 filter」。debounce 是優化,不是核心功能。分開的好處是階段 1 做完就能 demo,不用等優化一起來。

關鍵學習點

  • 模糊需求不是 AI 的問題,是輸入的問題。writing-plans skill 把「加個搜尋功能」這種話,逼成具體階段。
  • 驗收標準(definition of done)比清單本身重要。沒有驗收標準,AI 不會知道什麼時候停。
  • 階段切小,每階段獨立 commit。出問題時可以只回滾一階,不用整個重來。
  • 計畫不是寫完就定案,做到一半發現遺漏,再觸發一次 writing-plans 補上就好。