Files
system-dev-template/README.md
T
Leo 9dcbe38021 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>
2026-06-20 12:45:53 +08:00

151 lines
6.3 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.
# system-dev-template
> 讓 Claude Code 從「猛衝的工程師」變成「有紀律的工程師」。
CC 是個優秀的工程師,但不是個好的專案經理。它會猛衝完成工作——小專案很好,大專案就會:
- **改這個壞那個**:沒有全局觀,缺乏 SDD 約束
- **文件越來越亂**:內建記憶不可靠,知識隨對話消失,而且它很喜歡寫文件,寫完也不去讀,還到處亂擺
這個模板用兩套系統解決這兩個問題:
| 系統 | 解決什麼 | 核心機制 |
|------|---------|---------|
| **SDD 系統** | 全局觀、先想再做 | 動手前必須有 design.md + tasks.md |
| **LLM Wiki** | 記憶累積、文件有序 | 雙空間:docs/(人寫)+ .claude/wiki/CC 整理)|
- SDD:它已經很流行了,做的最徹底應該是 Amazon Kiro,但台灣無法付費,用這個方式比什麼酷炫方式更好,逼 CC 不隨心所欲。
- LLM Wiki:是大神 Kaparthy 提出的最新的 RAG 想法,這是 Pre-compile 做法,比你公司買的用嵌入模型切割文件成向量的方式更優更不瑣碎,而且執行容易。
---
## 兩種使用方式
### 方式一:新專案
```bash
git clone https://github.com/uncle6me-web/system-dev-template
cp -r system-dev-template/template/. your-new-project/
cd your-new-project
```
然後在 CC 對話裡:
```
/wiki-init
```
### 方式二:已有專案(接入)
```bash
cd your-existing-project
curl -sSL https://raw.githubusercontent.com/uncle6me-web/system-dev-template/main/scripts/install.sh | bash
```
腳本只建立缺少的東西,**已有的檔案一律不動**。
**只要一塊?** 兩套系統可分開裝(有時只需要 wiki,不需要 SDD):
```bash
# 下載後帶參數執行
curl -sSL .../install.sh -o install.sh && bash install.sh --wiki # 只裝 LLM Wiki
bash install.sh --sdd # 只裝 SDD
bash install.sh --all # 兩個都裝(預設)
```
在終端機直接跑(有 tty)時,不帶參數會**互動詢問**要裝哪一塊——對非工程背景的使用者最友善。`curl | bash` 無 tty 則安全預設為 `--all`。settings.json 的 hooks 會依選的模組自動組裝。
安裝完後在 CC 對話裡:
```
/wiki-init
```
CC 會掃描現有文件、建立 wiki、整理 docs 結構。
> CC 很喜歡寫文件到處亂擺,隨着專案越大、越久,檔案夾會很亂,但又不敢亂搬,現在把檔案夾如規範寫好,可以一次幫你把文件歸檔。
> LLM Wiki 不會動你的原檔案,但它會另外建立 Wiki,修正你的入口就是 CLAUDE.md,所以它雖然搬動,你的文件不會消失。
---
## 目錄說明
```
system-dev-template/
├── template/ ← 複製到新專案的骨架
│ ├── CLAUDE.md ← 填空版導航牌
│ ├── docs/ ← 文件結構(六層分類)
│ └── .claude/
│ ├── wiki/ ← CC 的記憶空間(含 .wikiignore 機敏排除)
│ ├── commands/ ← Slash commands
│ ├── hooks/ ← 硬攔截(接關 + SDD 協議 + wiki 機敏掃描)
│ └── settings.json ← 掛 hooksinstall.sh 依模組組裝)
├── skills/
│ └── llm-wiki/ ← 複製到 Legacy-Workspace/.claude/skills/
├── scripts/
│ └── install.sh ← 已有專案接入腳本
└── docs/ ← 這個 repo 自己的說明
├── why.md ← 設計理念
├── sdd-guide.md ← SDD 系統說明
└── llm-wiki-guide.md
```
---
## Slash Commands
安裝後在任何 CC 對話裡可用:
| Command | 做什麼 |
|---------|-------|
| `/wiki-init` | 初始化 wiki(新專案或接入已有專案)|
| `/wiki-recall` | Session 開始,手動接關(hook 沒啟動時的 fallback|
| `/wiki-capture` | 把這次對話的結論存進 wiki |
| `/wiki-update` | Session 結束,更新 status.md |
| `/sdd-check` | 確認當前任務有沒有對應 SDD |
命名閉環:init(建) → update(存,session 末) ↔ recall(接,session 初) → capture(隨時存結論)。
---
## Hooks(軟規範 → 硬攔截)
規範不再只是 CLAUDE.md 的軟提醒,加了底線機制:
| Hook | 角色 |
|------|------|
| `session-start-recall.sh` | 開 session 自動注入 status 重點,不靠 CC 自覺 |
| `sdd-guard.sh` | 動 code 檔但沒有任何 SDD → 攔(exit 2),對應 `/sdd-check` 的自動版 |
| `wiki-secret-scan.sh` | 機敏值要寫進 `.claude/wiki/` → 攔(exit 2),密碼/金鑰/個資的機械底線 |
| `pre-write-guard.sh` | 專案自訂禁令範本骨架(預設停用,填 pattern 才生效)|
---
## Wiki 機敏防護(不想被編入的內容)
`.gitignore` 一樣,讓不想進 wiki 的內容(密碼、金鑰、個資)不被編入。三層:
| 層 | 機制 | 擋什麼 | 性質 |
|----|------|--------|------|
| **L1** | `.claude/wiki/.wikiignore`(glob) | 整個機敏檔不編入 | 協議(CC 遵守)|
| **L2** | 行內標記 `<!-- wiki:ignore -->``<!-- wiki:end -->` | 檔案內某段不編入 | 協議(CC 遵守)|
| **L3** | `wiki-secret-scan.sh` hook | 機敏值真的寫進 wiki → exit 2 擋 | **硬攔截(機械偵測)**|
L1/L2 是你主動標記,L3 是自動兜底——萬一 CC 漏掉前兩層,寫進 wiki 的那一刻會被 regex 攔下(密碼賦值、PEM 私鑰、AWS/GitHub/Slack 金鑰、JWT、連線字串帳密、身分證、信用卡號)。
> 誠實限制:L1/L2 靠 CC 自律,L3 靠特徵比對(有偽陽/偽陰)。
> 這是「減少**意外**外洩」的機制,不是保險箱——真正的密鑰本就不該進版控。
> 誤判時:該行尾加 `wiki-secret-ok` 放行;整檔機敏則加進 `.wikiignore`。
> 誠實限制:hook 擋語法層明顯違規(直接寫檔),擋不了藏在 helper / bash 裡的繞道。
> 價值是「想跳過會被抓到 + 留痕可審」,不是技術防偽——文檔(mindset)+ hook(底線)都不可省。
---
## 設計原則
- **疊加,不覆蓋**:接入已有專案時,現有規範保留,wiki 系統疊上去
- **結構即協議**:CC 和你共用同一個分類系統,不需要每次解釋
- **CLAUDE.md 不增長**:超過 100 行就是架構出問題,不是加更多內容
- **對話結論當場 capture**:討論完用 `/wiki-capture`,知識不再消失