我的 Claude Code 自訂指令-並行開發工作樹

我的 Claude Code 自訂指令-並行開發工作樹

文章目錄(11 節)

先說結論

  • 使用 Git Worktree 功能,就像是直接複製好幾個專案同時並行開發,最後可以使用 git 合併回去
  • 我設計了四個指令:createstatusdonecleanup
  • 配合 Claude Code Max 20x 方案(或其他家類似方案),同時開 5 個工作樹,token 燒好燒滿

Token 大殺器

傳統開發的流程

以前在開發,因為我沒有什麼和人協同開發的經驗,因此版控我也很少開分支,差不多就是做一個功能就 commit。切來切去對我來說反而多此一舉。

AI 開發的新思維

有了 AI 後就不一樣了。大部分程式都不是由我寫了,我主要工作變成規劃和分派 AI 執行任務。

以效率上來說,讓孜孜不倦的 AI 不停的幫我們開發是最理想的。就好像公司有好幾個工程師,大家都 clone repo 下來,你做 A 功能我做 B 功能那樣。

大概可以這樣理解:把工程師換成 AI,把 clone repo 這個動作換成 git worktree。

什麼是 Worktree?

每個工作樹都是獨立的資料夾,但共用同一個 .git。你可以看下面圖片的資料夾結構就可以理解了。

工作樹的資料夾結構:各自獨立,共用同一個 .git
工作樹的資料夾結構:各自獨立,共用同一個 .git

工作樹的數量沒有限制,你可以一直建立新的工作樹。因為他等於複製了你的專案,會有限制的是你硬碟的大小。工作樹就是你的專案的分靈體。

獨立目錄互不影響

物理上他就是一個獨立的目錄,只是受到 Git 追蹤。所以你可以直接切到該目錄用 Claude Code 等工具開始開發,或用 IDE 開啟工作樹的目錄開始開發。我習慣分功能開工作樹,或是要寫測試時我也會獨立開工作樹。

愛到才知影痛

AI 開發有一個問題會讓人類很痛苦,就是鬼打牆。

以前:跟他拼了

不管是拼命下新的 Prompt,希望 AI 突然開竅;或者下去一行一行看他寫的 code,通常不是一個低級錯誤,就是一大坨大便要重來。最終是可以搞定,但命也去了半條。

現在:砍掉重練

我通常會讓 AI 針對鬼打牆的狀態分析出原因,經過我判斷八九不離十後,我就把這個工作樹刪掉,重新建立新的工作樹,更新需求文件,加上剛剛分析的原因,然後要他開始重做。

他也不會抱怨又要重做。而我更像一個奴隸主,不是一個負責擦屁股的救火隊。

甘特圖

從圖來看,很明顯就可以看出並行開發的效率。

傳統模式與工作樹模式的時間對照 傳統模式一次只能做一件事,四項工作從九點依序排到十六點。工作樹模式四項工作重疊並行,同樣在十六點前全部完成,但每一項的實際進行時間更長。 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 傳統模式 一次一件 Feature A 09:00–11:00 修 Bug B 11:00–12:00 繼續 Feature A 效能優化 C 工作樹 四棵並行 工作樹 1 Feature A 09:00–14:00 工作樹 2 Bug B 11:00–12:00 工作樹 3 優化 C 工作樹 4 實驗 D

左右滑動看完整內容

傳統模式一次只能做一件事;工作樹模式四項並行,同樣在下班前收工

工作樹指令

自從有了 AI 後,懶惰的個性被徹底開發了。什麼工作樹的 git 指令要我背,那是不可能的。因此我也讓 AI 規劃出了四個工作樹專用的指令。

/worktree-create

建立工作樹

/worktree-done

合併完成的工作樹

/worktree-cleanup

刪除工作樹

/worktree-status

目前有幾個工作樹

其中建立工作樹的指令有一個小巧思:指令後面可以接著用簡單文字輸入你要建立這個工作樹的目的,系統會幫你用英文命名工作樹名稱和 git 分支。指令我放在文章最後面。

/worktree-done 合併工作樹指令的流程

這個流程圖說明合併工作樹執行的過程,可以感覺一下工作樹的 flow。

