From a27959123270d6603154333f239bec8a3f1b46a5 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 17 Sep 2026 18:21:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(sdlc-fix):=20=E9=9C=80=E6=B1=82=E8=AD=B0?= =?UTF-8?q?=E9=A1=8C=E6=9C=AC=E4=BE=86=E5=B0=B1=E6=B2=92=E6=9C=89=E6=9C=AA?= =?UTF-8?q?=E6=95=B4=E4=BD=B5=E7=95=99=E8=A8=80=E6=99=82=E7=85=A7=E6=A8=A3?= =?UTF-8?q?=E5=88=97=E5=87=BA=E5=B7=A5=E4=BD=9C=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原本只寫「未處理數大於 0 就先整併」,零則的入口從沒明寫,讀起來會變成 「沒有留言要處理就到此為止」,正好與「無未整併留言時要列出工作包」相反。 另把交棒的另一端補在 sdlc-feat 的輸入上——機制只有一邊寫得出來, 另一邊就只是散文承諾。 Co-Authored-By: Claude Opus 5 (1M context) --- prompts/sdlc-feat.md | 3 ++- prompts/sdlc-fix.md | 8 +++++--- test/sdlc-feat-assets.test.js | 8 ++++++++ test/sdlc-fix-assets.test.js | 10 ++++++++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/prompts/sdlc-feat.md b/prompts/sdlc-feat.md index 721b350..8083f5c 100644 --- a/prompts/sdlc-feat.md +++ b/prompts/sdlc-feat.md @@ -16,7 +16,8 @@ description: 僅由 /sdlc-feat 指令叫用。領取一顆工作包、備妥工 ## 輸入 -一個工作包議題編號。 +一個工作包議題編號。使用者直接給的,或 `/sdlc-fix` 收到議題後交棒過來的—— +兩者一樣處理,**不要因為是交棒來的就要求他再打一次指令**。 ## 第一段:領取與開工準備 diff --git a/prompts/sdlc-fix.md b/prompts/sdlc-fix.md index bf8563a..157a6b6 100644 --- a/prompts/sdlc-fix.md +++ b/prompts/sdlc-fix.md @@ -66,12 +66,14 @@ node scripts/wp-extract.js --repo --index <編號> 1. 第 1 步的 `未處理數` 大於 0 就**走 `/sdlc-sync` 的流程**(`prompts/sdlc-sync.md`), 做完**自動接回這裡**——重新讀一次留言,拿到的才是剛整併過的狀態。同樣不要求使用者重打指令。 + **`未處理數` 本來就是 0 的話這一步整個跳過**,直接往下選工作包:沒有留言要整併不表示 + 沒有事要做,使用者是帶著「要改什麼」來的。 2. 整併(與使用者選擇略過)之後還剩下的留言裡,挑出**確實要求改程式碼**的那幾則。判斷 依據與第 5 步的「必改/建議」同一套:指出了錯誤、遺漏、會出事的寫法,或明確要求改動。 -3. **一則都沒有就到此為止。** 把整併了幾則、略過幾則講清楚,說明沒有要改碼的意見, - 然後停下來。先 sync 一次通常就清空了,選工作包那一步根本不會觸發。 +3. **本來有留言,而整併完一則要改碼的都不剩,就到此為止。** 把整併了幾則、略過幾則講清楚, + 說明沒有要改碼的意見,然後停下來。先 sync 一次通常就清空了,選工作包那一步根本不會觸發。 -確實有要改的,就列出這顆需求底下的工作包,讓使用者挑一顆: +確實有要改的(或一開始就沒有留言要整併),就列出這顆需求底下的工作包,讓使用者挑一顆: ``` node scripts/wp-list.js --repo --requirement <需求議題編號> diff --git a/test/sdlc-feat-assets.test.js b/test/sdlc-feat-assets.test.js index 1908876..85ff915 100644 --- a/test/sdlc-feat-assets.test.js +++ b/test/sdlc-feat-assets.test.js @@ -14,6 +14,14 @@ const phase1 = prompt.slice(prompt.indexOf('## 第一段'), prompt.indexOf('## const phase2 = prompt.slice(prompt.indexOf('## 第二段'), prompt.indexOf('## 第三段')); const phase3 = prompt.slice(prompt.indexOf('## 第三段'), prompt.indexOf('## 邊界')); + +test('輸入收得下 /sdlc-fix 交棒過來的編號,且不要求使用者重打指令', () => { + const 輸入 = prompt.slice(prompt.indexOf('## 輸入'), prompt.indexOf('## 第一段')); + assert.match(輸入, /sdlc-fix/); + assert.match(輸入, /交棒/); + assert.match(輸入, /不要因為是交棒來的就要求他再打一次指令/); +}); + test('正本平台中立,description 前綴正確', () => { assertNeutralPrompt(prompt, 'sdlc-feat'); }); diff --git a/test/sdlc-fix-assets.test.js b/test/sdlc-fix-assets.test.js index ec93c03..0a57ef0 100644 --- a/test/sdlc-fix-assets.test.js +++ b/test/sdlc-fix-assets.test.js @@ -89,11 +89,17 @@ test('需求議題先讓 /sdlc-sync 整併,再談改不改碼', () => { ); }); -test('整併完沒有改碼要求就停下來,不硬找一顆工作包來改', () => { - assert.match(需求路, /一則都沒有就到此為止/); +test('本來有留言、整併完沒有改碼要求就停下來,不硬找一顆工作包來改', () => { + assert.match(需求路, /本來有留言,而整併完一則要改碼的都不剩,就到此為止/); assert.match(需求路, /根本不會觸發/); }); +test('本來就沒有未整併留言時照樣列出工作包,不當成沒事可做', () => { + assert.match(需求路, /`未處理數` 本來就是 0/); + assert.match(需求路, /這一步整個跳過/); + assert.match(需求路, /或一開始就沒有留言要整併/, '列清單的入口要同時收得下這一種'); +}); + test('有改碼要求時列出底下的工作包讓使用者挑,不報錯把事推回去', () => { assert.match(需求路, /wp-list\.js/); assert.match(需求路, /--requirement/);