---
title: "13 - 實戰：套用在兩個 repo"
type: note
specialty: Programming
tags: [claude-code-cli從0開始使用教學, 13-實戰, obsidian, taiwan-im-board]
created: 2026-08-04
updated: "2026"
modified: 2026-08-04
---

# 13 - 實戰：套用在兩個 repo

← [[12-設定檔與CLI旗標速查]] | [[00-Index]] | 下一篇 → [[14-疑難排解與速查表]]

---

## 現況盤點

你已經在用的（做對的部分）：

| 已有 | 評語 |
|---|---|
| 兩份很完整的 `CLAUDE.md` | ✅ 規則清楚、有階層、有理由 |
| `.claude/skills/` 放在 repo 裡 | ✅ 正確——雲端 / Routine session 讀不到 `~/.claude/skills/` |
| Skill pipeline（orchestrator → writer → wiki-maintain）| ✅ 「唯一一次 commit」的設計是對的 |
| PubMed MCP | ✅ 而且 `CLAUDE.md` §4 有寫「沒有 MCP 就別猜 PMID」的 fallback |
| `_wiki_meta/lint.py`、`tools/validate.py` | ✅ 有機器可驗證的關卡 |

以下是**根據官方文件可以再優化的地方**。

---

## 建議一：把 CLAUDE.md 拆成核心 + path-scoped rules ⭐

**問題**：官方建議每份 CLAUDE.md **200 行以內**，理由是「越長吃越多 context，而且降低遵守率」。你的 vault `CLAUDE.md` 遠超過，而且裡面混了三種讀者情境（醫學筆記 / 語言筆記 / 理財筆記）。

**做法**：

```text
Obsidian-med-note/
├── CLAUDE.md                      ← 只留「永遠要在 context 裡」的
│   §0 三條鐵律（絕不捏造 / 必標源 / 寫檔後更新 wiki）
│   §1 medical-in-English 硬規則
│   §3 skill pipeline 與手動 SOP
│   §5 git（push 前 pull --rebase、衝突停手）
│
└── .claude/rules/
    ├── quartz-compat.md    paths: "**/*.md"          ← §6 圖片 ![[]] / YAML 合法性
    ├── lang-notes.md       paths: "語言/**"           ← §8 語言學習筆記（讀者不同）
    ├── finance.md          paths: "理財(FIN)/**"      ← §9 理財三任務守則
    └── note-format.md      paths: "**/*_overview.md"  ← §2 Pearl Card 格式
```

範例 `.claude/rules/finance.md`：

```markdown
---
paths:
  - "理財(FIN)/**"
---

# 理財區規則

⚠️ 這區的慣例跟醫學筆記**相反**：專有名詞要**中英並列**，不是一律英文。

1. 財務數字絕不捏造：股價 / 財報 / 估值 / 目標價一律 web 查證權威來源（財報、SEC、官方 fact sheet），標查證日；無法查證標「需查證」。
2. `transactions.csv` 是唯一真相：只記買 / 賣 / 配息事實，報酬率由 `compute.py` 算，**不手填**。DIV 現金流 = `shares × price − fee`（fee 欄放預扣稅）。
3. **不要在本地跑 `compute.py`**：sandbox proxy 擋 Yahoo Finance，抓價會失敗 → push 後由 GitHub Actions 執行（`--self-test` 可在本地驗 XIRR 數學）。
4. `specialty: FIN`；ETF 分析放 `理財(FIN)/筆記/ETF分析/`、個股放 `個股分析/`。
```

**效益**：主檔案變短 → **核心醫學安全規則的遵守率上升**。而且你寫腎臟科筆記時，理財規則根本不進 context。

---

## 建議二：把「最不能出錯的兩條」變成硬規則

CLAUDE.md 是上下文（軟），權限規則和 hook 是執行（硬）。挑兩條做硬的：

`Obsidian-med-note/.claude/settings.json`（進版控）：

```json
{
  "permissions": {
    "ask": [
      "Bash(git push *)"
    ],
    "deny": [
      "Edit(.quartzsite/**)",
      "Write(.quartzsite/**)",
      "Bash(git push --force *)",
      "Bash(git push -f *)"
    ]
  }
}
```

對應 `CLAUDE.md` §6「不要動 `.quartzsite/`」和 §5「絕不可覆蓋掉使用者的筆記內容」。

`Taiwan_IM_board/.claude/settings.json`：

```json
{
  "permissions": {
    "deny": [
      "Bash(git push --force *)"
    ],
    "allow": [
      "Bash(python3 tools/validate.py)",
      "Bash(python3 tools/build_index.py)",
      "Bash(npm run validate)"
    ]
  }
}
```

allow 那幾條是**純驗證、無副作用**的指令，讓它不用每次問。

---

## 建議三：用 hook 把「一定要做」的事釘死

`CLAUDE.md` §7 自己列出的「已知雷區」第三條就是：**「寫完筆記忘了跑 §3 維護 → 最常見錯誤」**。

這是 hook 的教科書級用例。三個候選：

