feat(一包一 PR): 每個工作包完成即 commit、push、PR 回來源分支

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-25 11:58:11 +08:00
co-authored by Claude Opus 5
parent 160e93f65a
commit 878d34b177
3 changed files with 23 additions and 18 deletions
+8 -5
View File
@@ -25,13 +25,13 @@ SDLC 各階段引用的參考分支與來源分支,**一律指遠端的 `origi
| 階段 | 要確認的分支 | 確認時機 |
| --- | --- | --- |
| `analyze` | **來源分支**——哪條分支的程式碼算現況 | 讀任何程式碼之前 |
| `implement` | **目標分支**——這批工作要合併進哪條分支 | 寫任何檔案之前 |
| `implement` | **來源分支**——worktree 的基準,也是每個工作包的 PR 目標 | 寫任何檔案之前 |
確認方式:
1. 先 `git fetch --prune origin`,再把事實攤開:目前分支、工作區是否乾淨、遠端有哪些分支(`git branch -r`,不看本地)、下節判定出的遠端預設分支。
2. 依 `jsc-ask:ask` 的決策樹詢問,每個選項都要標明影響範圍。分析錯分支會產出對不上程式碼的工作包;目標分支錯了則 PR 會開到錯的地方。
3. 把確認結果寫進產出(分析頁的來源分支欄、PR 的目標分支),後續步驟一律沿用同一個答案,不再自行改判。
2. 依 `jsc-ask:ask` 的決策樹詢問,每個選項都要標明影響範圍。分析錯分支會產出對不上程式碼的工作包;來源分支錯了則 worktree 從錯的起點長出來,PR 也會開到錯的地方。
3. 把確認結果寫進產出(分析頁的來源分支欄),後續步驟一律沿用同一個答案,不再自行改判。
4. 使用者沒回答就**不預設** `develop`/`master`;預設值只在使用者明確同意後才成立。
## 判定遠端預設分支
@@ -52,8 +52,11 @@ SDLC 各階段引用的參考分支與來源分支,**一律指遠端的 `origi
## 實作階段的分支選擇
- 判斷同名與否,兩邊都用遠端的分支名(`origin/{來源分支}` 與 `origin/{目標分支}`)。
- **只有來源分支與目標分支同名時才開新的工作分支**:同名就不可在該分支上直接 commit,改從已更新到最新的目標分支建立新工作分支,後續操作都以新分支為準。不同名就在目前分支處理。
實作在 worktree 內進行,工作分支從 `origin/{來源分支}` 長出來,做完再 PR 回同一條來源分支。
- **一個工作包一個 PR**,目標一律是 `origin/{來源分支}`。不把兩個完成的工作包併成一個 PR,也不把完成的工作包留到下一包一起送——拆工作包的意義就是各自能獨立審查。
- 呼叫 `jsc-git:pr` 時**必須明確帶入來源分支當 base**。該 skill 在沒收到 base 時會自行退回 `develop`,那會讓單一工作包越過它所屬的功能分支直接進 develop。
- 來源分支整條後續要進 `develop` 時,那是另一個獨立的 PR,不在本階段範圍。
- 新分支名稱要可讀且不覆蓋既有分支;本地或遠端已存在同名分支時,換一個時間戳或短 hash。
- 切換或建立分支屬不可忽略的狀態變更,要在輸出中講清楚原因與結果分支名稱。