# 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 ← 掛 hooks(install.sh 依模組組裝) │ ├── skills/ │ └── llm-wiki/ ← 複製到 Legacy-Workspace/.claude/skills/ │ ├── scripts/ │ └── install.sh ← 已有專案接入腳本 │ └── docs/ ← 這個 repo 自己的說明 ├── why.md ← 設計理念 └── wishlist.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** | 行內標記 ``…`` | 檔案內某段不編入 | 協議(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`,知識不再消失