Files
system-dev-template/skills/llm-wiki/SKILL.md
T
Leo 29e3636bd2 feat: wiki 機敏防護三層(.wikiignore + 行內標記 + secret-scan hook)
不想被編入 wiki 的內容(密碼/金鑰/個資)三層防線:
- L1 .wikiignore:整個機敏檔不編入(glob,像 .gitignore)
- L2 行內標記 <!-- wiki:ignore -->:檔案內某段不編入
- L3 wiki-secret-scan.sh hook:機敏值真寫進 .claude/wiki/ → exit 2 擋

L3 偵測密碼賦值/PEM 私鑰/AWS·GitHub·Slack·Google·Stripe 金鑰/JWT/
連線字串帳密/台灣身分證/信用卡號;wiki-secret-ok 行尾標記可豁免誤判。
wiki-init/wiki-capture/SKILL 寫入 L1+L2 協議。

誠實限制:L1/L2 靠 CC 自律、L3 靠 regex(有偽陽/偽陰),減少意外外洩
非保險箱——真正的密鑰本就不該進版控。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 12:45:28 +08:00

155 lines
5.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.
---
name: llm-wiki
description: >-
為任何開發專案建立或維護 LLM Wiki 記憶系統——一套讓 CC(Claude Code)不再重複犯錯、
不忘決策脈絡的雙空間文件結構。觸發時機:
(1)新專案 init——「幫我建立 wiki 系統」「新專案要設置文件結構」;
(2)老專案 migrate——「幫我整理文件」「文件太亂了」「散落的 md 幫我收一收」;
(3)對話結論 capture——「把剛才的討論記下來」「這個決定要存起來」「我不想再解釋一次」;
(4wiki 更新——「更新 status」「記錄這個 mistake」「加一條決策」。
只要涉及「讓 CC 記住某件事」或「整理專案文件讓 CC 好找」,都用這個 skill。
---
# LLM Wiki Skill
讓 CC 不再是失憶的協作者。這個 skill 幫你在任何專案裡建立一套
**人寫文件 + CC 整理 wiki** 的雙空間系統,讓每次 session 都能無縫接上。
靈感來源:Andrej Karpathy 的 LLM Wiki 概念——不用 embedding
只靠 pre-compile 把知識整理成 LLM 友善的格式。
---
## 四種使用情境
| 情境 | 觸發訊號 | 跳到 |
|------|---------|------|
| **A. 新專案 init** | 空專案、剛開始 | → [流程 A](#流程-a新專案-init) |
| **B. 老專案 migrate** | 已有文件但很亂 | → [流程 B](#流程-b老專案-migrate) |
| **C. 對話結論 capture** | 剛討論完某個決策 | → [流程 C](#流程-c對話結論-capture) |
| **D. Wiki 日常更新** | session 結束、踩到坑 | → [流程 D](#流程-d-wiki-日常更新) |
---
## 雙空間架構
```
專案根目錄/
├── CLAUDE.md ← 導航牌,≤100 行,永遠不增長
├── docs/ ← 原始文件空間(人寫,CC 讀)
│ ├── README.md
│ ├── 1-vision/
│ ├── 2-architecture/decisions/
│ ├── 3-specs/
│ ├── 4-guides/
│ ├── 5-records/{incidents,test-reports}/
│ └── 6-user/
└── .claude/wiki/ ← CC 整理的知識(CC 寫)
├── INDEX.md
├── mistakes.md
├── status.md
└── decisions-summary.md
```
三條原則:docs/ 人寫 CC 不改 | wiki/ CC 維護 | CLAUDE.md ≤100 行
詳細格式見 `references/templates.md`
---
## 機敏內容防護(三層)
有些內容不該被編入 wiki——密碼、API 金鑰、私鑰、個資。三層防線:
| 層 | 機制 | 擋什麼 | 性質 |
|----|------|--------|------|
| **L1** | `.claude/wiki/.wikiignore`glob,像 .gitignore | 整個機敏檔不編入 | 協議(CC 遵守) |
| **L2** | 行內標記 `<!-- wiki:ignore -->``<!-- wiki:end -->` | 檔案內某段不編入 | 協議(CC 遵守) |
| **L3** | `wiki-secret-scan.sh` hookPreToolUse | 機敏值真的寫進 wiki → exit 2 擋 | 硬攔截(機械偵測) |
**CC 的守則**
1. init/migrate 掃描時,**先套 `.wikiignore`** 再分類;命中的檔案不讀不編入。
2. 編入任何內容前,自檢有無密碼/金鑰/個資——有就記「位置」不記「值」。
3. L3 是兜底底線,不是藉口:別把機敏值帶到寫入那一刻才靠 hook 攔。
> 誠實限制:L1/L2 靠 CC 自律,L3 靠 regex 特徵(有偽陽/偽陰)。
> 這是「減少意外外洩」的機制,不是保險箱。真正的密鑰本就不該進版控。
---
## 流程 A:新專案 Init
1. 建立目錄結構
2.`references/templates.md` 建立六個核心檔案
3. 訪談(每次一個問題):做什麼 / 技術限制 / 技術棧 / 現有規範
4. 填入 CLAUDE.md,完成確認
---
## 流程 B:老專案 Migrate
⚠️ 三個階段,每階段等確認再繼續。
**階段一:掃描 + 分類計畫**
遞迴找所有 .md,標注建議位置和信心度,列清單等確認。
分類規則:
```
子系統設計文件 → docs/3-specs/[子系統]/
為什麼做某決定 → docs/2-architecture/decisions/
怎麼操作 → docs/4-guides/
歷史記錄 → docs/5-records/
給使用者看的 → docs/6-user/
不確定 → 列為「待確認」,問使用者
```
**階段二:讀文件,建 wiki**
每個文件讀完後提取到對應 wiki 檔案,全部讀完後展示結果等確認。
**階段三:歸檔**
按確認好的分類移動,根目錄只留必要項目,更新 CLAUDE.md 路徑。
---
## 流程 C:對話結論 Capture
這是最容易被忘記、也最重要的情境。
| 內容類型 | 存到哪 |
|---------|-------|
| 架構決策 | `decisions-summary.md` + `docs/2-architecture/decisions/[日期]-[主題].md` |
| CC 誤解被糾正 | `mistakes.md` |
| 狀態更新 | `status.md` |
操作:辨識 → 列清單給使用者確認 → 寫入 → 告知存到哪裡
**Mistakes 格式:**
```
⚠️ MISTAKE: [錯誤描述]
症狀: [CC 的表現]
正確做法: [應該怎麼做]
原因: [背景]
日期: [YYYY-MM-DD]
```
---
## 流程 DWiki 日常更新
Session 結束時固定更新 status.md
- 這次做了什麼
- 遇到什麼問題
- 下次從哪裡開始
- 有新誤解 → 同時 append mistakes.md
- 有新決策 → 同時 append decisions-summary.md
---
## 維護規則
1. `docs/` 只讀不改
2. `.claude/wiki/` 只增不刪
3. `CLAUDE.md` 不增長,超過 100 行就是放錯地方
4. 分類不確定就問
5. 對話結論當場 capture