本文件處理「一個主題累積多篇相關文章後、如何維持可導航、可組合、不發散」的情境。適用於開發檢討集(report folder)、系列 blog post、技術知識庫、產品文件群。

自包含聲明:本文件不依賴其他 reference。讀完即可獨立判斷一個 article collection 該怎麼結構化。

與 writing-articles.md 的分工:那篇處理「單篇文章內部如何寫」、本篇處理「多篇文章之間如何組合」。兩篇互補、各管不同 scale。


適用範圍

當以下任一條件成立、考慮讀本檔:

  • 同一主題下已有 ≥ 5 篇文章、且預期還會增加
  • 多篇文章之間發現「重複的概念、重複的範例、重複的引用」
  • 索引(MOC / TOC)變得龐大、超過 200 行仍無法路由清楚
  • 寫第 N 篇時發現「我這條原則已經在前幾篇講過了、但讀者每次都要重讀」

三層結構

跨多篇的 article collection 自然呈現三層、每層職責不同。寫作前先判斷你要寫的篇章屬於哪一層、避免層級混淆。

角色焦點例(report folder)
抽象原則跨情境共用的元規則「這條原則為什麼成立」#42 2 次門檻
情境檢討「這次任務該怎麼做」「這次的取捨選了什麼、付了什麼代價」#14 Selector 精準度
Pattern 卡片「某做法什麼時候用」「這個 pattern 的適用邊界與實作細節」#46 Document 全文件 query

各層的內容邊界

抽象原則層

  • 不寫具體 case(具體 case 在情境檢討層)
  • 寫「機制 / 為什麼這條規則成立 / 跨情境如何辨識」
  • 結尾列出對應的情境檢討篇、各自示範這條原則的哪個面向
  • 不寫「跟其他原則的關係」(那是 MOC 的責任)

情境檢討層

  • 寫「這次的具體任務、當時的限制、選了什麼、為什麼」
  • 用機會成本語氣描述方案(A/B/C/D 多選項、不用「正確 vs 不足」)
  • 取捨段落中可引用 Pattern 卡片
  • 結尾可援引抽象原則層、但不重述

Pattern 卡片層

  • 寫「這個 pattern 的核心動作、適合 / 不適合的情境、設計細節」
  • 結尾列出「跟其他做法的取捨」(橫向比較同維度的其他 pattern)
  • 不寫該 pattern 在某個具體任務的應用(那是情境檢討層)
  • 卡片可被多篇情境檢討篇共同引用

層級混淆的失敗模式

失敗模式表現
抽象原則寫具體 case變成又一篇情境檢討、跟對應實作篇重複
情境檢討寫成 Pattern 卡片變成「這個做法的完整指引」、失去「這次任務」脈絡
Pattern 卡片寫成情境檢討變成「這次我用 X 做了 Y」、失去 pattern 跨情境可重用性

寫之前自問:「這篇是給『遇到同類問題的讀者』看、還是給『要套用某個 pattern 的讀者』看、還是給『要學一條跨情境原則的讀者』看?」答案決定該寫哪一層。


抽象層辨識訊號

抽象層卡片不是隨意添加的、有明確觸發訊號:

訊號行動
多篇實作隱含同一原則但都沒寫出來抽出抽象層卡片
寫第三篇 X 類情境時、自我意識「這條原則我已經講過三次」抽出抽象層卡片、之後三篇引用即可
三篇實作篇都用「2 次門檻」當隱含假設抽出抽象層卡片明寫

反訊號(不該抽抽象層):

  • 只有兩篇看似相關 — 證據不足、可能只是巧合相似
  • 抽出來後讀者沒有獨立 grep 該抽象層的需求
  • 抽象層內容會跟某篇實作篇高度重疊(表示原則跟情境綁太緊、抽不出真正的抽象)

抽象層是精煉、不是分類 — 必須有獨立的「機制 / 為什麼」可寫、不只是把幾篇實作篇的標題列在一起。


Pattern 卡片辨識訊號

