7b83465acf
leo 2026-07-17 拍板:任何時刻每 repo 只有一份現行 SDD(status: active)。 - 新增 3-specs/SDD-LIFECYCLE.md:frontmatter 狀態標記(active|draft|paused|closed + superseded_by)+五條鐵律(單一活性/禁 CC 自建 SDD/規格變更走 pending-changes.md 等 confirm/開新 SDD 先逐條搬舊任務才准寫 code/session 開始回報三數字) - 新增 3-specs/pending-changes.md:規格變更緩衝區骨架(待裁決/已裁決留底) - TEMPLATE-sdd/design.md 掛 frontmatter(status: draft),移除舊「> 狀態」blockquote - sdd-guard.sh 升級:active>1 不論寫什麼檔一律 exit 2;寫 code 檔需恰好 1 份 active;老 repo 無 frontmatter 退回舊行為(統計排除 archive/ 與 TEMPLATE) - 新增 template/scripts/sdd-active-check.sh:獨立檢查,pre-commit/CI 可掛,>1 exit 1 - /sdd-check 加生命週期段(五鐵律摘要+三數字回報格式);template/CLAUDE.md 鐵律指向 SDD-LIFECYCLE.md - install.sh/update.sh 鋪齊新檔(issue #13 教訓:update 不補新檔=結構斷層) - 三情境 pipe-test 真跑通過:兩份 active 擋(2)/一份放行(0)/零 frontmatter 退舊行為(0) - 版號:遠端已被 issue #5(vault 萃取)佔走 1.14.0,本案改記 1.15.0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
76 lines
2.7 KiB
Markdown
76 lines
2.7 KiB
Markdown
# /sdd-check — 確認當前任務有沒有對應 SDD
|
||
|
||
動手前執行。確保 CC 有全局觀,不會在沒有設計文件的情況下猛衝。
|
||
|
||
---
|
||
|
||
## 生命週期(單一活性鐵律,全文見 `system-dev/docs/3-specs/SDD-LIFECYCLE.md`)
|
||
|
||
五條鐵律摘要:
|
||
|
||
1. **單一活性**:任何時刻整個 repo 只允許一份 `status: active` 的 SDD;所有開發任務對應它的 tasks,找不到對應任務 → 停下來問,不准直接做。
|
||
2. **禁止自行建立 SDD**:澄清問題→回答不動文件;任務層變更→更新現行 SDD 的 tasks(標日期與原因);規格層變更→走第 3 條。
|
||
3. **規格變更只有一條路**:change proposal 寫進 `system-dev/docs/3-specs/pending-changes.md`(摘要+觸發原因+影響分析),然後**停止**等使用者「confirm」。
|
||
4. **開新 SDD 的唯一時機**:使用者 confirm 後——先把舊 SDD 未完成任務逐條搬入新 SDD(做完前不准寫 code)→ 舊的標 `closed` + `superseded_by` 移入 `archive/` → 新 SDD changelog 記繼承 → 列搬移/作廢清單請最終確認。
|
||
5. **每次 session 開始**先讀 active SDD 與 pending-changes.md,回報三個數字:
|
||
|
||
```
|
||
📐 現行規格:〈SDD 名稱〉
|
||
📋 未完成任務:N
|
||
⚖️ 待裁決 proposal:M
|
||
```
|
||
|
||
若出現**兩份 active=規則已被違反,當場糾正**(收斂到一份,其餘 paused/closed)。
|
||
|
||
---
|
||
|
||
## 執行流程
|
||
|
||
### 第一步:理解任務
|
||
|
||
確認使用者要做什麼:
|
||
- 涉及哪個子系統?
|
||
- 是新功能還是修改現有功能?
|
||
- 影響範圍?
|
||
|
||
### 第二步:尋找對應 SDD
|
||
|
||
在 `system-dev/docs/3-specs/` 下尋找對應的子系統目錄,確認有沒有:
|
||
- `design.md`(設計文件)
|
||
- `tasks.md`(任務清單)
|
||
|
||
### 第三步:根據結果回應
|
||
|
||
**情況 A:找到對應 SDD**
|
||
```
|
||
✅ 找到 SDD:system-dev/docs/3-specs/[子系統]/
|
||
📋 design.md:[確認]
|
||
📋 tasks.md:[確認,列出相關 task]
|
||
🎯 對應 task:[編號和描述]
|
||
繼續嗎?
|
||
```
|
||
|
||
**情況 B:找不到 SDD,任務明確**
|
||
```
|
||
⚠️ 找不到對應 SDD
|
||
任務:[描述]
|
||
建議在 system-dev/docs/3-specs/[建議子系統名]/ 建立 SDD
|
||
|
||
要我幫你起草 design.md 嗎?(需要你確認後才動手)
|
||
```
|
||
|
||
**情況 C:找不到 SDD,任務模糊**
|
||
```
|
||
⚠️ 找不到對應 SDD,而且任務範圍不夠清楚
|
||
請先回答:
|
||
1. 這個功能屬於哪個子系統?
|
||
2. 完成的標準是什麼?
|
||
3. 有沒有不能動的邊界?
|
||
```
|
||
|
||
### 注意
|
||
|
||
- 找不到 SDD **不等於可以直接動手**
|
||
- 小修改(修 bug、改文字)可以豁免,但要明確說「這是小修改,範圍是 X」
|
||
- 新功能、架構變動、跨模組的修改 → 一定要有 SDD
|