feat: wiki 資訊架構 push/pull 判準 + principles 原則 push 檔 + bump 1.10.0

從「用戶所有檔案一律改寫成 wiki」前提,用 push(行動前必看見)vs pull(按需查)
重新推導 wiki/ 每個檔存廢——wiki 主要給 AI 看,判準是 CC 做事會不會被動看見。
對應 SDD: wiki-architecture(內部,依原則不推)。

- 新增 principles.md(push 全文):收跨全局原則(不污染根目錄、low-code…),
  原則是會被遺忘的盲區,沒推到眼前 CC 設計時不服從。一行一條 ≤15。
- mistakes 改 push 摘要(標題+症狀,全文按需展開,量大不撐爆 context)
- decisions-summary 降級為 cards + INDEX 決策視圖(既有相容)
- INDEX 升級多角度視圖的家:新增角度只改 INDEX,不開檔不問用戶
- session-start hook 三類 push:principles 全文→status→mistakes 標題;>15 警告
- install 補 principles download;update 加 add_if_missing(補範本/已有則保留)
- push/pull 判準寫進 wiki-init + SKILL,CC/Cowork 共用
- 沙盒驗證:三類注入順序與量受控、add_if_missing 不覆蓋用戶內容、全 bash -n 過

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-26 16:52:32 +08:00
parent ead3593109
commit 671503fd70
12 changed files with 197 additions and 42 deletions
+3
View File
@@ -14,12 +14,15 @@ skills/editorial-image/
# 根目錄自裝的開發 wiki — 內部記錄,不推 GitHub(用戶看的是 template/ 裡的範本) # 根目錄自裝的開發 wiki — 內部記錄,不推 GitHub(用戶看的是 template/ 裡的範本)
# 內容檔是我們開發此 template 的記錄;架構檔(INDEX/.wikiignore/hooks)是從 # 內容檔是我們開發此 template 的記錄;架構檔(INDEX/.wikiignore/hooks)是從
# template/ 複製來自用的,範本本體已在 template/ 推上去,這份不重複推。 # template/ 複製來自用的,範本本體已在 template/ 推上去,這份不重複推。
# 1.10 後 dev 自用 wiki 與 VERSION 也遷到根目錄的 system-dev/(與用戶端結構一致)。
# 注意:只排除「根目錄」的 /system-dev/(前綴 /);template/system-dev/ 是發佈源,要推。
.claude/wiki/ .claude/wiki/
.claude/hooks/ .claude/hooks/
.claude/commands/ .claude/commands/
.claude/VERSION .claude/VERSION
.claude/settings.json .claude/settings.json
.claude/settings.local.json .claude/settings.local.json
/system-dev/
# Dogfooding:我們把 system-dev-template 也裝進自己的 repo 自用(產生這些自裝產物)。 # Dogfooding:我們把 system-dev-template 也裝進自己的 repo 自用(產生這些自裝產物)。
# 真正的範本本體在 template/ 底下,這些根目錄自裝副本不推雲端,用戶不需要。 # 真正的範本本體在 template/ 底下,這些根目錄自裝副本不推雲端,用戶不需要。
+12
View File
@@ -10,6 +10,18 @@
--- ---
## 1.10.0 — wiki 資訊架構:push/pull 判準 + principles(原則)push 檔
從「用戶所有檔案一律改寫成 wiki」的新前提,用 **pushCC 行動前必主動看見)vs pull(按需檢索)** 重新推導 wiki/ 每個檔的存廢——因為 wiki 主要是給 AI 看的,判準是「CC 做事時會不會被動看見」,不是分類美學。對應 SDDwiki-architecture。
- **新增 `principles.md`(push 全文)**:收「跨全局設計原則」(如不污染用戶根目錄、目標用戶 low-code)。原則是「會被遺忘的盲區」——沒推到眼前 CC 設計時不會服從。一行一條、≤15 條,累積只改此檔不開新檔。
- **mistakes 改 push 摘要**session-start hook 注入標題清單+一行症狀,全文按需展開(量大不撐爆 context)。
- **decisions-summary 降級為 cards + INDEX 決策視圖**:決策是知識內容=card;既有的保留相容。
- **INDEX 升級為「多角度視圖」的家**:標籤角度、決策角度…新增角度只改 INDEX 一節,不開實體檔、不問用戶。
- **session-start hook 三類 push**principles 全文(最前)→ status 全文 → mistakes 標題;principles >15 條警告。
- install.sh 補 principles downloadupdate.sh 新增 `add_if_missing`(舊用戶升級補範本、已有則保留不覆蓋)。
- push/pull 判準寫進 wiki-init.md 與 SKILL.mdCC/Cowork 共用。
## 1.9.3 — 遷移後 CLAUDE.md 殘留舊路徑:hook 偵測並提示 CC 代修 ## 1.9.3 — 遷移後 CLAUDE.md 殘留舊路徑:hook 偵測並提示 CC 代修
升級到 1.9.x 後 wiki 已搬到 system-dev/,但 update.sh 鐵則「絕不碰 CLAUDE.md」(用戶資料),導致 CLAUDE.md 內仍寫舊路徑 `.claude/wiki/`,CC 照它找錯位置(KB 端升級後發現)。 升級到 1.9.x 後 wiki 已搬到 system-dev/,但 update.sh 鐵則「絕不碰 CLAUDE.md」(用戶資料),導致 CLAUDE.md 內仍寫舊路徑 `.claude/wiki/`,CC 照它找錯位置(KB 端升級後發現)。
+19 -2
View File
@@ -62,9 +62,9 @@ else
進入 `system-dev/wiki/`,讀取: 進入 `system-dev/wiki/`,讀取:
- `INDEX.md`:目前已有哪些 wiki 頁面 - `INDEX.md`:目前已有哪些 wiki 頁面(多角度視圖入口)
- `status.md`:上次整理時間、進度 - `status.md`:上次整理時間、進度
- `log.md`(如果有):誰動過什麼 - `principles.md`(如果有):本專案跨全局的設計原則——整理時必須服從
目的:**知道哪些已整理過,只處理新增或有變動的 raw source**,不重複整理。 目的:**知道哪些已整理過,只處理新增或有變動的 raw source**,不重複整理。
@@ -72,6 +72,23 @@ else
## 第四步:整理規則 ## 第四步:整理規則
### 核心判準:push vs pullwiki 是給 AI 看的)
整理任何內容前,先判斷它該進 **push 檔****cardspull**——判準是「**CC 做事時會不會被動看見**」:
- **push 檔**`status.md` / `mistakes.md` / `principles.md`):CC session 開始就被 hook 注入。給「CC 不會主動查、但不看就出事」的東西。
- **pull**`cards/`):CC 想到要查才看見。一切知識內容(原文摘要、AI 筆記、決策、概念…)都寫成 cards。
| 內容 | 去哪 | 理由 |
|------|------|------|
| 當前進度、下一步 | `status.md`(push 全文) | 時態狀態,不看會重做 |
| 跨全局設計原則(一行一條,≤15) | `principles.md`(push 全文) | 會被遺忘的盲區,CC 設計時必服從 |
| 踩坑、被糾正的誤解 | `mistakes.md`(push 摘要+按需展開) | 防 CC 不自覺的盲區 |
| 決策、原文摘要、概念知識、其餘一切 | `cards/<bucket>/`(pull) | 知識內容;CC 面對時自然會查 |
> `decisions-summary.md` 已**降級為 cards + INDEX 決策視圖**(決策=知識內容)。既有的保留為相容,不刪。
> CC 與 Cowork **共用此判準**,產出一致:任一方寫進 push 檔或 cards,另一方看到就跳過或補充,不覆蓋。
### 讀 raw source ### 讀 raw source
逐一讀取 raw source 的 `.md` 檔。跳過: 逐一讀取 raw source 的 `.md` 檔。跳過:
+7 -7
View File
@@ -247,7 +247,7 @@ if $WANT_WIKI; then
download_if_missing "system-dev/wiki/TAXONOMY.md" "$REPO_URL/system-dev/wiki/TAXONOMY.md" download_if_missing "system-dev/wiki/TAXONOMY.md" "$REPO_URL/system-dev/wiki/TAXONOMY.md"
download_if_missing "system-dev/wiki/status.md" "$REPO_URL/system-dev/wiki/status.md" download_if_missing "system-dev/wiki/status.md" "$REPO_URL/system-dev/wiki/status.md"
download_if_missing "system-dev/wiki/mistakes.md" "$REPO_URL/system-dev/wiki/mistakes.md" download_if_missing "system-dev/wiki/mistakes.md" "$REPO_URL/system-dev/wiki/mistakes.md"
download_if_missing "system-dev/wiki/decisions-summary.md" "$REPO_URL/system-dev/wiki/decisions-summary.md" download_if_missing "system-dev/wiki/principles.md" "$REPO_URL/system-dev/wiki/principles.md"
download_if_missing "system-dev/wiki/.wikiignore" "$REPO_URL/system-dev/wiki/.wikiignore" download_if_missing "system-dev/wiki/.wikiignore" "$REPO_URL/system-dev/wiki/.wikiignore"
# wiki 改寫產物(AI 自讀定稿卡片)的正式落點:由工具建好,不靠用戶自救。 # wiki 改寫產物(AI 自讀定稿卡片)的正式落點:由工具建好,不靠用戶自救。
@@ -374,21 +374,21 @@ if [ -f "CLAUDE.md" ]; then
echo "" echo ""
if [ "$IS_ZH" = "yes" ]; then if [ "$IS_ZH" = "yes" ]; then
cat <<'SNIP' cat <<'SNIP'
## Wiki 讀取順序 ## Wiki 讀取順序pushhook 開 session 自動注入)
| 檔案 | 時機 | 用途 | | 檔案 | 時機 | 用途 |
|------|------|------| |------|------|------|
| `system-dev/wiki/status.md` | session 開始第一件事 | 當前進度 | | `system-dev/wiki/status.md` | session 開始第一件事 | 當前進度 |
| `system-dev/wiki/mistakes.md` | 做新功能前 | 已知誤解 | | `system-dev/wiki/principles.md` | 設計任何東西前 | 跨全局原則,必服從 |
| `system-dev/wiki/decisions-summary.md` | 設計判斷時 | 架構決策 | | `system-dev/wiki/mistakes.md` | 做新功能前 | 已知踩坑 |
SNIP SNIP
else else
cat <<'SNIP' cat <<'SNIP'
## Wiki reading order ## Wiki reading order (push: auto-injected at session start)
| File | When | Purpose | | File | When | Purpose |
|------|------|---------| |------|------|---------|
| `system-dev/wiki/status.md` | first thing at session start | current progress | | `system-dev/wiki/status.md` | first thing at session start | current progress |
| `system-dev/wiki/mistakes.md` | before building a new feature | known misconceptions | | `system-dev/wiki/principles.md` | before designing anything | global principles, must obey |
| `system-dev/wiki/decisions-summary.md` | when making design calls | architecture decisions | | `system-dev/wiki/mistakes.md` | before building a new feature | known pitfalls |
SNIP SNIP
fi fi
fi fi
+15
View File
@@ -149,6 +149,19 @@ keep_file() {
[ -f "$1" ] && KEPT+=("$1") || true [ -f "$1" ] && KEPT+=("$1") || true
} }
# 補新檔:舊版沒有、新版才有的「使用者資料檔」(如 principles.md)。
# 不存在 → 抓範本下來(之後由使用者/CC 填);已存在 → 當用戶資料保留,絕不覆蓋。
add_if_missing() {
local dest="$1" src="$2"
if [ -f "$dest" ]; then
KEPT+=("$dest")
elif curl -sSL "$src" -o "$dest" 2>/dev/null && [ -s "$dest" ]; then
NEW+=("$dest")
else
rm -f "$dest"
fi
}
# 客製檔:使用者一定會手填內容(如 pre-write-guard.sh)。 # 客製檔:使用者一定會手填內容(如 pre-write-guard.sh)。
# - 已存在 → 絕不覆蓋,但把最新模板版抓到 <檔名>.template.sh 旁邊,供使用者自行 diff 採納。 # - 已存在 → 絕不覆蓋,但把最新模板版抓到 <檔名>.template.sh 旁邊,供使用者自行 diff 採納。
# - 不存在 → 視同新檔,直接抓本體(第一次安裝才會走這條)。 # - 不存在 → 視同新檔,直接抓本體(第一次安裝才會走這條)。
@@ -213,6 +226,8 @@ if $HAS_WIKI; then
# wiki 的「使用者資料」:絕不碰 # wiki 的「使用者資料」:絕不碰
keep_file "system-dev/wiki/status.md" keep_file "system-dev/wiki/status.md"
keep_file "system-dev/wiki/mistakes.md" keep_file "system-dev/wiki/mistakes.md"
# principles.md1.10):舊版沒有 → 補範本;已有 → 當用戶資料保留
add_if_missing "system-dev/wiki/principles.md" "$TEMPLATE_URL/system-dev/wiki/principles.md"
keep_file "system-dev/wiki/decisions-summary.md" keep_file "system-dev/wiki/decisions-summary.md"
keep_file "system-dev/wiki/TAXONOMY.md" keep_file "system-dev/wiki/TAXONOMY.md"
keep_file "system-dev/wiki/.wikiignore" keep_file "system-dev/wiki/.wikiignore"
+1 -1
View File
@@ -1 +1 @@
1.9.3 1.10.0
+31 -6
View File
@@ -67,15 +67,20 @@ wiki 採**三層 + 標籤橫切**架構(183 卡實證,issue #8):
``` ```
system-dev/wiki/ system-dev/wiki/
├── INDEX.md ← 頂層:標籤視圖(不是資料夾列表 ├── INDEX.md ← 索引:多角度視圖的家(標籤角度、決策角度、…
├── TAXONOMY.md ← 標籤字典(分類骨架,受控擴充:先查重再登記 ├── TAXONOMY.md ← 標籤字典(cards 的分類元資料,受控擴充
├── status.md / mistakes.md / decisions-summary.md ├── status.md ← [push] 時態狀態:當前進度、下一步
── cards/ ── mistakes.md ← [push] 踩過的坑、被糾正的誤解(防不自覺盲區)
└── <bucket>/ ← 儲存桶(一般專案沿用 docs 分類;vault 由 AI 重新組織 ├── principles.md ← [push] 跨全局的設計原則(行動前必服從
└── cards/ ← [pull] 一切知識內容:原文摘要、AI 筆記、決策、概念…
└── <bucket>/ ← 儲存桶(分類由 frontmatter 標籤承載)
├── 00-INDEX.md ← 桶子索引(固定名,容器:只連不重寫,H2/H3 分節) ├── 00-INDEX.md ← 桶子索引(固定名,容器:只連不重寫,H2/H3 分節)
└── <概念全名>.md ← 概念原子卡(一概念一檔,自包含) └── <概念全名>.md ← 概念原子卡(一概念一檔,自包含)
``` ```
> **[push] / [pull] 是這套 wiki 的核心判準——因為 wiki 主要是給 AI(CC)看的。**
> 見下方「核心判準:push vs pull」。`decisions-summary.md` 已**降級為 cards + INDEX 決策視圖**(決策是知識內容=card);既有的 decisions-summary 若存在,保留為相容,不刪。
關鍵原則:**資料夾只是儲存桶,分類由 frontmatter 標籤承載**。資料夾名不該硬繼承原稿目錄——原稿目錄是「人為了整理草稿」分的,wiki 連分類都該由 AI 重新組織。 關鍵原則:**資料夾只是儲存桶,分類由 frontmatter 標籤承載**。資料夾名不該硬繼承原稿目錄——原稿目錄是「人為了整理草稿」分的,wiki 連分類都該由 AI 重新組織。
> **桶子索引固定叫 `00-INDEX.md`**issue #6):`00-` 前綴讓它排序最前、一眼可辨(像 README 之於資料夾),AI 載入任何 `cards/<bucket>/` 一律先讀它,不必猜。檔內 H1 仍寫主題名(如 `# PKM 知識管理`),語意不丟。 > **桶子索引固定叫 `00-INDEX.md`**issue #6):`00-` 前綴讓它排序最前、一眼可辨(像 README 之於資料夾),AI 載入任何 `cards/<bucket>/` 一律先讀它,不必猜。檔內 H1 仍寫主題名(如 `# PKM 知識管理`),語意不丟。
@@ -88,9 +93,29 @@ system-dev/docs/{1-vision,2-architecture/decisions,3-specs,4-guides,5-records/{i
檔案(不存在才建): 檔案(不存在才建):
- `system-dev/wiki/INDEX.md``TAXONOMY.md` - `system-dev/wiki/INDEX.md``TAXONOMY.md`
- `system-dev/wiki/status.md``mistakes.md``decisions-summary.md` - `system-dev/wiki/status.md``mistakes.md``principles.md`(三個 push 檔)
- `system-dev/docs/README.md`(一般專案才需要) - `system-dev/docs/README.md`(一般專案才需要)
---
## 核心判準:push vs pullwiki 是給 AI 看的)
整理任何內容前,先判斷它該 **push****pull**——判準是「**CC 做事時會不會被動看見**」:
- **push**CC 行動前必須主動出現在 contextsession 開始就由 hook 注入)。給「CC 不會主動去查、但不看就出事」的東西。
- **pull**:CC 想到要查、或載入相關卡時才看見。給「CC 面對它時自然會查」的知識。
**為什麼這是核心**mistakes 防的是 CC「不自覺的盲區」——一個你不知道存在的錯,你不會主動去檢索它。靠 CC 自覺去查自己沒自覺的盲區是自相矛盾的,所以 pull 對盲區失效,**必須 push**。原則同理:沒被推到眼前的準繩,CC 設計時很可能沒想到要服從就做了。
| 內容 | push/pull | 注入形態(hook|
|------|-----------|----------------|
| **status** | push | **全文**——CC 必須知道精確的下一步,摘要會漏 task 編號 |
| **principles** | push | **全文(一行一條)**——短而硬的約束,漏一條就違反;≤15 條,超過代表該下放成 card |
| **mistakes** | push | **標題清單 + 一行症狀**,全文按需 pull——量可能大,摘要足以觸發「我正撞到某條」的認出 |
| **decisions、原文摘要、概念知識、一切其餘** | pull | 寫成 cardsCC 面對時自然會查,INDEX 提供角度入口 |
**principles 維護規則**:一行一條精煉準繩(如「不污染用戶根目錄」「目標用戶 low-code」「wiki 主要給 AI 看」)。發現新的跨全局原則 → append 一行;超過 ~15 條代表某些該合併或下放成 card。**累積原則只改 principles.md,不必問用戶開新檔。**
### 第四步:訪談(每次一個問題) ### 第四步:訪談(每次一個問題)
依序問: 依序問:
+33 -2
View File
@@ -11,6 +11,8 @@
set -euo pipefail set -euo pipefail
STATUS_FILE="system-dev/wiki/status.md" STATUS_FILE="system-dev/wiki/status.md"
PRINCIPLES_FILE="system-dev/wiki/principles.md"
MISTAKES_FILE="system-dev/wiki/mistakes.md"
# ── 舊結構防呆(1.9.0 遷移第 2 層保險)── # ── 舊結構防呆(1.9.0 遷移第 2 層保險)──
# 新版 wiki 收進 system-dev/。若偵測到舊位置 .claude/wiki/ 還在、但新位置沒 status # 新版 wiki 收進 system-dev/。若偵測到舊位置 .claude/wiki/ 還在、但新位置沒 status
@@ -24,16 +26,45 @@ if [ -d ".claude/wiki" ] && [ ! -f "$STATUS_FILE" ]; then
exit 0 exit 0
fi fi
# 沒有 wiki 就安靜退出(exit 0),不干擾還沒 /wiki-init 的專案 # 三個 push 檔都沒有 → 安靜退出,不干擾還沒 /wiki-init 的專案
if [ ! -f "$STATUS_FILE" ]; then if [ ! -f "$STATUS_FILE" ] && [ ! -f "$PRINCIPLES_FILE" ] && [ ! -f "$MISTAKES_FILE" ]; then
exit 0 exit 0
fi fi
# ── push 1/3principles(全文,行動前必服從)──
# 放最前:原則是「會被遺忘的盲區」,要第一眼看見。全文成本低(一行一條、≤15 條)。
if [ -f "$PRINCIPLES_FILE" ] && grep -q '^- ' "$PRINCIPLES_FILE" 2>/dev/null; then
echo "════════════════════════════════════════════════"
echo "📐 設計原則(行動前必服從,來自 principles.md"
echo "════════════════════════════════════════════════"
grep '^- ' "$PRINCIPLES_FILE" # 只注入原則條目本身,不含說明區
# context 保護:原則應 ≤15 條(push 全文)。超過 → 提示該合併或下放成 card,不截斷(截斷會漏原則)。
P_COUNT=$(grep -c '^- ' "$PRINCIPLES_FILE")
if [ "$P_COUNT" -gt 15 ]; then
echo ""
echo "(⚠️ principles 已 ${P_COUNT} 條 > 15:請考慮合併相近原則、或把較細的下放成 card)"
fi
echo ""
fi
# ── push 2/3:status(全文,當前進度)──
if [ -f "$STATUS_FILE" ]; then
echo "════════════════════════════════════════════════" echo "════════════════════════════════════════════════"
echo "📍 接關:上次進度(來自 $STATUS_FILE 快照)" echo "📍 接關:上次進度(來自 $STATUS_FILE 快照)"
echo "════════════════════════════════════════════════" echo "════════════════════════════════════════════════"
echo "" echo ""
cat "$STATUS_FILE" cat "$STATUS_FILE"
fi
# ── push 3/3mistakes(標題清單 + 一行症狀,全文按需展開)──
# 不全文注入(可能累積很多、含長 context)。只給「標題行」讓 CC 認出「我正撞到某條」→ 再去讀全文。
if [ -f "$MISTAKES_FILE" ] && grep -q 'MISTAKE' "$MISTAKES_FILE" 2>/dev/null; then
echo ""
echo "────────────────────────────────────────────────"
echo "⚠️ 已知踩坑(標題;撞到時讀 $MISTAKES_FILE 全文)"
grep -E 'MISTAKE' "$MISTAKES_FILE" | sed 's/^/ /'
fi
echo "" echo ""
echo "────────────────────────────────────────────────" echo "────────────────────────────────────────────────"
echo "⚠️ 以上是 point-in-time 快照,非即時狀態。" echo "⚠️ 以上是 point-in-time 快照,非即時狀態。"
+1 -1
View File
@@ -1 +1 @@
1.9.3 1.10.0
+19 -2
View File
@@ -62,9 +62,9 @@ else
進入 `system-dev/wiki/`,讀取: 進入 `system-dev/wiki/`,讀取:
- `INDEX.md`:目前已有哪些 wiki 頁面 - `INDEX.md`:目前已有哪些 wiki 頁面(多角度視圖入口)
- `status.md`:上次整理時間、進度 - `status.md`:上次整理時間、進度
- `log.md`(如果有):誰動過什麼 - `principles.md`(如果有):本專案跨全局的設計原則——整理時必須服從
目的:**知道哪些已整理過,只處理新增或有變動的 raw source**,不重複整理。 目的:**知道哪些已整理過,只處理新增或有變動的 raw source**,不重複整理。
@@ -72,6 +72,23 @@ else
## 第四步:整理規則 ## 第四步:整理規則
### 核心判準:push vs pullwiki 是給 AI 看的)
整理任何內容前,先判斷它該進 **push 檔****cardspull**——判準是「**CC 做事時會不會被動看見**」:
- **push 檔**`status.md` / `mistakes.md` / `principles.md`):CC session 開始就被 hook 注入。給「CC 不會主動查、但不看就出事」的東西。
- **pull**`cards/`):CC 想到要查才看見。一切知識內容(原文摘要、AI 筆記、決策、概念…)都寫成 cards。
| 內容 | 去哪 | 理由 |
|------|------|------|
| 當前進度、下一步 | `status.md`(push 全文) | 時態狀態,不看會重做 |
| 跨全局設計原則(一行一條,≤15) | `principles.md`(push 全文) | 會被遺忘的盲區,CC 設計時必服從 |
| 踩坑、被糾正的誤解 | `mistakes.md`(push 摘要+按需展開) | 防 CC 不自覺的盲區 |
| 決策、原文摘要、概念知識、其餘一切 | `cards/<bucket>/`(pull) | 知識內容;CC 面對時自然會查 |
> `decisions-summary.md` 已**降級為 cards + INDEX 決策視圖**(決策=知識內容)。既有的保留為相容,不刪。
> CC 與 Cowork **共用此判準**,產出一致:任一方寫進 push 檔或 cards,另一方看到就跳過或補充,不覆蓋。
### 讀 raw source ### 讀 raw source
逐一讀取 raw source 的 `.md` 檔。跳過: 逐一讀取 raw source 的 `.md` 檔。跳過:
+33 -16
View File
@@ -6,38 +6,55 @@
--- ---
## 核心檔案 ## push 檔(session 開始由 hook 主動注入,CC 行動前必看見)
| 檔案 | 何時讀 | 內容 | | 檔案 | 注入形態 | 內容 |
|------|-------|------| |------|---------|------|
| `status.md` | session 開始第一件事 | 當前進度、下一步 | | `status.md` | 全文 | 當前進度、下一步(時態狀態)|
| `mistakes.md` | 做新功能前 | 已知誤解、快速檢查清單 | | `principles.md` | 全文(一行一條)| 跨全局設計原則,行動前必服從 |
| `decisions-summary.md` | 遇到設計判斷時 | 架構決策摘要 | | `mistakes.md` | 標題+一行症狀,全文按需展開 | 踩過的坑、被糾正的誤解(防不自覺盲區)|
> 為什麼這三個 push 而非 pull:它們是「CC 不會主動查、但不看就出事」的盲區。詳見 `/wiki-init` 的「push vs pull」。
---
## pullcards/CC 按需檢索)
一切知識內容——原文摘要、AI 筆記、決策、概念知識——都寫成 `cards/<bucket>/` 的概念原子卡。
`decisions-summary.md` 已降級為 cards(決策=知識內容);既有的保留為相容。
--- ---
## 維護規則 ## 維護規則
1. 只增不刪——記錄 append決策改了加新條目說明「舊決策已更新」 1. 只增不刪——記錄 append內容改了加新條目說明「舊已更新」
2. status.md 每次 session 結束更新 2. status.md 每次 session 結束更新mistakes/principles 一發現就 append
3. mistakes.md 每次被糾正後 append 3. principles 一行一條、≤15 條(超過代表該合併或下放成 card)
4. 發現新的重要決策 → 同時更新 decisions-summary.md 和 system-dev/docs/2-architecture/decisions/ 4. **新增一個檢索角度 = 在下方「多角度視圖」加一節,不開新實體檔、不問用戶**
--- ---
## 頂層索引:標籤視圖(由 /wiki-init 填入) ## 多角度視圖(由 /wiki-init、/wiki-capture 填入)
由 CC 改寫原文後填入。原文是唯讀 SSoT,wiki 是改寫過的記憶。 INDEX 是**所有檢索角度的入口**,不只標籤。原文是唯讀 SSoT,wiki 是改寫過的記憶。
頂層 INDEX 是**標籤視圖**(非資料夾列表),按 `TAXONOMY.md` 的軸聚類,指向各桶子索引: 新增角度只要在這裡加一節(如「決策角度」「原則角度」),指向對應 cards 或 push 檔——**不必新增實體特殊檔**。
### 標籤角度(按 `TAXONOMY.md` 的軸聚類,指向桶子索引)
```markdown ```markdown
### 知識管理 #### 知識管理
- [[pkm/00-INDEX]] — PKM 知識管理(N 卡) - [[pkm/00-INDEX]] — PKM 知識管理(N 卡)
### AI 協作 #### AI 協作
- [[ai/00-INDEX]] — AI 協作(M 卡) - [[ai/00-INDEX]] — AI 協作(M 卡)
``` ```
> 結構:頂層 INDEX(標籤視圖)→ `cards/<bucket>/00-INDEX.md`(桶子索引,固定名)→ 概念原子卡。 ### 決策角度(取代舊 decisions-summary.md 的視圖)
```markdown
- [[某決策卡]] — 一句話結論(YYYY-MM-DD
```
> 結構:INDEX(多角度入口)→ `cards/<bucket>/00-INDEX.md`(桶子索引,固定名)→ 概念原子卡。
> 指 `00-INDEX` **一律帶路徑** `[[bucket/00-INDEX]]`(固定名跨桶撞名);卡片間用裸 `[[卡名]]`。 > 指 `00-INDEX` **一律帶路徑** `[[bucket/00-INDEX]]`(固定名跨桶撞名);卡片間用裸 `[[卡名]]`。
> 分類由卡片 frontmatter `tags:` 承載,標籤字典見 `TAXONOMY.md`。詳見 `/wiki-init` 規範。 > 分類由卡片 frontmatter `tags:` 承載,標籤字典見 `TAXONOMY.md`。詳見 `/wiki-init` 規範。
+18
View File
@@ -0,0 +1,18 @@
# principles — 跨全局設計原則(push:CC 行動前必服從)
> 這個檔由 hook 在 session 開始**全文注入**,讓 CC 設計任何東西前都先看見這些準繩。
> 為什麼 push 而非寫成 card:原則是「會被遺忘的盲區」——沒推到眼前,CC 設計時很可能沒想到要服從就做了。
>
> 規則:**一行一條**,精煉成準繩(不是長篇論述)。≤15 條;超過代表某些該合併、或下放成 card。
> 發現新的跨全局原則 → append 一行。累積原則只改這個檔,**不必問用戶開新檔**。
> 區分:原則 = 反覆適用的準繩(這裡);單次選擇 = 決策(寫成 card);踩過的坑 = mistakes.md。
---
## 原則
<!-- 一行一條。範例格式:
- **不污染用戶根目錄**:工具產物收進專屬資料夾,不在用戶根目錄撒檔、不跟用戶自己的檔混。
-->
(尚未填入。由 /wiki-init 或 /wiki-capture 依本專案累積。)