
倒數第二天了,我們就來整個回顧一下開發的流程步驟吧!
也算是替這一整個 Vibe Coding 系列做個收尾,讓你未來可以直接照著走,而不用再回頭翻 Day 1 ~ Day 28。
從前面章節開始,其實我們一直反覆在做這六個步驟:
而每一個階段都有它合適的、擅長的工具,這邊整理成一個表格:
| 步驟 | 做什麼 | 用什麼 |
|---|---|---|
| 1. 想清楚 | 把需求聊成規格跟驗收標準 | 訪談式 Prompt、SPEC.md |
| 2. 打地基 | 讓共識寫進檔案 | git、CLAUDE.md、DESIGN.md |
| 3. 先計畫 | 大改動先看計畫再放行 | Plan Mode、docs/plans |
| 4. 小步跑 | 一次一個功能:做、驗收、commit | Prompt 三要素、 /clear 、除錯三劍客 |
| 5. 建立關卡 | 讓程式碼品質變成自動化 | code-reviewer、Hooks、測試、PR、CodeRabbit |
| 6. 上線系統 | 合併進 main 就自動部署 | GitHub Actions、GitHub Pages |
基本上這個流程與我們實際開發也是雷同。
儘管 Vibe Coding 讓開發速度變得非常快,但是放手給 AI 去做之前每個階段都會有一些檢查點,像是規格接住方向、Git 接住失誤、計畫接住範圍、驗收跟測試接住品質、部署流程接住上線,這些檢查點就像是煞車一樣,讓你敢開快車。
不過這邊你要注意,這六大步驟並不是一條直線,而是會一直轉下去的圈,上線之後的每一次改版,都是從第一步重新開始。

嗯?很像 Scrum(敏捷開發)?沒錯,其實概念上是差不多的,只是這邊把每個步驟拆得更細,並且針對 AI 開發的特性做了調整。
Note
敏捷開發比較像是一套理念(價值觀跟原則),Scrum 則是實踐敏捷的其中一種框架,這邊的六步驟是我自己整理出來的流程,並不是官方文件裡的說法。
那接下來當然要來聊一下每個步驟的來源,讓你可以體會到這套流程不是憑空想出來的,而是踩過坑才有的。

如果你只是跟 AI 說「幫我把這個頁面做得更好看,你自己決定」,那 AI 基本上就是「腦補」。
所以你就會一直反覆說:不對、不對、再改、再改,接著你就開始浪費無意義的 Token 以及時間,就跟你對著工程師說你要做一套系統,但你卻沒講清楚你要幹嘛,工程師只好腦補空窗的那一段。
所以你使用 AI 的時候,其實就體現出你平常到底是怎麼與他人溝通交代需求的。

需求討論完畢就要來打地基囉,這邊的地基就是:
不過這邊要注意,Claude Code 開新對話的時候只會自動讀 CLAUDE.md,所以 DESIGN.md 跟 SPEC.md 要在 CLAUDE.md 裡面用 @ 掛進來(例如寫一行 @SPEC.md),AI 才會一起讀到。
而這階段也會把使用的技術討論清楚,千萬不要 AI 講什麼技術就用什麼技術,而是要先問它這個技術的優缺點,然後由你來拍板。

接下來直接針對 SPEC.md 的需求開始直接開發嗎?
不,別忘了 AI 的能力是有限的,尤其是對於大改動,它可能會漏掉一些細節,或是做出你不想要的東西。
所以你應該要先請它幫你做一份計畫,列出它要動哪些檔案、哪些是它不會做的事、驗收標準是什麼,然後你再來審查。
並且請它把這些 Plan Mode 的計畫存進 docs/plans/,之後出 bug 還能翻出來對照它有沒有照計畫做,甚至拿出來打臉你自己 明明就是你自己說要這樣做,但卻又怪罪 AI 做錯。

計畫看完沒問題,當然就可以開始做了,但這邊我會建議你一次只做一個功能。
為什麼呢?就像你一次吃了三種沒吃過的東西,結果蕁麻疹,但你根本不知道是吃哪一個導致的,這件事情放到 AI 也是一樣,一次請 AI 改 N 個功能也一樣,壞掉的時候你根本不知道是哪一個改壞的。
所以每一輪的節奏會是這樣:
/clear 把上一輪的對話清掉,換一張乾淨的桌子。而驗收的時候要特別注意,驗收會過不代表沒有 Bug,很可能只是你剛好沒測到那個情境而已,所以驗收條件裡要刻意放幾個容易出事的情況,像是跨日期的資料、上個月的資料、金額剛好等於預算,另外舊功能也要順手點一點,確認沒有被這次的改動弄壞。
真的壞了也不用擔心,但你絕對不能說「壞了,修一下」就叫 AI 去改,因為這就跟你去看醫生只說「我不舒服」一樣,醫生也只能用猜的,所以你必須描述清楚壞掉的情況。
這其實就是一套固定的除錯 SOP。
如果來回幾次還是修不好可以換個方向問、把範圍縮小,再不行就用 git 把壞掉的檔案還原,回到上一個存檔點重新再來。

