feat: 安裝結構收進 system-dev/(不污染用戶根目錄)+ 舊版自動遷移 + bump 1.9.0
工具產物原散在用戶根目錄(docs 七層、scripts),又把 wiki/VERSION 寄生在 CC 原生
.claude/ 裡,用戶分不清哪個 docs 是工具的。這版徹底收斂:除 .claude/(settings/
commands/hooks)與 CLAUDE.md 留根,工具所有資料收進 system-dev/。
對應 SDD: system-dev/docs/3-specs/install-layout/(內部記錄,依原則不推)。
- 新結構 system-dev/{VERSION,wiki/,docs/,scripts/};.claude/ 只剩 CC 機制檔
- wiki 改寫產物落點正式化:install 建 system-dev/wiki/cards/(.gitkeep)
- docs 雙語義拆開:工具文件→system-dev/docs/;用戶 raw source 維持原處只讀
- scripts 一開始就裝進 system-dev/scripts/
- 舊版自動遷移雙保險:update.sh 冪等搬移(wiki 含 .git、docs 白名單)
+ session-start hook 偵測舊結構未遷移時提示(low-code 用戶兜底)
- wiki-secret-scan 觸發路徑改 system-dev/wiki/**(否則新結構防護失效)
- 全套路徑引用同步:CLAUDE/SKILL/wiki-*/sdd-*/hooks/INDEX/README(中英)
- 沙盒驗證:遷移含 .git commit 一致、冪等、用戶自填 docs 保留;全 bash -n 過
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,7 +13,7 @@ CC 是個優秀的工程師,但不是個好的專案經理。它會猛衝完
|
||||
| 系統 | 解決什麼 | 核心機制 |
|
||||
|------|---------|---------|
|
||||
| **SDD 系統** | 全局觀、先想再做 | 動手前必須有 design.md + tasks.md |
|
||||
| **LLM Wiki** | 記憶累積、文件有序 | 雙空間:原始文件(人寫)+ .claude/wiki/(AI 整理)|
|
||||
| **LLM Wiki** | 記憶累積、文件有序 | 雙空間:原始文件(人寫)+ system-dev/wiki/(AI 整理)|
|
||||
|
||||
> **不只程式碼專案、不只 Claude Code。** LLM Wiki 現在也認得 **Logseq / Obsidian vault**——
|
||||
> 安裝時自動偵測你在哪種資料夾,把對應的「原始文件來源」寫進 `CLAUDE.md`,整理 wiki 時只讀那裡、
|
||||
@@ -91,7 +91,7 @@ curl -sSL https://raw.githubusercontent.com/uncle6me-web/system-dev-template/mai
|
||||
| 🔒 **完全不碰**你的內容與設定 | `wiki/status.md`、`mistakes.md`、`decisions-summary.md`、`.wikiignore`、`settings.json`、`CLAUDE.md` |
|
||||
|
||||
> **為什麼第一次要用 curl?** 舊版本機還沒有 `update.sh`,所以第一次得從遠端抓它下來跑。
|
||||
> 跑完它會把自己也裝進 `scripts/update.sh`,**之後更新直接跑** `bash scripts/update.sh` 就好,不用再 curl。
|
||||
> 跑完它會把自己也裝進 `system-dev/scripts/update.sh`,**之後更新直接跑** `bash system-dev/scripts/update.sh` 就好,不用再 curl。
|
||||
|
||||
更新只會動「已安裝的模組」(裝了 wiki 就更新 wiki,裝了 SDD 就更新 SDD),偵測自動完成。
|
||||
若 `settings.json` 缺了新版才有的 hook,它不會幫你改設定,但會在結尾**列出來提醒你手動補**(不擅自動你的設定)。
|
||||
@@ -112,7 +112,7 @@ LLM Wiki 原本假設「原始文件放在 `docs/`」,但 Logseq、Obsidian
|
||||
| 都沒有 | 一般專案 | `docs/`(維持原行為)|
|
||||
|
||||
寫進 `CLAUDE.md` 的這段宣告是**給 AI 讀的指令**——它告訴整理者「原始文件在哪、整理 wiki 時只讀那裡」,
|
||||
而且對 vault **明令不得搬動、改名、重新分類 `.md`**,整理結果一律只寫進 `.claude/wiki/`。
|
||||
而且對 vault **明令不得搬動、改名、重新分類 `.md`**,整理結果一律只寫進 `system-dev/wiki/`。
|
||||
這樣面對筆記 vault 也不會破壞它原本的結構,筆記不會變得不可讀。
|
||||
|
||||
> **已有 `CLAUDE.md`?** 一律不覆蓋(維持「已有的不動」原則),改在安裝結尾**列出該補的宣告**提醒你手動貼。
|
||||
@@ -122,44 +122,54 @@ LLM Wiki 原本假設「原始文件放在 `docs/`」,但 Logseq、Obsidian
|
||||
## Cowork 也能整理 wiki
|
||||
|
||||
整理 wiki 的人不再只有終端機裡的 Claude Code——**claude.ai 的 Cowork** 也可以。
|
||||
`docs/SKILL.md` 提供一個給 Cowork 用的 skill(`wiki-cowork-scan`),它與 CC 的 `/wiki-init`、`/wiki-capture`
|
||||
`system-dev/docs/SKILL.md` 提供一個給 Cowork 用的 skill(`wiki-cowork-scan`),它與 CC 的 `/wiki-init`、`/wiki-capture`
|
||||
**共用同一套規則**:
|
||||
|
||||
- 掃描 `~/Documents` 下所有裝了 system-dev-template(含 `.claude/wiki/`)的資料夾
|
||||
- 掃描 `~/Documents` 下所有裝了 system-dev-template(含 `system-dev/wiki/`)的資料夾
|
||||
- 用**和 `install.sh` 一致的偵測邏輯**判斷每個資料夾是一般專案 / Logseq / Obsidian
|
||||
- 只讀 raw source、只往 `.claude/wiki/` 增補(不覆蓋、不刪除),**絕不動** raw source、`CLAUDE.md`、`logseq/`、`.obsidian/`、`assets/`
|
||||
- 只讀 raw source、只往 `system-dev/wiki/` 增補(不覆蓋、不刪除),**絕不動** raw source、`CLAUDE.md`、`logseq/`、`.obsidian/`、`assets/`
|
||||
|
||||
**CC 與 Cowork 輸出格式相同**,任一方整理過的內容,另一方看到就跳過或補充,不重複也不覆蓋。
|
||||
適合掛在 Cowork 的定期排程,讓本機所有 wiki 自動保持更新。
|
||||
|
||||
> 想用:把 `docs/SKILL.md` 提供給你的 Cowork 當 skill 參考,再對它說「整理 wiki」即可。
|
||||
> 想用:把 `system-dev/docs/SKILL.md` 提供給你的 Cowork 當 skill 參考,再對它說「整理 wiki」即可。
|
||||
|
||||
---
|
||||
|
||||
## 目錄說明
|
||||
## 安裝後,你的專案會長這樣
|
||||
|
||||
> 設計原則:除了 CC 原生的 `.claude/` 和 `CLAUDE.md` 留在根目錄,**工具的所有資料都收進 `system-dev/`**,
|
||||
> 不在你的根目錄撒一堆資料夾、也不跟你自己的 `docs/` 混在一起。
|
||||
|
||||
```
|
||||
你的專案/
|
||||
├── CLAUDE.md ← 導航牌(CC 開 session 自動讀,必須留根)
|
||||
├── .claude/ ← 只放 CC 原生機制檔
|
||||
│ ├── settings.json ← 掛 hooks
|
||||
│ ├── commands/ ← Slash commands(/wiki-init 等)
|
||||
│ └── hooks/ ← 硬攔截(接關 + SDD 協議 + wiki 機敏掃描)
|
||||
├── system-dev/ ← 工具所有資料收這裡
|
||||
│ ├── VERSION
|
||||
│ ├── wiki/ ← CC 的記憶空間(含 cards/ 改寫產物落點、.wikiignore)
|
||||
│ ├── docs/ ← 文件結構(六層分類 + SKILL.md)
|
||||
│ └── scripts/ ← install.sh / update.sh(裝好就在這,下次直接跑)
|
||||
└── (你自己的檔案 / docs / 筆記 vault —— 工具只讀、不搬、不碰)
|
||||
```
|
||||
|
||||
## 這個 repo 自己的目錄
|
||||
|
||||
```
|
||||
system-dev-template/
|
||||
├── template/ ← 複製到新專案的骨架
|
||||
│ ├── CLAUDE.md ← 填空版導航牌
|
||||
│ ├── docs/ ← 文件結構(六層分類)
|
||||
│ └── .claude/
|
||||
│ ├── wiki/ ← CC 的記憶空間(含 .wikiignore 機敏排除)
|
||||
│ ├── commands/ ← Slash commands
|
||||
│ ├── hooks/ ← 硬攔截(接關 + SDD 協議 + wiki 機敏掃描)
|
||||
│ └── settings.json ← 掛 hooks(install.sh 依模組組裝)
|
||||
│
|
||||
├── template/ ← 發佈源:install/update 從這裡抓檔
|
||||
│ ├── CLAUDE.md ← 填空版導航牌(落到用戶根目錄)
|
||||
│ ├── .claude/ ← commands/ + hooks/(落到用戶 .claude/)
|
||||
│ └── system-dev/ ← VERSION + wiki/ + docs/(落到用戶 system-dev/)
|
||||
├── skills/
|
||||
│ └── llm-wiki/ ← 複製到 Legacy-Workspace/.claude/skills/
|
||||
│
|
||||
│ └── llm-wiki/ ← 複製到 Legacy-Workspace/.claude/skills/
|
||||
├── scripts/
|
||||
│ ├── install.sh ← 已有專案接入腳本
|
||||
│ └── update.sh ← 舊版一鍵更新(只換模板,不碰你的資料)
|
||||
│
|
||||
└── docs/ ← 這個 repo 自己的說明
|
||||
├── why.md ← 設計理念
|
||||
├── wishlist.md ← 待補功能與已完成記錄
|
||||
└── SKILL.md ← 給 claude.ai Cowork 的 wiki 整理 skill(wiki-cowork-scan)
|
||||
│ ├── install.sh ← 已有專案接入腳本
|
||||
│ └── update.sh ← 舊版一鍵更新(含舊結構自動遷移)
|
||||
└── docs/ ← 這個 repo 自己的說明(why.md、wishlist.md…)
|
||||
```
|
||||
|
||||
---
|
||||
@@ -189,7 +199,7 @@ system-dev-template/
|
||||
|------|------|
|
||||
| `session-start-recall.sh` | 開 session 自動注入 status 重點,不靠 CC 自覺 |
|
||||
| `sdd-guard.sh` | 動 code 檔但沒有任何 SDD → 攔(exit 2),對應 `/sdd-check` 的自動版 |
|
||||
| `wiki-secret-scan.sh` | 機敏值要寫進 `.claude/wiki/` → 攔(exit 2),密碼/金鑰/個資的機械底線 |
|
||||
| `wiki-secret-scan.sh` | 機敏值要寫進 `system-dev/wiki/` → 攔(exit 2),密碼/金鑰/個資的機械底線 |
|
||||
| `pre-write-guard.sh` | 專案自訂禁令範本骨架(預設停用,填 pattern 才生效)|
|
||||
|
||||
---
|
||||
@@ -200,7 +210,7 @@ system-dev-template/
|
||||
|
||||
| 層 | 機制 | 擋什麼 | 性質 |
|
||||
|----|------|--------|------|
|
||||
| **L1** | `.claude/wiki/.wikiignore`(glob) | 整個機敏檔不編入 | 協議(CC 遵守)|
|
||||
| **L1** | `system-dev/wiki/.wikiignore`(glob) | 整個機敏檔不編入 | 協議(CC 遵守)|
|
||||
| **L2** | 行內標記 `<!-- wiki:ignore -->`…`<!-- wiki:end -->` | 檔案內某段不編入 | 協議(CC 遵守)|
|
||||
| **L3** | `wiki-secret-scan.sh` hook | 機敏值真的寫進 wiki → exit 2 擋 | **硬攔截(機械偵測)**|
|
||||
|
||||
|
||||
Reference in New Issue
Block a user