Files
system-dev-template/docs/wishlist.md
T
Leo 39783cccc8 feat: 接關 hook + SDD 強制 hook(實作 wishlist 兩項)
§1 接關機制(雙保險):
- session-start-recall.sh:SessionStart 自動注入 status 重點 + 快照核實提醒
- /wiki-recall:fallback 命令,hook 失效時手動接關

§2 軟規範 → 硬攔截:
- sdd-guard.sh:動 code 檔但無 SDD → exit 2 擋(/sdd-check 自動版)
- pre-write-guard.sh:專案自訂禁令骨架(預設停用)
- settings.json:掛 SessionStart + PreToolUse

配套:install.sh 下載 hooks/settings(settings 比照 CLAUDE.md 不覆蓋);
README/CLAUDE.md 補文件 + 誠實限制聲明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 16:04:58 +08:00

49 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Wishlist
system-dev-template 自身要補的功能。
---
## 1. 接關機制(開新對話自動恢復進度)
**問題**template 現在「接關」只靠 `CLAUDE.md` 的軟提醒「Wiki 讀取順序:status.md = session 開始第一件事」,期待 CC 開新對話自己去讀。但軟提醒擋不住「CC 讀了 CLAUDE.md 卻沒真讀 status」,使用者也無法確定它讀了沒。
**設計:雙保險(hook 自動 + 命令兜底)**
| 機制 | 角色 | 何時 |
|---|---|---|
| **SessionStart hook** | 主路徑:開 session 自動注入 status 重點,不靠 CC 自覺、不用人說 | 每次 startup/resume/clear 自動 |
| **`/wiki-recall` 命令** | Fallback:hook 沒啟動時手動接關;要完整脈絡時也用 | 使用者見沒自動接關 → 打一句 |
主路徑不靠人;命令應對 hook 失效。沒有 fallbackhook 一失效就靜默回到「全靠 CC 自覺」(正是要解決的問題)。
**要做**
- `template/.claude/hooks/session-start-recall.sh`:注入 status.md 的「正在做 / 下次第一件事」。
- `template/.claude/settings.json`:掛 `SessionStart`matcher `startup|resume|clear`)。
- `template/.claude/commands/wiki-recall.md`:手動接關命令(讀 status → decisions → wishlist → HANDOFF)。
- `install.sh`:偵測已有 settings.json 則不覆蓋,提示手動加 SessionStart(比照 CLAUDE.md 處理)。
**命名閉環**init(建) → update(存,session 末) ↔ recall(接,session 初) → capture(隨時存結論)。
**配套鐵律(寫進 wiki-recall + 文件)**status/wiki 是 **point-in-time 快照非即時狀態**。接關=讀快照 **+ 核實快照**,不盲信。實例:某專案 status 曾寫「待 A 收尾 X」,實際 X 早完成,照舊資訊會催已完成的事。
---
## 2. Hook 強制機制(軟規範 → 硬攔截)
**問題**template 現在**完全沒有 hook**,所有規範(SDD 協議、wiki 維護)都是 CLAUDE.md 的軟提醒。CC 想跳過就跳過,沒有東西抓得到。
**對照 arcrun(值得 template 借鑑)**arcrun 有一套 hook 把鐵律變強制——
- `pre-write-guard.sh` / `pre-bash-guard.sh`:違反禁令(沒讀 SDD 就動 code、寫違規檔)→ **exit 2 直接 block**CC 跳不過。
- `session-start-load-sdd.sh`:開 session 強制注入進度 + 禁令。
- 效果:「想跳過 SDD 協議就會被抓到」,不靠自覺。
**要做(template 標配一個最小 hook 集)**
- **SDD 協議 hook**:動 code.ts/.go/...)前若沒對應 SDD / 沒在回覆宣告已讀 → 擋或警告。對應 template 既有的 `/sdd-check`,但從「命令要人打」升級成「hook 自動攔」。
- **SessionStart hook**:見上 §1(接關 + 注入規範)。
- **可選 pre-write guard**:讓使用者自訂專案禁令(如本 InkStoneCo 的「KBDB 禁動表」hook),template 給範本骨架。
**設計原則(抄 arcrun 的誠實限制)**:hook 擋語法層明顯違規,擋不了藏在 helper 裡的繞道 → **文檔(mindset+ hook(底線)都不可省**,絕不在文件聲稱「不可能繞過」。hook 的價值是「想跳過會被抓到」+ 留痕可審,不是技術防偽。
**為何重要**template 的兩大賣點(SDD 強制先設計 + wiki 持久記憶)現在都只是「請你照做」。加 hook 才從「建議」變「機制」——這正是 template 區別於「就是寫幾個 markdown」的關鍵。