wen aidev
Published on

Kiro SDD 入門(一):Specs 基礎 + Design-first 怎麼選

Specs 到底在幹嘛

用過 AI IDE 的人應該都有經驗:你丟一段需求給 AI,它就開始亂寫,寫到一半方向歪了你還不一定發現。Kiro 的 Specs 就是要解決這個問題 => 先把意圖收斂清楚,再讓 AI 動手。

簡單講,Specs 就是把一個需求拆成三個階段跑完:

  1. Requirements(要做什麼)
  2. Design(怎麼做)
  3. Tasks(拆成步驟去執行)

每個階段都會產出一份 .md 文件,你可以 review 完再往下走,不用一次賭 AI 全部做對。

Kiro 官網:https://kiro.dev/


三個階段分別在做什麼

Requirements:把需求寫到「可以驗證」

Kiro 用一種叫 EARS 的寫法來寫需求,格式長這樣:

WHEN [什麼情況發生]
THE SYSTEM SHALL [系統應該做什麼]

舉個例子,假設你在做一個表單:

WHEN a user submits a form with invalid data
THE SYSTEM SHALL display validation errors next to the relevant fields

為什麼要這樣寫?因為這種格式每一條都可以直接對應一個測試案例。你不會再寫出「表單驗證應該要正常運作」這種模糊到無法驗證的需求。

Design:把技術方向定下來

Design 文件回答的是「怎麼做」:

  • 架構跟模組怎麼拆
  • API 設計、資料流
  • 技術選型
  • 跟現有 codebase 怎麼整合

Kiro 會自動幫你生成 design.md,裡面包含架構圖跟流程圖,你看完覺得 OK 再往下。

Tasks:拆成可追蹤的步驟

最後 Kiro 會把實作拆成一個一個 task,每個 task 都有明確的完成條件。你可以一個一個跑,也可以一次全跑,跑的過程中會即時更新狀態。

重點是每個 task 都能獨立 review => 不要一次全吞,中間看一下 diff 比較安全。


Requirements-first vs Design-first 怎麼選

Kiro 的 Feature Spec 有兩種起手式,選哪個取決於你現在手上有什麼:

你的狀態選哪個典型情境
知道要什麼功能,但技術怎麼做還沒定Requirements-first全新功能、新專案、產品需求導向
已經有架構或技術限制Design-first在既有專案上加功能、架構已經定了

兩個 flow 的差別就是順序不同:

  • Requirements-first:Requirements → Design → Tasks
  • Design-first:Design → Requirements → Tasks

Design-first 適合什麼情況?比如你要在既有的 FastAPI 專案上加一個 MCP server,技術棧跟架構限制都很明確,這時候先寫 design 再回推 requirements 會比較順。

補充: Design-first 不是比較厲害,就只是另一種起手式。你缺需求釐清就先 Requirements-first;你缺技術收斂就先 Design-first。


修 bug 不要硬套 Feature Spec

如果你的目標是修 bug,不要用 Feature Spec 硬套,Kiro 有專門的 Bugfix Spec

Bugfix Spec 的核心結構是三段:

  • Current Behavior:現在錯在哪(bug 的重現條件)
  • Expected Behavior:修完應該怎樣
  • Unchanged Behavior:哪些行為不能動

第三段是最重要的 => 你把「不能動的」寫清楚,AI 才不會為了修一個 bug 把其他地方一起改掉。後面第三篇會專門講這個。


我自己跑 Specs 的流程

  1. 開新專案 Spec 用預設的(requirements=>design=>task)
  2. 已有專案=>新增功能Feature =>用Design-first(design=>requirements=>task)
  3. 這基本上都是要review,修正幾次才能寫到符合滿意的標準
  4. 開發中是可以回來修正 spec (這也是官方說法)

坑點在第 3 步:很多人會想說「反正 AI 生的,直接跑 tasks 就好」,但 requirements 或 design 如果方向錯了,後面全部要重來。

新功能是可以開全新的spec按照領域切分是很好的做法.


什麼時候用 Specs、什麼時候直接 vibe

不是所有事情都要開 Spec:

  • 用 Specs:複雜功能、需要結構化規劃、團隊協作需要文件、修 bug 怕 regression
  • 直接 vibe:快速 prototype、探索性的 coding、沒有明確目標的時候

參考

  • https://kiro.dev/docs/specs/
  • https://kiro.dev/docs/specs/feature-specs/
  • https://kiro.dev/blog/specs-bugfix-and-design-first/
  • https://kiro.dev/docs/specs/bugfix-specs/

支持作者 ☕

台灣用戶:

透過 LINE Pay 支持

國際用戶:

透過 Ko-fi 支持

留言討論