Pattern 卡片從情境檢討的「設計取捨段落」中抽出。判讀訊號:

訊號行動
取捨段落某選項的內容超過 3-4 個段落評估抽 Pattern 卡片
寫到「這個做法在 #N 也有用到」第二次抽 Pattern 卡片、之後多篇共用
該選項有獨立的失敗模式 / 設計細節 / 應用範例適合抽
取捨段落變成「我先把這個 pattern 完整說完、再講其他選項」該抽、不然取捨段落失衡

反訊號(不該抽 Pattern 卡片):

  • 該選項只在「容忍度」這類單一參數上跟其他選項不同 — 留 inline、抽出收益低
  • 該選項是反模式、沒有獨立應用情境 — 留 inline 當對比
  • 該選項只在這一篇出現、未來不太可能被其他篇引用 — 留 inline

核心判準:抽出後是否多篇受惠?只有一篇用到、抽出純粹是 fragmentation。


素材庫與情境比例設計

跨多篇文章需要同時管理「讀者會看到的情境」與「作者用來支撐情境的素材」。文章情境負責教讀者推演,素材庫負責支撐反向驗證、壓力變體與後續擴寫;兩者的數量不必相同。

比例原則

當一組文章要靠真實案例、研究來源或事件材料支撐時,採「少情境、多素材」比例。文章只選 4-5 個主情境,素材庫保留約 2-3 倍的 field cases 或 source cards。

建議數量責任
主文章情境4-5 個讓讀者看完後能實際演練或套用
Field cases / source cards10-12 張支撐情境、反向驗證、補壓力變體
Scenario cards4-5 張把多個來源轉成可重播的中性情境
Pattern cards5-7 張抽出跨情境共用的做法與判讀欄位

比例的核心是讓每個主情境背後至少有 2-3 個來源可支撐。這樣文章能保持可讀,素材庫也能提供足夠的反例、變體與後續延伸材料。

Source-first 規則

Field case 的責任是保存可回溯材料。案例型素材先找來源,再抽出觀察、壓力、控制缺口、判讀訊號與可轉譯情境。

Scenario card 的責任是把來源轉譯成可演練情境。情境可以把多個來源合成中性服務壓力,但每個主要壓力點都要能回查到 field case 或 source card。

Pattern card 的責任是歸納。模式可以比單一案例更抽象,但要保留支撐來源、適用邊界、判讀訊號與下一步路由。

何時補素材庫

訊號行動
每個 scenario 只靠 1 個來源支撐先補 field cases,再改文章
情境看起來合理但缺少真實壓力查來源,補 defender / operator pressure
文章只能展示 4-5 個情境,但後續還要擴寫素材庫維持 2-3 倍來源量
Pattern card 只有單一案例支撐補第二個來源或降低抽象層級

何時停止補素材

素材庫達到「每個主情境 2-3 個來源、每個 pattern 至少 1-2 個支撐案例」後,就先停止擴充。繼續補素材的收益會下降,下一步應轉向寫文章、跑 review,或把素材回寫到 MOC。


MOC(Map of Content)設計

跨多篇 collection 的入口(collection index / README / TOC)是 MOC、不是內容。

入口的職責邊界

職責是否屬於 MOC
列出所有篇、各一行 hook
按情境分組(路徑 / 場景導讀)
解釋這個 collection 是什麼是(簡短)
重述各篇的「概要」「outline」(各篇本身已存在、是冗餘)
寫實質內容(症狀對應位置表)(屬於某篇文章內、抽出獨立篇)

每條索引條目格式

