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

3.4 KiB
Raw Blame History

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:掛 SessionStartmatcher 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 直接 blockCC 跳不過。
  • 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」的關鍵。