worktree-done 指令的執行流程 執行指令後掃描所有工作樹並判斷有沒有完成的工作。沒有就結束;有就列出可合併清單、由你選一個,接著合併到 main、推送到遠端、清理工作樹,最後完成。 列出所有工作樹 確認後執行 /worktree-done 掃描所有工作樹 有完成的工作? 沒有可合併項目直接結束 列出可合併清單分支、訊息、時間 合併、推送、清理合併到 main → 推送遠端→ 刪除工作樹與分支 完成

左右滑動看完整內容

合併指令的執行流程:判斷有沒有可合併的工作,有才往下走

工作樹生命週期

我讓 AI 幫我畫整個生命週期,我覺得不明覺厲就放上來了,可以幫助你了解整個 flow。

工作樹的生命週期 從 worktree-create 建立後進入開發中,可因其他優先任務暫停、之後回來繼續;功能完成後用 worktree-done 合併回 main 並自動清理;實驗失敗則直接廢棄、用 worktree-cleanup 移除。兩條路徑都收斂到結束。 /worktree-create 開始開發 其他優先任務 回來繼續 持續開發 功能完成 實驗失敗 /worktree-done /worktree-cleanup 自動清理 建立 開發中獨立的 session 暫停 完成 廢棄 合併回 main 每個工作樹都是 獨立的 Claude Code session, 砍掉重來不影響 其他工作樹

左右滑動看完整內容

工作樹的完整生命週期:成功合併與實驗廢棄兩條路徑

累積經驗建立自己的工作流

工作樹概念很簡單,AI 出現後可以玩出各種花來。

UI 設計

可以開好幾個工作樹,提供不同的設計風格文件,讓 AI 同時開發,完成後再來挑你喜歡的,或繼續迭代。

實驗新技術

開工作樹測試,不行就直接砍掉,不會污染主分支。

重構或測試

重構可以和新功能並行開發,不用等重構完才能加新功能。有問題也可以儘早發現問題,砍掉工作樹沒有負擔,再重新優化重構。

注意事項

工作樹不是完整複製你的專案

他只會複製有被 Git 版控的檔案。因此像是環境變數 .env 這類型沒有進版控的檔案,新的工作樹目錄是不會有的。因此如果要在工作樹目錄執行,需要把這些重要檔案複製過去。

硬碟空間

每個工作樹都是獨立的檔案。如果你的專案很大,記得定期清理。

我的 Prompt

我的做法是把指令放在使用者根目錄下。

/Users/jackle/ └── .claude/ └── commands/ └── WorkTree/ ├── cleanup.md ├── create.md ├── done.md └── status.md

這樣在 Claude Code 打斜線就能有這樣的指令出現,美觀又直覺。

在 Claude Code 打斜線後出現的自訂指令
在 Claude Code 打斜線後出現的自訂指令
create 建立工作樹,會依你的描述自動命名分支

---
argument-hint: [name]
description: 建立新的 Git Worktree
---

根據提供的參數建立新的 Git Worktree 並自動設置完整的開發環境。

參數格式:`/worktree-create [name]`

- `name`: 功能描述或識別名稱(必填,AI 會根據內容自動判斷類型)

範例:

- `/worktree-create user-dashboard` → feature/user-dashboard
- `/worktree-create 使用者儀表板重設計` → feature/user-dashboard-redesign
- `/worktree-create 權限驗證修復` → hotfix/permission-validation-fix(AI 識別為修復)
- `/worktree-create 快取效能實驗` → experiment/cache-performance-experiment(AI 識別為實驗)
- `/worktree-create story-1.5-工作流程整合` → story/1.5-workflow-integration(AI 識別為 story)

執行以下流程:

1. **解析和優化參數**- 分析 `$ARGUMENTS` 中的 name 參數
   - AI 根據內容自動判斷 type:
     - 包含「修復」、「fix」、「bug」→ hotfix
     - 包含「實驗」、「experiment」、「測試」→ experiment
     - 包含「story」或數字編號 → story
     - 其他情況 → feature(預設)
   - **中文名稱轉換**:將中文任務名稱轉換為符合命名規則的英文
     - 翻譯成語意清晰的英文詞彙
     - 轉換為 kebab-case 格式(小寫,用連字號分隔)
     - 避免縮寫,確保名稱具描述性
     - 遵循 Fortuna 專案的 4-6 個單字命名原則

2. **建立工作樹**- 使用 `git worktree add` 建立新工作樹
   - 確保目錄和分支命名符合專案規範

