「先跑測試,全過再看 diff,確認沒有多餘的改動,再照 conventional commit 的格式寫 commit message,最後列出這次改了哪些檔案。」
第一次打很順手,第三次開始翻舊對話找來貼。到第十次,每次貼的版本都有一點不一樣 — 有時漏了「確認沒有多餘的改動」,有時忘了提 commit 格式。agent 照著做,結果也跟著每次不一樣。
問題不在 agent。同一個流程每次重新口述,本來就會走樣。
1949 年,劍橋大學的 EDSAC 開始運轉,是最早投入日常使用的儲存程式電腦之一。上面跑的程式,很多都要用到同樣幾種計算,像是三角函數和印出結果。
Maurice Wilkes、David Wheeler 和 Stanley Gill 的做法是建一套副程式庫。常用的計算步驟寫好、測好,各自打成一段紙帶,收在鋼製的檔案櫃裡。要用的時候,把那段紙帶複製接到自己的程式後面。Wheeler 設計了讓主程式跳進副程式、做完再跳回來的機制,這個做法後來成為 subroutine 的原型。
1951 年,三人把這套方法寫成《The Preparation of Programs for an Electronic Digital Computer》,被視為第一本程式設計的書。書的第二部分是近九十支副程式的規格:每一支做什麼、要什麼輸入、給出什麼結果。這份目錄後來被看作 API 文件的前身 — 副程式庫要有用,別人得先找得到、看得懂怎麼用。
Claude Code 的 skill 是一個資料夾,專案共用放 .claude/skills/,個人用放 ~/.claude/skills/。核心是一份 SKILL.md:開頭寫描述,後面寫步驟,資料夾名稱就是指令名,旁邊還能放腳本和參考資料。
叫出 skill 有兩種方式。一種是直接打斜線加上 skill 名稱。另一種是讓 agent 自己判斷:它看到任務跟某個 skill 的描述相符,就會主動載入。像 commit 這種有副作用的流程,官方文件建議在設定裡關掉自動觸發,只留手動叫。
開頭那段五步驟的指令,包成叫 commit-check 的 skill 之後,就只剩 /commit-check 一行。agent 每次拿到的都是同一份指示,漏步的機會少很多,要調整也只改一個地方。
這裡跟副程式有一個差別。副程式同樣的輸入一定得到同樣的結果;skill 是給模型讀的指示,跑兩次細節仍可能不同。需要每次都一模一樣的步驟,就寫成腳本放在 skill 裡讓 agent 執行 — 這部分才真的跟當年的紙帶一樣。
專案的 CLAUDE.md 每次對話一開始就載入。寫在裡面的東西,不管這次用不用得到,都占著 context — 也就是 agent 這次對話能看到的全部內容。把十個流程全塞進去,Day 1 講的注意力稀釋和 Day 10 講的 context 上限會一起發生。
skill 則是分兩段載入。平常 context 裡只有每個 skill 的名稱和一段簡短描述,完整步驟等到真的要用才讀進來。
每次都該知道的原則放 CLAUDE.md,特定時候才需要的流程做成 skill。
EDSAC 的副程式庫好用,靠的是那份目錄。skill 的描述就是它的介面。
差別在於讀的人。EDSAC 的目錄是寫給使用者看的,使用者自己決定什麼時候用哪一支。skill 的描述主要是寫給模型看的,而且模型會根據描述自己決定要不要叫它。這是副程式庫沒有的新東西,也是描述得寫精準的原因。
描述寫「處理 git 相關事務」,範圍太廣,agent 會在不該用時叫它,該用時又沒想到它。描述寫「commit 前跑測試、檢查 diff、產生 conventional commit message」,觸發的時機就清楚得多。
描述也不是免費的。開放自動觸發的 skill,描述每一輪對話都會帶著,裝得越多,固定成本越高。Claude Code 的 /usage 會列出各個 plugin 的 skill 描述每輪大約占多少 token,裝太多用不到的 skill,這裡看得出來。
skill 一旦被叫出,完整內容就會留在 context 裡,不是用完就消失,要等對話被壓縮才會截短。流程越長,後面每輪都背著。
開頭那段指令其實不必等到第十次。同一段話貼到第三次,步驟大致固定,做完也確認得了結果對不對,就值得存起來。
步驟每次都要依情況大改的,不適合。那是需要判斷的工作,寫成固定流程反而會讓 agent 在不適用的情境硬套。
EDSAC 團隊想解決的,是同一件事不要每次重寫。他們的答案是寫好一次、附上說明、收進櫃子。
Skills 把同一個答案用在 AI 的工作流程上。以前收在櫃子裡的是算三角函數的紙帶,現在收在資料夾裡的是「commit 前要做哪些檢查」。不同的是,以前翻目錄的是人,現在翻目錄的是模型 — 所以那份說明,比以前更要寫清楚。
延伸閱讀