1- [#N 標題](slug/) — 一句話 hook(≤ 150 字)

關鍵約束:

  • 一行為限、不超過 150 字
  • Hook 講「這篇講什麼問題」、不重述「該怎麼做」
  • 連結用 slug、不用標題(grep 友善)

場景導讀

按任務情境列出多篇路徑、是 MOC 的合理擴展:

1### 路徑 N:[任務情境]
2`#A 標題``#B 標題``#C 標題`
3
4[一兩句說明這條路徑的閱讀邏輯]

每條路徑長度 3-5 篇、長度超過表示「這條情境本身需要一篇 master」。

MOC 該避免的內容

反模式為什麼避免
大綱式內容(每篇下面寫「涵蓋情境」+「理想做法」)跟各篇本身重複、各篇自己已寫
「待補完」狀態標記長期不更新索引變成 staleness 來源、誤導讀者
多層巢狀(「這個是 X、X 包含 A B C、A 包含 a1 a2」)讀者迷失導航、超過引用一層深
各篇的判讀徵兆都列在 MOC那是文章內容、MOC 只給入口

跨篇引用 protocol

多篇 collection 內互相引用是常態、但要有紀律:

引用要說明「為什麼」

好的引用

具體做法(@import url(...) layer(...))與升級兼容性、其他外部組件的 layer 策略,由 [#24 CSS Layers 取代 specificity 戰] 完整展開。在邊界辨識上、本篇要記住的是:遇到 specificity 30+ 的覆寫戰、改去看 layer 維度。

不好的引用

另見 #24。

差別是:好引用告訴讀者「為什麼引這個、引去看什麼」、不好引用要讀者自己猜。

引用最多一層深

A 引 B、B 引 C — 讀者從 A 出發、要看完 A + B + C 才能理解、認知負擔過大。

修正方式:

  • 把 C 的關鍵點濃縮進 B、B 自包含
  • 或把 B 從引用鏈中移除、A 直接連 C

引用方向避免循環

A 引 B、B 也引 A — 讀者在兩篇之間來回跳、永遠不知道哪篇是「主」。

通常這表示抽象層缺漏 — A 跟 B 都在援引一個沒寫出來的共同概念、那個概念該抽成抽象層。

引用 idiom 庫

從實際 corpus 累積的引用句型、各有適用情境。讀者看到這些句型就知道引用的責任分工:

Idiom 1:抽象 ← 情境(情境檢討引用抽象層)

1> 本篇是 [#42 2 次門檻](path/) 抽象原則在「驗證工具切換」這個面向的應用。
  • 位置:情境檢討文章開頭、核心原則段落之後
  • 效果:讀者一眼知道「這篇是某抽象原則的具體應用」、可以選擇先讀抽象層理解 mechanism、或直接讀本篇學具體做法
  • 適用:情境檢討文章、有對應的抽象層原則時

Idiom 2:責任分工(拆分後篇章互相聲明範圍)

1> 本篇焦點:客製 UI 該放哪。
2> - **framework 元件本身需要動時的安全規則**由 [#13 JS 操作 framework 元件](path/) 處理
  • 位置:核心原則段落之後、為什麼段落之前
  • 效果:明確劃分「本篇 vs 相關篇」的責任邊界、避免讀者期待錯
  • 適用:拆分過的篇章群(例如 #5/#13 拆分後互相聲明)

Idiom 3:內聯引用(段落內援引另一篇處理細節)

1具體做法(`@import url(...) layer(...)`)與升級兼容性、其他外部組件的
2layer 策略、由 [#24 CSS Layers](path/) 完整展開。在邊界辨識上、
3本篇要記住的是:遇到 specificity 30+ 的覆寫戰、改去看 layer 維度。
  • 位置:段落正文中、講到引用篇主題的地方
  • 效果:讀者拿到「為什麼引、引去看什麼、本篇仍要記住什麼」三件資訊
  • 適用:段落主題跟引用篇高度重疊、不適合在本篇重述

Idiom 4:MOC 連結(索引條目)

1- [#42 2 次門檻:第一次是運氣、第二次是訊號](path/) — 串 #11 / #15 / #20 / #23、跨工具/測試/思路/溝通四面向
  • 位置:collection index / MOC
  • 效果:標題 + 一句話 hook、讓讀者選擇要不要進入該篇
  • 格式- [#N 標題](slug/) — hook(≤ 150 字)

Idiom 5:跨原則的關係表(抽象層之間互相對位)

1| 抽象層原則 | 跟本原則的關係 |
2|---------|-------------|
3| [#43 最小必要範圍](path/) | 「最小必要範圍」聚焦「縮影響範圍」、本篇聚焦「縮值來源數」、兩者都是「讓行為可預測」的不同面向 |
  • 位置:抽象層原則篇的「跟其他原則的關係」段落
  • 效果:讀者看到原則網的形狀、知道哪些原則可以一起援引

Idiom 6:對應的實作篇表(抽象 → 情境 / pattern)

1| 篇 | 議題 | 範圍對象 |
2|----|------|---------|
3| [#13 元件邊界與 JS 操作](path/) | JS 元件邊界 | 「我可以動什麼」契約 |
4| [#14 Selector 精準度](path/) | DOM query 範圍 | 起點 / 範圍 / 過濾三維度 |
  • 位置:抽象層原則篇結尾
  • 效果:讀者依議題挑實作篇、不需要逐篇讀

三層 structure 詳細對照

跨多篇 collection 中、三類文章各有不同的 standard structure。對照表先給快速判斷依據、之後是各類完整模板。

段落對照表

段落情境檢討抽象層原則Pattern 卡片
核心原則 / 核心做法
為什麼(商業邏輯 / 機制)
這次任務情境
設計取捨 A/B/C/D
跨情境的應用面向
適合 / 不適合(在設計取捨內)有(適用邊界)
設計細節(在執行段內)
跟其他做法 / 原則的關係有,簡短有,明文有,橫向對照
對應的實作篇
應用範例(在執行段內)
判讀徵兆

分類錯了、structure 也錯。寫文章前先判斷:

  • 「這篇是某次任務的紀錄嗎?」→ 情境檢討
  • 「這篇是跨多情境的元規則嗎?」→ 抽象層原則
  • 「這篇是某做法的深入指引嗎?」→ Pattern 卡片

情境檢討 structure 模板

 1## 核心原則
 2[一句話、加粗]
 3
 4## 為什麼 [這個議題重要]
 5### 商業邏輯
 6### [可能的子議題]
 7
 8## 這次任務的實際情境
 9### 觀察
10### 判讀
11### 執行
12
13## 設計取捨:[維度]
14### A:[做法](這個專案的預設)
15### B:[替代]
16### C:[另一條路]
17### D:[極端 / 反模式]
18
19## 跟其他原則的關係(選用)
20
21## 判讀徵兆

抽象層原則 structure 模板

 1## 核心原則
 2[一句話、加粗]
 3
 4## 為什麼 [這條原則成立]
 5### [機制:為什麼這條規則在多情境都成立]
 6
 7## [這條原則的多個應用面向]
 8### 應用 1:[情境名](→ 實作篇 #N)
 9### 應用 2:[情境名](→ 實作篇 #M)
10### 應用 3:...
11
12## 不該套用 [本原則] 的情境
13[適用邊界]
14
15## 跟其他原則的關係
16[本原則跟其他抽象層原則的關係]
17
18## 對應的實作篇
19[一個表、列出每篇示範的面向]
20
21## 判讀徵兆

抽象層的取捨在情境邊界、不在方案選項。抽象層讀者面對的決定是「我這次的情境該不該套用這條原則」 — 答案在「適用 vs 不適用的情境邊界」、不在「四個並列方案中選一個」。所以抽象層的對應段落是「不該套用 X 的情境」(邊界釐清)、而非「設計取捨 A/B/C/D」(方案選擇)。

Pattern 卡片 structure 模板

 1## 核心做法
 2[做法簡述、code 範例]
 3
 4## 這個做法存在的價值
 5[為什麼這個做法獨立存在、什麼是它獨有的]
 6
 7## 適合的情境
 8[表格:情境 / 為什麼合理]
 9
10## 不適合的情境
11[表格:情境 / 為什麼不夠 / 改用 #N 其他 pattern]
12
13## 設計細節
14[實作的具體技巧、邊界 case 處理]
15
16## 跟其他 pattern 的關係
17[橫向比較同維度的其他 pattern、引用情境檢討的設計取捨段落]
18
19## 應用範例
20[具體 code 範例]
21
22## 判讀徵兆

Pattern 卡片的取捨在橫向對照、不在自家 A/B/C/D。Pattern 卡片本身是某情境檢討「設計取捨 A/B/C/D」中的一個選項(例如某「document query」就是「起點選擇」中的選項 A)。它的讀者面對的決定是「什麼時候用這個 pattern」 — 答案在「跟同維度其他 pattern 的橫向對照」、而非「自家內再分 A/B/C/D」。所以 Pattern 卡片的對應段落是「跟其他 pattern 的關係」(橫向)、而非「設計取捨 A/B/C/D」(縱向)。

structure 分類錯誤的徵兆

徵兆分類錯誤
抽象層原則寫了「這次任務的實際情境」寫成情境檢討 — 抽象層該講機制、不該講某次任務
抽象層原則硬擠 A/B/C/D 設計取捨抽象層該談「適用邊界」、不是方案選項
Pattern 卡片硬擠 A/B/C/D 設計取捨Pattern 卡片該用「跟其他 pattern 橫向對照」
情境檢討跳過「設計取捨」段落情境檢討的核心就是記錄「這次選了什麼、為什麼」
三類文章共用同一個段落 template每類讀者問題不同、template 也該不同

拆分判準:focus 是議題完整度

當不確定一篇該不該拆、判讀的核心問題是:「這篇文章聚焦在什麼問題?有沒有議題切了一半?

兩個常見誤判

誤判為什麼錯
「兩篇沒衝突 → 不需要拆」兩篇可能各切了一半同樣議題、誰都沒講完整
「邊界很清晰 → 不需要拆」篇章內部仍可能塞了兩個獨立議題、傘式標題遮蓋發散

寫作 / review 雙階段自問

寫作時、寫完先自問三題:

  1. 這篇聚焦的問題用一句話能說完嗎?
  2. 內文每段都服務這個問題嗎?
  3. 有沒有段落像是「順便提一下」的離題內容?

任一題答否、檢視該段是否該拆 / 移除 / 補進其他篇。

review 時、讀完先問三題:

  1. 這篇實際聚焦在什麼問題(不看標題、看內文判斷)?
  2. 標題與內文焦點對得起來嗎?
  3. 有沒有兩個獨立議題各佔半篇?

兩階段共同特徵:都需要讀完內文、不能只看大綱。大綱式 review 看不出議題切了一半、看不出語氣絕對主義、看不出 focus 發散。

議題切了一半的辨識訊號

  • 標題用「+」「與」「以及」綁兩個獨立概念
  • 內文有兩段獨立的「為什麼這個機制成立」、各對應一個概念
  • 讀者通常一次只 grep 其中一個關鍵字
  • 列出讀者最可能 grep 的 3 個關鍵字、發現一個關鍵字無法涵蓋全文
  • 即使不衝突、仍該拆

反例 vs 正例

反例:標題「Selector + Observer 精準度」、合在一篇

  • 雖然都用「精準度」這個傘綁、機制完全不同(同步查詢 vs 非同步監聽)
  • 讀者來查「我的 selector 撈太多」只關心 selector 半邊
  • 讀者來查「我的 observer 觸發太頻繁」只關心 observer 半邊
  • 沒有人會兩個問題同時問

正例:拆成兩篇「Selector 精準度」+「Observer 範圍與觸發頻率」、各自完整深入。

拆分後的次要判準

議題完整度(focus)通過後、再看共用價值與獨立可讀性:

判準問題行動
共用價值拆出來的卡片會被多篇引用嗎?是 → 拆出成共用素材;否 → 留 inline
獨立可讀性拆出的卡片自己能成立嗎?有獨立「機制 / 適用情境 / 失敗模式」可寫 → 能成立

不該當判準的偽指標

  • 行數多寡:8KB 的文章可能 focus 緊、3KB 的文章可能議題切兩半
  • 篇章邊界是否清晰:兩篇沒衝突 ≠ 各自完整
  • 寫的時候是否方便:方便不是優先序

完成標準

寫完後讀者能用一句話說出「這篇在講什麼問題」、且這句話精確到「換成同義不同詞也能說清楚」。若讀者要用兩句話才能涵蓋、表示有兩個議題、該拆。


review 與重構訊號

定期回顧 collection、看下列訊號:

訊號重構動作
多篇用同樣 case 當例子抽抽象層、各篇引用
一篇有 5+ 個取捨段落評估抽 Pattern 卡片
索引重複「概要」+「文章本身」索引瘦身
標題與內文焦點不一致改名 / 重寫 / 拆篇
寫新篇時發現「我這個 pattern 已經在 #N 寫過了」抽 Pattern 卡片、新篇引用
大綱式 review 通過、實際讀內文發現問題review process 必須讀內文

大綱式 review 的限制

只看標題與大綱、無法判讀:

  • 文章內議題是否切了一半
  • 語氣是否絕對主義
  • 各段落是否服務同一個 focus
  • 引用是否有實質說明

review 必須讀實際內文 — 大綱只能看「topic 對不對」、不能看「議題完整度 / 語氣 / focus」。


自檢清單

跨多篇 collection 提交前自檢:

  • 三層結構就位(抽象原則 / 情境檢討 / Pattern 卡片各層該有的有)
  • 各篇的層級不混淆(抽象層不寫具體 case、情境層不寫成 pattern 完整指引)
  • MOC 入口只做路由、無大綱式冗餘
  • MOC 每條索引一行、不超過 150 字
  • 跨篇引用都說明了「為什麼引用、引去看什麼」
  • 沒有 A→B→C 多層跳躍引用
  • 沒有 A↔B 雙向循環引用(若有、抽抽象層)
  • 沒有議題切了一半的篇章(標題與內文焦點一致)
  • 機會成本語氣跨篇一致(沒有混用「正確概念」與「預設選擇」)
  • 「待補完」狀態標記都更新或移除

與核心原則的映射

本 reference 規則對應核心原則說明
三層結構原子化 + 索引建立各層卡片獨立、層間用引用串成網
抽象層辨識原子化 + 意圖顯性把跨情境的隱含原則明寫成獨立卡片
Pattern 卡片辨識原子化 + 可重用性把可跨情境共用的做法抽成獨立素材
素材庫比例設計索引建立 + 可重用性文章保留少數主情境、素材庫保留更多來源
MOC 入口只做路由索引建立入口不承載細節、避免重複
跨篇引用要說明為什麼意圖顯性引用本身要表達意圖、不只連結
議題完整度優先原子化拆分依據是 focus、不是邊界
review 讀內文不只大綱可查詢性 + 意圖顯性內文是 source of truth、大綱可能 stale

Last Updated: 2026-04-30 Version: 0.4.0 — 補「素材庫與情境比例設計」:文章主情境維持 4-5 個、field/source 素材維持約 2-3 倍;新增 source-first、scenario 轉譯與 pattern 歸納規則,避免以自行生成情境取代可回溯素材 Version: 0.3.0 — 從 writing-articles.md 過載反思整合內容:「拆分判準(focus 是議題完整度)」完整搬入(含寫作 / review 自問三題、議題切一半的辨識訊號、反例 vs 正例、完成標準)+「三層 structure 詳細對照」展開為完整模板(情境 / 抽象 / Pattern 各一份)+「structure 分類錯誤的徵兆」清單。現在這份 reference 完整涵蓋「跨多篇相關文章的結構設計」、不需要回 writing-articles.md 找 Version: 0.2.0 — 從批量改寫 35 篇的經驗回流:補「跨篇引用 idiom 庫」(6 種句型 + 適用情境)+「三層 structure 對照」(quick reference、詳細在 writing-articles.md 規則九) Version: 0.1.0 — 初版(從 report folder 累積 50+ 篇文章、整理跨篇結構心得)