3. **完成報告**:
   提供建立結果摘要,包含:
   - 原始中文輸入 → 轉換後的英文名稱
   - 工作樹路徑和分支名稱
   - 下一步指令

執行所有必要的安全檢查,確保不與現有工作樹衝突。
done 合併工作樹分支到 main 並清理
---
description: 合併工作樹分支並清理
---

在主目錄中執行工作樹完成流程:選擇並合併工作樹分支到 main,然後清理工作樹。

**使用場景**:當您完成工作樹開發,希望將變更合併回主分支並清理工作樹時使用。

執行以下流程:

1. **環境檢查**- 確認當前位於主目錄中
   - 檢查主目錄工作狀態是否清潔
   - 驗證當前在 main 分支

2. **工作樹分支發現**- 自動掃描所有現有的工作樹
   - 檢查每個工作樹分支的狀態和提交情況
   - 顯示可合併的工作樹分支清單(已有提交且工作目錄清潔)

3. **互動式分支選擇**- 顯示工作樹分支清單,包含:
     - 分支名稱
     - 最新提交訊息
     - 提交時間
     - 工作樹路徑
   - 讓使用者選擇要合併的分支
   - 確認合併操作

4. **執行合併流程**- 更新 main 分支:`git pull origin main`
   - 合併選定的工作樹分支到 main
   - 推送合併後的 main 分支到遠端
   - 執行品質檢查確保合併成功

5. **自動清理**- 刪除已合併的工作樹目錄
   - 移除本地工作樹分支
   - 顯示清理結果

**使用範例**```bash
# 在主目錄執行
cd /Users/jackle/workspace/Fortuna
/WorkTree:done
```

**輸出範例**```
🔍 發現以下可合併的工作樹分支:

1. feature/strapi-typescript-optimization
   📂 /Users/jackle/workspace/fortuna-feature-strapi-typescript-optimization
   📝 feat(typescript): 完成 Strapi v5 TypeScript 優化與 shared 套件建置修正
   🕐 2025-07-19 23:41:23

2. feature/workflow-engine-v2
   📂 /Users/jackle/workspace/fortuna-feature-workflow-engine-v2
   📝 feat(workflow): 實作工作流程執行引擎核心功能
   🕐 2025-07-19 15:30:45

請選擇要合併的分支 (輸入數字):
```

**安全檢查**- 僅顯示已提交且工作目錄清潔的工作樹
- 合併前確認 main 分支是最新狀態
- 提供合併預覽和確認步驟

**注意事項**- 必須在主目錄中執行(非工作樹目錄)
- 確保選定的工作樹已完成所有開發工作
- 合併後工作樹將被自動清理,請確保重要變更已提交
cleanup 智能分析並安全清理工作樹

---
argument-hint: [target]
description: 智能清理 Git Worktrees
---

智能分析並安全清理 Git Worktrees,確保不遺失重要開發成果。

參數格式:`/worktree-cleanup [target]`

- `target`: 清理目標(可選)
  - 特定工作樹名稱(如 "story-1.4", "feature-dashboard")
  - 不指定:顯示清理建議但不執行

範例:

- `/worktree-cleanup` (僅分析和建議)
- `/worktree-cleanup story-1.4` (清理特定工作樹)

執行以下清理流程:

1. **解析清理參數**- 分析 `$ARGUMENTS` 中指定的清理目標
   - 根據參數選擇適當的清理策略
   - 設定安全檢查級別

2. **清理候選識別**:
   根據參數執行不同的檢測策略:

   - **特定工作樹**:直接清理指定目標

3. **風險評估**- 標記需要使用者確認的工作樹
   - 檢查有未推送提交的完成分支

4. **執行清理**- 提供清理建議和互動選項
   - 自動備份重要資訊到 `.claude/worktree-backups/`
   - 使用 `git worktree remove` 安全移除
   - 清理對應的本地分支

5. **清理報告**- 顯示清理統計(移除數量、釋放空間)
   - 提供備份位置和恢復指令
   - 分析清理後的效能提升

為每個清理候選提供詳細的影響分析和恢復選項。
status 列出所有工作樹狀態

---
description: 列出所有 Git Worktrees 狀態
---

列出目前所有的 Git Worktrees 狀態。

執行 `git worktree list` 並格式化輸出:

- 顯示工作樹路徑
- 顯示對應分支
- 顯示當前所在工作樹(標記 \*)

我的 Claude Code 自訂指令-視覺化

留言