feat: install.sh 模組化安裝(--wiki / --sdd / --all)

有時只需要 wiki 不需要 SDD。不 fork,改用同一入口模組選單:
- --wiki / --sdd / --all(預設),無參數 + 有 tty 則互動詢問
- curl|bash 無 tty 安全預設 --all
- settings.json 的 hooks 依選的模組自動組裝(不再下載單一靜態檔)

不 fork 的理由:使用者多半非工程背景,一個入口最友善;維護成本不翻倍。
模組邊界先劃好,未來功能達 3+ 個再演進成「模板組合器」。

同步 wishlist:§1 接關 / §2 hook 標記已完成(commit 39783cc),
新增 §3 機敏防護 / §4 模組化安裝並標完成。README 補三層防護與模組安裝說明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-20 12:45:53 +08:00
parent 29e3636bd2
commit 9dcbe38021
3 changed files with 248 additions and 77 deletions
+41 -2
View File
@@ -4,7 +4,7 @@ system-dev-template 自身要補的功能。
---
## 1. 接關機制(開新對話自動恢復進度)
## 1. 接關機制(開新對話自動恢復進度) ✅ 已完成(commit 39783cc
**問題**template 現在「接關」只靠 `CLAUDE.md` 的軟提醒「Wiki 讀取順序:status.md = session 開始第一件事」,期待 CC 開新對話自己去讀。但軟提醒擋不住「CC 讀了 CLAUDE.md 卻沒真讀 status」,使用者也無法確定它讀了沒。
@@ -29,7 +29,7 @@ system-dev-template 自身要補的功能。
---
## 2. Hook 強制機制(軟規範 → 硬攔截)
## 2. Hook 強制機制(軟規範 → 硬攔截) ✅ 已完成(commit 39783cc
**問題**template 現在**完全沒有 hook**,所有規範(SDD 協議、wiki 維護)都是 CLAUDE.md 的軟提醒。CC 想跳過就跳過,沒有東西抓得到。
@@ -46,3 +46,42 @@ system-dev-template 自身要補的功能。
**設計原則(抄 arcrun 的誠實限制)**:hook 擋語法層明顯違規,擋不了藏在 helper 裡的繞道 → **文檔(mindset+ hook(底線)都不可省**,絕不在文件聲稱「不可能繞過」。hook 的價值是「想跳過會被抓到」+ 留痕可審,不是技術防偽。
**為何重要**template 的兩大賣點(SDD 強制先設計 + wiki 持久記憶)現在都只是「請你照做」。加 hook 才從「建議」變「機制」——這正是 template 區別於「就是寫幾個 markdown」的關鍵。
---
## 3. Wiki 機敏內容防護(不想被編入的內容) ✅ 已完成
**問題**:wiki 是會被 CC 反覆讀取、可能進版控的記憶空間。有些內容不該被編入——密碼、API 金鑰、私鑰、個資。只靠口頭約束太危險:密碼/個資外洩是**不可逆**後果,光提醒 CC「別記機敏資訊」擋不住意外。
**設計:三層防護(協議 + 機械底線)**
| 層 | 機制 | 擋什麼 | 性質 |
|---|---|---|---|
| **L1** | `.claude/wiki/.wikiignore`glob,像 .gitignore | 整個機敏檔不編入 | 協議(CC 遵守) |
| **L2** | 行內標記 `<!-- wiki:ignore -->``<!-- wiki:end -->` | 檔案內某段不編入 | 協議(CC 遵守) |
| **L3** | `wiki-secret-scan.sh` hookPreToolUse | 機敏值真寫進 `.claude/wiki/` → exit 2 擋 | **硬攔截(機械偵測)** |
L1/L2 是使用者主動標記,L3 是自動兜底——前兩層漏掉時,寫進 wiki 那一刻 regex 攔下(密碼賦值、PEM 私鑰、AWS/GitHub/Slack/Google/Stripe 金鑰、JWT、連線字串帳密、台灣身分證、信用卡號)。
**已做**
- `template/.claude/wiki/.wikiignore`L1 範本(預設排除 `.env`/`*.pem`/`*secret*` 等)。
- `template/.claude/hooks/wiki-secret-scan.sh`L3 hook,只掃 `.claude/wiki/**` 寫入,`wiki-secret-ok` 行尾標記可豁免誤判。
- `settings.json`PreToolUse(Write|Edit) 加掛。
- `wiki-init.md` / `wiki-capture.md` / `SKILL.md`:寫入 L1+L2 協議。
**設計原則(抄 §2 的誠實限制)**L1/L2 靠 CC 自律、L3 靠 regex 特徵(有偽陽/偽陰)。這是「減少**意外**外洩」的機制,不是保險箱——真正的密鑰本就不該進版控。絕不聲稱「不可能繞過」。
---
## 4. 模組化安裝(Wiki / SDD 可分開裝) ✅ 已完成
**問題**:有時只需要 wiki,不需要 SDD(反之亦然)。原 install.sh 一律全裝。
**決策(為何不 fork**:使用者多半非工程背景,最怕「我要去哪個 repo」。一個入口 + 模組選單最友善。fork 成獨立 repo 維護成本翻倍、現在只有 2 個功能略嫌早。等未來功能多到 3+ 個再演進成「模板組合器」(meta-template 把子模板拉進來)——模組邊界先在 install.sh 劃好,當作拆分前置。
**已做**
- `install.sh` 支援 `--wiki` / `--sdd` / `--all`(預設),無參數 + 有 tty 則互動詢問 1/2/3`curl|bash` 無 tty 安全預設 `--all`
- settings.json 的 hooks 依選的模組**自動組裝**(不再下載單一靜態檔)。
- README 補上模組安裝與 `.wikiignore` 三層防護說明。
**未來演進**:功能達 3+ 個 → 拆成獨立模板 repo,本 repo 轉「組合器」把它們拉進來。