部署之外的工具包
經驗具現化 — EP04:不只是部署,還有做事的節奏
上一篇講的是部署工具怎麼被 side project 推著長大。但做事的過程中,我發現有一個空白需要被填補,那就是怎麼「啟動自己的大腦」。常常坐在電腦前,想試著回憶一下上次做了什麼,自己自言自語地列舉了一些項目,但是又生怕忘了什麼。我總是會要求 Claude 替我看一下 git history,順便讓他回顧一下 daily 裡面的文件記錄,總結出一份我今天要做什麼的清單。花最多時間的不是技術問題,而是「管理做事的節奏」。每天開工要回想昨天做到哪、要釐清接下來該做什麼、討論完方向之後剩下的都是比較無趣的日常。這些也是摩擦,不在技術上,在協作的流程裡。於是這個 infra 專案開始長出另一組 skill,不是拿來部署的,是拿來管理工作節奏的。
先說一下名字的由來。twjug-lite 是過去舉辦社群活動時開的 GCP project name,現在只是個 side project 放置區,跟活動本身沒有關係了。之後的 skill 改用縮寫版本的 tl- 作為 prefix。
盤點一下手上的工具
GCP 相關的 skill 是從部署需求長出來的,它們也是建立目前專案的起點。不過最後要讓開發的節奏順暢合理,還是加了不少東西。特別是,當一個 side project 會在各種零碎的時間,被不同空閒時段的自己前仆後繼地改寫。
原本打算做的:
twjug-lite-gcp-deploy— 部署 Cloud Run Service 或 Job,支援單一 Dockerfile 和 mini-deployment.yaml 多 component 模式twjug-lite-gcp-undeploy— 移除已部署的 Service 或 Jobtwjug-lite-gcp-reviewer— 檢查 repo 的結構是否準備好可以部署,也能輔助全新的專案完成設定
這三個是「開發」的工具。接下來要講的是原本沒打算做,但後來長出來的「管理做事節奏」的工具:
tl-daily-standup— 上工前的盤點,自動掃描 git log、日誌、設計文件,產出今天要做什麼的報告tl-daily-i-am-lazy— 委派模式,討論完方向後把剩下的事全權交給 agent 執行
tl-daily-standup:上工前的盤點
模擬每日在辦公室的 standup 風格。啟動一個新的 Claude session,叫一聲 standup,它會自動掃描這些東西:
git log— 最近的 commit 紀錄docs/daily/— agent 工作過程中寫的日誌(還記得嗎?CLAUDE.md 裡有一條「學到新東西就記日記」的規則,agent 在工作過程中學到的事都會寫進這個目錄)docs/superpowers/specs/和docs/superpowers/plans/— 設計文件和實作計劃- agent 記憶中的待辦事項和進行中的工作
掃完之後產出一份三段式報告,長這樣:
## 最近做了什麼
- 完成 deploy skill 的 mini-deployment.yaml 多 component 支援
- 實作 Cloud Run Job 部署流程
- 新增 reviewer skill,檢查 repo 部署準備度
## 待完成 / 規劃中
- sidecar 支援尚未實作
- mini-deployment.yaml v2 格式設計中
## 建議下一步
1. 繼續 v2 格式設計,解決 multi-container 的需求
2. 補齊 reviewer skill 對 v2 格式的檢查邏輯
不用自己翻紀錄,開個 terminal 叫一聲就好。同時在看完報告之後,你還可以跟它一一核對哪些項目是不是已經完成,因為有時候它的總結不完全正確。在核對的過程中也可以幫助自己回想,或是去做出不同的決定,也許某些項目已經不重要了,可以取消或延後,或者是去修正它的結論。
tl-daily-i-am-lazy:委派模式
這個 skill 的需求發現,跟 brainstorming 有關。用了 brainstorming 之後,我發現它真的太細心了,大事小事都來問一遍。但老實說,我沒那麼多強烈的意見。多數時候我只想快速啟動,馬上進入 build-test-review 的循環。所以我需要一個小精靈,代替我同意那些不太重要的部分。
授權怎麼給?當我觸發這個 skill,就是同意它直接接手。agent 從對話上下文盤點出所有待完成的工作,列成清單,然後直接開始執行,不等你確認。盤點出的工作範圍內,它可以自由修改檔案、commit、甚至 push 到 remote。超出範圍的事,還是得遵守 CLAUDE.md 的「只查不改原則」。
遇到要做決定的時候怎麼辦?它不會停下來等你。它會記錄可選方案,從對話脈絡、日記、CLAUDE.md 規則和記憶中的使用者偏好來推測你的傾向,然後自己決定、繼續做。
完工時它會產出一份報告,說明各工作項目,還有整個歷程中它自己決定了什麼事,也會列出哪些事情我應該接手做下去的。長這樣:
## 完成報告
### 已完成
- [1] skill 拆分為 twjug-lite-gcp 和 tl-daily 兩個 plugin
- [2] 更新 marketplace 設定和 README
### 自主決策
- 決策 1:prefix 用 tl-daily- 而非 twjug-lite-daily-(理由:slash 清單太長)
### TODO(請確認)
- [ ] 確認新的 plugin 安裝指令是否正確
- [ ] blocked:marketplace 子目錄結構需要實測驗證
哪些做完了、自己做了什麼判斷、哪些卡住了,一目了然。你回來只需要看這份報告,接著做後續的討論,看是要延續著實作,或是做一些 e2e 的手工驗證。這裡的手工算是 human in the loop 概念中的一環,你還是得自己驗收一下。儘管,我目前的 lazy mode 已經會自動自發開 headless mode(claude -p)自我驗收了。
討論歸人,執行歸機器
i-am-lazy 常跟 brainstorming 一起用。brainstorming 來自 Claude Code 官方的 superpowers plugin,它的設計哲學是「任何創造性的工作都需要先經過設計」。不管看起來多簡單,都要先探索專案脈絡、一個一個問釐清需求、提出 2-3 個方案做 trade-off 比較、寫成 design spec、經過 self-review、使用者確認,然後才進入實作。典型的流程是:先用 brainstorming 把方向討論清楚、把 spec 寫出來,但它問的確認項目實在太多了,我自己大多只會回應前幾個主要的方向性問題,後面就丟給 lazy mode 去收尾。討論歸人,執行歸機器。
這兩組 skill 的整合,我並沒有帶入新的技術,而是結合了自己的習慣與對話記錄來驅動它們,讓結果較有機會偏向我的期望。但它們改變了我跟 agent 協作的節奏。順帶一提,這裡說的「開工」和「收工」不是真的上下班,而是啟動和結束一個 Claude session。在 standup 時的開工,或要求 Claude 寫 daily 的收工。比如你想在 auto-compact 之前先讓 agent 記下目前的進度,或是討論到一半要切換到另一個專案。開工叫一聲 standup 就能接上脈絡,收工下一句「寫日誌跟反省」讓 agent 收尾就好。
下一篇,繼續撞牆。另一個 side project 冒出來,需求超出了 mini-deployment.yaml 能承載的範圍,格式得再進化一次。