From a45e981c95a7eccad9ef784f9d7940b4f02852bb Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 17 Sep 2026 07:39:48 +0000 Subject: [PATCH] =?UTF-8?q?feat(=E6=B5=81=E7=A8=8B=E6=AD=A3=E6=9C=AC):=20s?= =?UTF-8?q?dlc-feat=20=E5=8A=A0=E5=85=A5=E7=AC=AC=E4=BA=8C=E6=AE=B5?= =?UTF-8?q?=E3=80=8C=E9=80=90=E9=A0=85=E5=AF=A6=E4=BD=9C=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一項一項做完並即時勾選,讓議題頁的進度條隨時反映真實狀態。 過程不打斷:二十項待辦不按二十次同意,只印進度;也不為了勾選留留言——勾選改的是 body, 進度條自己會動,逐項留言會把議題洗版,reviewer 得從一堆「已完成第 N 項」裡找真正的討論。 真正該停下來問的只有三種,列出來了。 規則正本指名讀取,不在這裡複述——抄過來就會有兩份各自演化的規則。 中斷後重跑從 Gitea 的勾選狀態接續,不看任何本機檔案;重複勾選是安靜的 no-op, 所以不確定某一項有沒有勾到時直接再勾一次即可,不必先查。 Co-Authored-By: Claude Opus 5 (1M context) --- prompts/sdlc-feat.md | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/prompts/sdlc-feat.md b/prompts/sdlc-feat.md index 66938c3..d01d4fe 100644 --- a/prompts/sdlc-feat.md +++ b/prompts/sdlc-feat.md @@ -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 --index <編號> \ + --tick '' --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、不停錶**——那是第三段的事。 +- 不把實作規範或註解格式寫進目標專案的任何檔案。 +- 不改與待辦無關的程式碼;順手想修的東西記下來說出來,不要摸進這次的變更裡。 +- 不為了勾選在議題上留留言。 - 不自行建立標籤。缺「進行中」標籤時中止並請使用者建立。 - 不代替使用者停錶,也不在被鎖擋下時繞過去。 - 不替使用者決定來源分支。