feat/overview-artifact/main
master
規劃與分析各產出一份可直接投影的 HTML 總覽網頁,網址寫回議題並就地更新。
#1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組
#10 — 產生圖解版總覽網頁並寫回議題
templates/overview-artifact.html
scripts/issue-update.js
--overview-url
prompts/sdlc-plan.md
prompts/sdlc-analyze.md
AGENTS.md
<style>
<section>
upsertLineInSection
非技術的利害關係人原本得讀完技術細節才知道一件事在做什麼。有一份可投影的網頁之後,會議上點開就能談。
新增。issue-update 多一個旗標,既有行為不變。
issue-update
ℹ tests 226 ℹ pass 226 ℹ fail 0
八顆 commit 逐一在獨立的 git worktree 裡跑測試,每一顆都是綠的(200/200/200/207/224/224/224/226)。
⚠ 目前 npm test 在共用工作目錄裡是紅的,因為另一個 session 正在同一個 clone 裡做 #9(wp-extract),那部分尚未完成。本 PR 的測試以 node --test $(ls test/*.test.js | grep -v wp-extract) 執行,且發佈內容只含本 PR 自己的檔案。
npm test
wp-extract
node --test $(ls test/*.test.js | grep -v wp-extract)
手動驗證:把模板填成一份完整 HTML,確認無殘留佔位;再把 {{工作包全景}} 填空字串,確認整段消失而其餘段落完好。issue-update --overview-url --dry-run 對真實議題 #1 試跑,確認寫回的那一行格式正確且未寫入。
{{工作包全景}}
issue-update --overview-url --dry-run
<script>
PRIVACY_NOTE
main()
Cannot access 'PRIVACY_NOTE' before initialization
sdlc-plan
驗收標準第 1 條寫「sdlc-plan 與 sdlc-analyze 各產出一份 HTML 總覽」,第 3 條寫「重跑時原地更新同一連結,不新增第二個」。
我的實作是:兩個指令各自產生自己的網頁,但都寫回同一顆需求議題的同一行,所以跑完分析之後,議題上只看得到分析版的連結(分析版是規劃版的超集,多了工作包全景)。第 3 條的「不新增第二個」支持這個做法。
若你要的是「議題上同時掛兩個連結、規劃版與分析版各一」,那要改成兩個不同的前綴,我可以改。
🤖 Generated with Claude Code
給非技術的利害關係人在會議上直接投影用:一句話總覽、目標、流程圖,分析階段再多 一張工作包全景。 樣式全部集中在單一 style 區塊,內文只放佔位——改版面不必動內容,換內容不必碰樣式。 深色模式跟隨系統,手機寬度另有斷點,投影與傳連結兩種場合都看得清楚。 工作包全景是整段佔位、獨佔一行,規劃階段填空字串時整段會乾淨消失;若把它包在寫死 的 section 裡,規劃版就會留下一個空標題。 mermaid 由 CDN 載入並實際渲染,而不是把原始碼丟給讀者看;代價是離線開啟時圖不會出來。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
沿用既有的 upsertLineInSection:連結以固定前綴獨佔總覽段落裡的一行,重跑時就地 更新,不會長出第二個連結;議題原本的 markdown 白話總覽一字不動——網頁是補充, 不是取代。 連結旁自動附上「此連結預設為私有,組織外無法開啟」。讀到的人多半會想轉寄給組織外 的人,這句話寫在議題上比寫在文件裡有用。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
規劃版填總覽、目標、流程圖,工作包全景填空字串;分析版沿用同一份模板,額外把 工作包的相依與截止日畫成 graph TD 的全景圖。節點一樣以 12 個為上限,超過就只畫 相依鏈最長路徑上的那幾顆。 兩份都寫回同一顆需求議題的同一行,所以分析版會取代規劃版——同一顆需求議題只掛 一個總覽網址,這是預期行為,正本裡寫明免得被當成 bug。 另外交代填模板時流程圖不帶圍欄:圍欄是議題 markdown 用的,填進 HTML 會多出一段 沒有意義的字。 Closes #10 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
模板的檢查重點是「樣式與內容分離」與「全景段落能整段消失」,兩者壞掉時規劃版會 留下空標題或行內樣式散落各處,肉眼不容易發現。 順帶把 work-package 測試的 phase2 切法收斂到第三段之前——原本切到檔尾,第三段 新增的編號清單會混進段落順序的斷言裡。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
overview-artifact.html 是一份要在瀏覽器裡開的網頁,需要一段把 mermaid 畫出來的 腳本。與其默默違反自己寫的規則,不如把例外與理由寫進慣例表——下一個人才知道 這是想過的決定,而不是漏網的。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
把上一次寫回的整行一起複製貼上是很常見的手誤,放行的話那句提醒會在議題上出現 兩次。 順帶修掉一個自己造出來的錯:PRIVACY_NOTE 原本宣告在 main() 之後,而新的檢查在 main() 的同步段就要用到它,於是每次執行都以「Cannot access 'PRIVACY_NOTE' before initialization」收場。常數移到 main() 之前。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- mermaid 那條原本只比對「有出現 mermaid 字樣」,而 CDN 網址裡就有這個字, 整段渲染腳本刪掉也照樣通過。改成驗 mermaid.initialize 真的被呼叫。 - 新增一條守住例外的範圍:模板裡只能有那一段腳本,且不得夾帶網路或儲存操作。 - sdlc-plan 的七條斷言原本拿整份正本比對,任何一處撞到就算過。改成只看第 6 步, 與 sdlc-analyze 那邊的做法一致。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
摘要
規劃與分析各產出一份可直接投影的 HTML 總覽網頁,網址寫回議題並就地更新。
需求議題
#1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組
工作包議題
#10 — 產生圖解版總覽網頁並寫回議題
變更內容
templates/overview-artifact.html— 總覽網頁模板。scripts/issue-update.js— 新增--overview-url,把網址寫回議題總覽段落。prompts/sdlc-plan.md、prompts/sdlc-analyze.md— 產生與寫回的步驟。AGENTS.md— 寫明這份模板是「模板不含邏輯」的唯一例外。設計重點
<style>,內文只有佔位;深色模式跟隨系統,手機寬度另有斷點。改版面不必動內容,換內容不必碰樣式。<section>裡,規劃版就會留下一個空標題。upsertLineInSection。 連結以固定前綴獨佔總覽段落裡的一行,重跑就地更新,議題原本的 markdown 白話總覽一字不動——網頁是補充,不是取代。解決的問題
非技術的利害關係人原本得讀完技術細節才知道一件事在做什麼。有一份可投影的網頁之後,會議上點開就能談。
影響的功能
新增。
issue-update多一個旗標,既有行為不變。測試結果
八顆 commit 逐一在獨立的 git worktree 裡跑測試,每一顆都是綠的(200/200/200/207/224/224/224/226)。
手動驗證:把模板填成一份完整 HTML,確認無殘留佔位;再把
{{工作包全景}}填空字串,確認整段消失而其餘段落完好。issue-update --overview-url --dry-run對真實議題 #1 試跑,確認寫回的那一行格式正確且未寫入。Code review 修掉的四處
<script>違反了「模板不含邏輯」。 這份是要在瀏覽器裡開的網頁,畫 mermaid 需要那段腳本。與其默默違規,把例外與理由寫進AGENTS.md的慣例表,並加一條測試守住例外的範圍(只能有那一段腳本,且不得夾帶網路或儲存操作)。PRIVACY_NOTE宣告在main()之後,而新的檢查在main()的同步段就要用到它,每次執行都以Cannot access 'PRIVACY_NOTE' before initialization收場。常數已移到main()之前。sdlc-plan的七條拿整份正本比對,任何一處撞到就算過。都已改成驗得出來的。一個要你裁決的讀法
驗收標準第 1 條寫「sdlc-plan 與 sdlc-analyze 各產出一份 HTML 總覽」,第 3 條寫「重跑時原地更新同一連結,不新增第二個」。
我的實作是:兩個指令各自產生自己的網頁,但都寫回同一顆需求議題的同一行,所以跑完分析之後,議題上只看得到分析版的連結(分析版是規劃版的超集,多了工作包全景)。第 3 條的「不新增第二個」支持這個做法。
若你要的是「議題上同時掛兩個連結、規劃版與分析版各一」,那要改成兩個不同的前綴,我可以改。
🤖 Generated with Claude Code