功能做完了,那品質要靠什麼呢?難不成都由你自己來檢查嗎?
不可能,人都會忘了何況是 AI,你每天下班之前跟同事說「下班記得關冷氣」,大多時候都會記得,可是總有忘記的那一天,而 Hook 就很像是冷氣設定定時關機,時間到了它就一定會關。
所以每次都要檢查的像是排版、測試,就不要只寫在 CLAUDE.md 裡拜託 AI 記得做,而是交給 Hook,讓它時機一到就自動執行。
不過這邊不是說你就不用驗收了唷,新功能你還是要親手點過一次,只是那些每次都要重複的檢查,就交給機制來顧,畢竟 Vibe Coding 本來就不太會一行一行去看 AI 寫的程式碼,你沒看到的地方,總要有人幫你盯著。
這邊的關卡我會分成這幾道:
這邊要特別注意,code-reviewer 跟其他關卡不太一樣,它不會自己跑,要你叫它才會出動,而且主 Agent 有時候會覺得自己審就好(固執),根本沒有派給它,所以功能做完之後,最好直接用 @ 點名它,才保證派得到。
那為什麼要開 PR,而不是直接 push 到 main 呢?因為 main 一 push 就會自動部署,等於直接上線給所有人看,所以平常會從 develop 開一個分支出來做事,做完再開 PR 申請合併回 develop,PR 你可以想成是一張申請單,關卡都跑完、你也看過結果了,才按下合併。
另外機制掛上去,也不代表它就照你想的在跑。
就像家裡裝了煙霧偵測器,可是你從來沒按過測試鈕,等到真的失火才發現電池早就沒電了。
像我們的排版 Hook,檔案看起來排得整整齊齊,可是後來才發現 Prettier 根本沒有設定檔,一直用它自己的預設值在排版,引號跟分號都跟專案原本的寫法不一樣,偏偏這種問題又不會讓功能壞掉,所以一直沒有人發現。
所以關卡掛上去之後,記得回頭看一次它是不是照你要的規則在做事,測試跟 GitHub Actions 也一樣,故意把程式改壞一次,看它會不會亮紅燈,確認抓得到之後再改回來,畢竟沒親眼看過它抓到錯,你怎麼知道它不是一直在放水呢?
真的亮紅燈的時候也不用緊張,先不要合併,把錯誤訊息貼給 AI 修好,再 push 到同一個分支重跑一次就好。
至於 code-reviewer 跟 CodeRabbit 給的報告則是要看,但不用全部照修,先處理比較嚴重的就好(像是 CodeRabbit 標成高、中等級的),低的再跟 AI 討論看看是不是真的需要修,畢竟 AI 給的等級只是它的意見,並不是聖旨,最後要不要改還是你來決定。

關卡都過了,終於可以上線了,不過 Actions 全綠不代表你的網站就沒問題唷。
這就像外送 App 顯示「已送達」,不代表餐真的到你手上,搞不好放錯樓層了,你還是要開門看一眼。
意思是 Actions 全綠只代表部署流程跑完了,像是部署到 GitHub Pages 的時候,網址會多一層專案名稱(例如 /money-note/),如果 vite.config.js 沒有設定 base,打開就是一片白畫面,可是 Actions 照樣全綠,所以打開正式網址親手點過一次才算數。
另外走 PR 流程之後,把 develop 合併進 main 的那一刻就等於上線了,所以前面那些關卡,一定要在按下合併之前全部過完。
如果是第一次把專案公開,push 之前也要先請 AI 檢查 commit 歷史裡有沒有金鑰、密碼、.env 這些不該公開的東西,因為推上去之後,就算再把檔案刪掉,commit 歷史裡還是看得到。
上線之後要做下一個功能,或是要改舊功能,一樣從第一步開始,而且記得一個大原則:
規則文件先更新,再動手。
為什麼呢?因為 AI 每次開新對話都是看 SPEC.md、CLAUDE.md 這些文件來做事,就像師傅是照設計圖施工,你想改格局卻沒改設計圖,師傅當然還是照舊的蓋。
像我們的預算提醒,一開始故意塞進計畫裡,就被 SPEC.md 的不做清單擋了下來,後來真的要做的時候,就是先回到第一步把規格改好,才順利做出來的。
至於下一圈要做什麼,也不一定要憑空想,盤點技術債時存下來的 docs/TODO.md 就是現成的候選清單,挑一條最小、風險最低的開始就好。
Note
以後遇到新的坑,也請你把它寫進流程裡,讓流程記住這次的代價,而不是靠你自己記住。至於寫在哪裡,可以照前面教過的分法:要做什麼寫進 SPEC.md、畫面長怎樣寫進 DESIGN.md、需要判斷的原則寫進 CLAUDE.md、每次都一定要發生的事交給 Hook、同一件事講三遍以上就收成 SKILL、算錯會出事的邏輯就補上測試。
看到這邊你可能會想,改一個按鈕的顏色也要走完六步,也太累了吧?
其實每一步的份量都可以跟著功能大小調整,像預算提醒這種小功能,訪談只問了八個左右的問題就對齊了,計畫也只確認範圍合理就放行,官方的最佳實踐也有類似的說法,如果是一句話就講得完的改動,就不用先計畫了。
那多大才算大改動呢?我自己的標準是會動到兩個以上的檔案、不熟悉的專案,或是我自己心裡也沒什麼想法的時候,就先開 Plan Mode。
可是瘦身跟跳過是兩回事,就像出門一樣,去巷口買個早餐不用拖行李箱,可是鑰匙跟手機不管去哪都要帶,而驗收條件就是那把鑰匙,再小的功能都不能省,因為每次你心存僥倖跳過的那一步,通常就是後來出事的那一步(別問我怎麼知道的)。
這邊我把六步收成一份清單,下一個專案每做一個功能,就照著逐條問自己一次:
npm test 是綠的嗎?有用 @ 請 code-reviewer 審過嗎?有從 develop 開分支、開 PR,看過 Actions 跟 CodeRabbit 的結果嗎?是的,就這樣,就這六條。
那時間也差不多到結尾了,這邊也幫你總結一下:
明天就是最後一天了,我會把 30 篇整理成一份目錄,之後要回來查東西會比較方便~
希望這一篇有讓你把這 30 天的做法帶走哩~
我們明天見囉~