| 規則 | Hook 事件 | 做什麼 |
|---|---|---|
| 改動筆記要更新 `modified` | `PostToolUse`（matcher `Edit\|Write`）| 跑腳本把當天日期蓋上去 |
| 不准動 `.quartzsite/` | `PreToolUse` | 比對路徑，中了就 exit 非零擋下 |
| YAML 壞掉會讓整站 build 失敗 | `PostToolUse` | 跑一次 YAML 驗證，壞了就報錯 |

> ⚠️ Hook 的完整 JSON 輸入 / 輸出 schema 和擋下語義請對照官方 [Hooks reference](https://code.claude.com/docs/en/hooks)。本教學 [[09-Hooks自動化]] 給的是觀念與骨架，**部署前自己測一次**。

---

## 建議四：做一個唯讀的盤點 subagent

`Obsidian-med-note/.claude/agents/inventory.md`：

```markdown
---
name: inventory
description: 盤點某個專科資料夾的筆記時效性，產出報告。當使用者要求「盤點」「哪幾篇該更新」「檢查時效」時使用。
tools: Read, Glob, Grep
model: haiku
color: cyan
---

你是筆記盤點員。**你只讀，不寫任何檔案。**

掃描指定資料夾的所有 `*_overview.md`，輸出表格：

| 檔案 | updated | modified | 內文最新 guideline 年份 | PMID 數 |

規則：
- guideline 年份從「⚡ 資料更新至：」行與 Key References 區抓
- **不要判斷哪個 guideline 比較新**——那需要 PubMed，是主 agent 的工作
- 不確定填「?」，不要猜

只回表格 + 一句總結。
```

**為什麼值得**：
- `tools: Read, Glob, Grep` → **物理上不可能改到你的筆記**
- `model: haiku` → 純掃描不用貴模型
- 它在自己的 context 裡掃 30 篇筆記，**主對話只收到一張表**
- 你拿到表就能決定「哪 3 篇值得花 PubMed 額度去 review」

---

## 建議五：搭配 Herdr 時的分工

這條是把三份教學接起來：

```
Claude Code（大腦）
├── 自己做：規劃、PubMed 查證、醫學正確性判斷、wiki 維護、唯一一次 commit
├── subagent：唯讀盤點、探索（省 context，但仍花 Claude 額度）
└── 透過 Herdr 外包給 Codex：格式稽核、批次改寫、圖片處理、資料轉換
                              （省 Claude 額度，換成 ChatGPT Plus 額度）
```

完整做法見 [[Programming/Herdr/Herdr從0開始使用教學/08-Claude當大腦-Codex當雙手|Herdr 08]] 和 [[Programming/Herdr/Herdr從0開始使用教學/10-實戰-Obsidian醫學筆記庫|Herdr 10]]。

---

## 一個典型的 vault 工作 session

```bash
cd ~/Obsidian-med-note
claude
```

```
/context                    # 確認 CLAUDE.md 有載入
```

```
/plan 幫我 review NEP 科的 CKD 筆記，看資料是否為最新
```

→ 它進 plan mode 研究，提計畫（要查哪幾個 guideline、要改哪幾段）
→ `Ctrl+G` 把計畫開在編輯器裡，把你不同意的部分刪掉
→ 核准 → 它用 PubMed MCP 查證、改檔
→ `/diff` 看變更
→ 跑 `!python3 _wiki_meta/lint.py` 驗證
→ 叫它跑 wiki-maintain 並 commit push

**關鍵是第二步和第三步**：plan mode + `Ctrl+G` 編輯計畫，是「醫學內容零錯誤優先」在工具層面的具體落實。

---

## 一個典型的刷題網站工作 session

```bash
cd ~/Taiwan_IM_board
claude
```

```
/plan 114 年心臟血管科 001-012 題的詳解草稿
```

規則提醒（`CLAUDE.md` 已有，但值得在 prompt 再講）：
- 五段式、每個選項都要分析
- `status` 一律 `draft`，**AI 永遠不可改成 `reviewed`**
- 正解依該考試年度當時的標準
- PMID / DOI 必須查證為真，查不到改原則性描述

做完：
```
!python3 tools/validate.py
```

> ⚠️ 別忘了 `CLAUDE.md` §2：**改功能 = changelog + 使用說明 + README** 三件事一起改。這條規則需要判斷（「這算不算使用者看得到的更動」），所以**不適合做成 hook**，但很適合放進一個 skill 的檢查清單。

---

## 🔗 相關筆記

- [[12-設定檔與CLI旗標速查]] — 上一步
- [[14-疑難排解與速查表]] — 下一步
- [[06-CLAUDE-md與記憶系統]] — 建議一的完整說明
- [[09-Hooks自動化]] — 建議三的完整說明
- [[Programming/Herdr/Herdr從0開始使用教學/10-實戰-Obsidian醫學筆記庫|Herdr 10 - 實戰：本 vault]] — 多 agent 版本的同一件事

---

*最後更新：2026-08-04*
