feat(流程正本): sdlc-feat 加入第二段「逐項實作」
一項一項做完並即時勾選,讓議題頁的進度條隨時反映真實狀態。 過程不打斷:二十項待辦不按二十次同意,只印進度;也不為了勾選留留言——勾選改的是 body, 進度條自己會動,逐項留言會把議題洗版,reviewer 得從一堆「已完成第 N 項」裡找真正的討論。 真正該停下來問的只有三種,列出來了。 規則正本指名讀取,不在這裡複述——抄過來就會有兩份各自演化的規則。 中斷後重跑從 Gitea 的勾選狀態接續,不看任何本機檔案;重複勾選是安靜的 no-op, 所以不確定某一項有沒有勾到時直接再勾一次即可,不必先查。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,8 @@ description: 僅由 /sdlc-feat 指令叫用。領取一顆工作包、起錶、
|
|||||||
第一段**領取與開工準備**:把工作包安全地認領下來,開始計時,備妥開工的分支。
|
第一段**領取與開工準備**:把工作包安全地認領下來,開始計時,備妥開工的分支。
|
||||||
這一段不改任何一行程式碼——它只負責讓後面的實作有個乾淨的起點。
|
這一段不改任何一行程式碼——它只負責讓後面的實作有個乾淨的起點。
|
||||||
|
|
||||||
|
第二段**逐項實作**:一項一項把待辦做完並即時勾選,讓議題頁的進度條隨時反映真實狀態。
|
||||||
|
|
||||||
這份檔案是流程正本。各平台的轉接檔只是指回這裡,不要把規則抄過去。
|
這份檔案是流程正本。各平台的轉接檔只是指回這裡,不要把規則抄過去。
|
||||||
|
|
||||||
## 輸入
|
## 輸入
|
||||||
@@ -107,9 +109,87 @@ node scripts/branch-prep.js --path <目標專案路徑> --source <來源分支>
|
|||||||
- 來源分支、新分支名、分支是新建還是接上既有
|
- 來源分支、新分支名、分支是新建還是接上既有
|
||||||
- 未處理留言數與未關閉的先決議題(若有)
|
- 未處理留言數與未關閉的先決議題(若有)
|
||||||
|
|
||||||
|
## 第二段:逐項實作
|
||||||
|
|
||||||
|
### 7. 認出語言,讀規則正本
|
||||||
|
|
||||||
|
改任何一個檔案之前,先依專案檔認出這是什麼語言,再讀兩份規則正本:
|
||||||
|
|
||||||
|
- `references/coding-standards.md` — 分層判定與各層要寫什麼註解
|
||||||
|
- `references/comment-styles.md` — 該語言的註解格式
|
||||||
|
|
||||||
|
規則以那兩份為準,這裡不複述——抄過來就會有兩份各自演化的規則。只強調兩件最常被跳過的:
|
||||||
|
**認不出語言就停下來問、不要猜**,以及**規則只存在於本 plugin 裡**,
|
||||||
|
不寫進目標專案的任何檔案。
|
||||||
|
|
||||||
|
屬性的資料範例**優先從 MCP 取得**;取不到就以邏輯推理,並照 `comment-styles.md` 的寫法
|
||||||
|
在註解裡註明「由邏輯推理、未經驗證」。這句註明不能省,否則後面的人會照著沒對過的格式寫解析。
|
||||||
|
|
||||||
|
### 8. 一項一項做
|
||||||
|
|
||||||
|
依 `wp-extract` 給的 `待辦` 順序做。每一項的做法:
|
||||||
|
|
||||||
|
1. 讀它底下的 `驗收`——那是「這一項做到什麼程度算完成」的定義。
|
||||||
|
2. 實作,照 `coding-standards.md` 的分層與註解規範。
|
||||||
|
3. 這一項的驗收都成立了,才算完成。
|
||||||
|
|
||||||
|
**過程不打斷。** 不要每做完一項就問一次「可以繼續嗎」——二十項待辦不該按二十次同意。
|
||||||
|
只印進度,例如 `[3/12] 已完成:解析九個段落`。
|
||||||
|
|
||||||
|
真正需要停下來問的只有三種:語言認不出來、待辦的意思有歧義、做下去會超出工作包的
|
||||||
|
`範圍邊界`。除此之外一路做完。
|
||||||
|
|
||||||
|
### 9. 做完一項就勾一項
|
||||||
|
|
||||||
|
```
|
||||||
|
node scripts/issue-update.js --repo <owner/name> --index <編號> \
|
||||||
|
--tick '<wp-extract 給的那一行 raw>' --section 待辦
|
||||||
|
```
|
||||||
|
|
||||||
|
`--tick` 收的是抽取契約交出的**那一整行 `raw`**,逐字包含縮排;它只把那一行的方框換成
|
||||||
|
已勾,議題其餘部分一字不動。待辦與它底下的驗收各自是一行,各勾各的。
|
||||||
|
|
||||||
|
`--section` 是那一項所在的段落:勾 `待辦` 裡的項目就給 `待辦`,勾 `整體驗收` 就給
|
||||||
|
`整體驗收`。**一定要給**——兩個段落常有一模一樣的一句話,不給就分不出要勾哪一個。
|
||||||
|
|
||||||
|
**不要自己拼那一行**,一律用 `wp-extract` 給的 `raw`。四種擋下來的情況都照實說,不要繞過去:
|
||||||
|
|
||||||
|
| 錯誤碼 | 意思 | 下一步 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `RAW_NOT_FOUND` | 議題上找不到這一行 | 手上的抽取結果過期了(議題被改過);重跑 `wp-extract` 再試 |
|
||||||
|
| `RAW_AMBIGUOUS` | 這一行在同一個段落裡出現不只一次 | 分不出要勾哪個;請使用者把重複的那幾項改寫成看得出差別的說法 |
|
||||||
|
| `NOT_A_CHECKBOX` | 議題上那一項沒有方框 | 請使用者把它補成 `- [ ] …`;**不要自己改寫議題** |
|
||||||
|
| `SECTION_NOT_FOUND` | `--section` 的段落不存在 | 對照 `wp-extract` 的輸出確認段落名稱 |
|
||||||
|
|
||||||
|
**不要為了勾選在議題上留留言。** 勾選改的是 body,進度條自己會動;逐項留言會把議題洗版,
|
||||||
|
reviewer 得從一堆「已完成第 N 項」裡找真正的討論。
|
||||||
|
|
||||||
|
### 10. 中斷後重跑
|
||||||
|
|
||||||
|
進度完全由 Gitea 上的勾選狀態推導,**不看任何本機檔案**。重跑這一段時:
|
||||||
|
|
||||||
|
1. 重新 `wp-extract`,看 `待辦` 裡哪些 `done` 已經是 `true`。
|
||||||
|
2. 從第一個還沒勾的接下去做。
|
||||||
|
3. 已經勾過的項目再 `--tick` 一次是安靜的 no-op(回傳 `已經勾過: true`,不發 PATCH),
|
||||||
|
所以不確定某一項有沒有勾到時,直接再勾一次即可,不必先查。
|
||||||
|
|
||||||
|
### 11. 回報
|
||||||
|
|
||||||
|
全部待辦完成後印一份小結,不寫回議題:
|
||||||
|
|
||||||
|
- 幾項待辦、幾項驗收,全部勾選完成
|
||||||
|
- 改了哪些檔案,各屬於哪一層
|
||||||
|
- 有沒有待辦因為 `範圍邊界` 而被刻意不做
|
||||||
|
- 語言與註解格式用的是哪一份對照
|
||||||
|
- **哪些資料範例是推理來的**(MCP 取不到的那些),讓 reviewer 知道哪幾個格式還沒人對過
|
||||||
|
|
||||||
## 邊界
|
## 邊界
|
||||||
|
|
||||||
- 第一段**不改任何一行程式碼**、不勾待辦、不提交、不開 PR——那些是後面幾段的事。
|
- 第一段**不改任何一行程式碼**、不勾待辦、不提交、不開 PR——那些是後面幾段的事。
|
||||||
|
- 第二段只實作與勾選。**不提交、不開 PR、不停錶**——那是第三段的事。
|
||||||
|
- 不把實作規範或註解格式寫進目標專案的任何檔案。
|
||||||
|
- 不改與待辦無關的程式碼;順手想修的東西記下來說出來,不要摸進這次的變更裡。
|
||||||
|
- 不為了勾選在議題上留留言。
|
||||||
- 不自行建立標籤。缺「進行中」標籤時中止並請使用者建立。
|
- 不自行建立標籤。缺「進行中」標籤時中止並請使用者建立。
|
||||||
- 不代替使用者停錶,也不在被鎖擋下時繞過去。
|
- 不代替使用者停錶,也不在被鎖擋下時繞過去。
|
||||||
- 不替使用者決定來源分支。
|
- 不替使用者決定來源分支。
|
||||||
|
|||||||
Reference in New Issue
Block a user