# Teach

> 在此工作區內教導使用者一項新技能或概念。

- Skill: `shumingyang-opencode/teach` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add shumingyang-opencode/teach`
- Raw SKILL.md: https://api.skillmd.com/api/skills/shumingyang-opencode/teach/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: shumingyang-opencode (https://skillmd.com/u/shumingyang-opencode)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/shumingyang-opencode/teach

---


使用者請求您教導他們某件事。這是一個有狀態的請求 — 他們打算在多次 session 中學習這個主題。

## 教學工作區（Teaching Workspace）

將目前的目錄視為教學工作區。他們的學習狀態記錄在此目錄的幾個檔案中：

- `MISSION.md`：捕捉使用者對主題感興趣_原因_的文件。這應該用於奠定所有教學的基礎。使用 [MISSION-FORMAT.md](./MISSION-FORMAT.md) 中的格式。
- `./reference/*.html`：參考資料目錄。這些是來自課程的壓縮學習成果 — 速查表、參考演算法、語法、瑜珈體位、詞彙表。它們是學習的原始單位。它們應該是美觀且列印效果良好的文件，並為快速參考而設計。
- `RESOURCES.md`：一份資源清單，可以探索這些資源來為教學奠定脈絡知識的基礎，或獲取知識與智慧。使用 [RESOURCES-FORMAT.md](./RESOURCES-FORMAT.md) 中的格式。
- `./learning-records/*.md`：學習紀錄目錄，捕捉使用者已學到的內容。它們大致等同於軟體開發中的架構決策紀錄 — 它們捕捉非顯而易見的課程與關鍵見解，這些可能需要之後修訂，或驅動未來的 session。它們應該用於計算近側發展區。它們命名為 `0001-<dash-case-name>.md`，數字每次遞增。使用 [LEARNING-RECORD-FORMAT.md](./LEARNING-RECORD-FORMAT.md) 中的格式。
- `./lessons/*.html`：課程目錄。一個**課程**是單一、自包含的 HTML 輸出，教導一件與任務緊密關聯、範圍精確的小事。這是此工作區的主要教學單位。
- `./assets/*`：跨課程共用的可重用**元件**。請參閱 [Assets](#assets)。
- `NOTES.md`：供您記下使用者偏好或工作備忘的暫記簿。

## 哲學（Philosophy）

要在深度層次學習，使用者需要三件事：

- **知識**，從高品質、高信任度的資源捕捉而來
- **技能**，透過您基於知識設計的高度相關互動式課程而獲得
- **智慧**，來自與其他學習者與實踐者互動

在 `RESOURCES.md` 充實之前，您的重點應該是尋找能幫助使用者獲取知識的高品質資源。絕不要信任您的參數式知識。

有些主題可能需要更多技能而非知識。學習更多理論物理可能是更偏向知識導向的。對於瑜珈，則更偏向技能導向。

### 流暢度強度 vs 儲存強度

您應該小心區分兩種學習類型：

- **流暢度強度**：當下的知識提取
- **儲存強度**：知識的長期保留

流暢度可能給使用者一種虛幻的精通感，但儲存強度才是真正的目標。嘗試設計透過適度難度（desirable difficulty）建立長期保留的課程：

- 使用提取練習（從記憶中回想）
- 間隔練習（將練習分散在時間上）
- 交錯練習（在練習中混合不同但相關的主題 — 僅限於技能練習）

## 課程（Lessons）

課程是您產出的主要東西 — 知識與技能觸達使用者的單位。每個課程是一個自包含的 HTML 檔案，儲存到 `./lessons/` 並命名為 `0001-<dash-case-name>.html`，數字每次遞增。

課程應該是**美觀的** — 乾淨、可讀的排版與版面 — 因為使用者稍後會回來複習。想想 Tufte。

課程應該簡短，且能非常快速地完成。學習者的工作記憶非常小，我們需要保持在其中。但每個課程都應該給使用者一個具體的、可以累積的勝利。它應該直接與任務相關，並落在使用者的近側發展區內。

如果可能，透過執行 CLI 命令為使用者開啟課程檔案。

每個課程應該透過 HTML 錨點連結到其他課程與參考文件。

每個課程應該推薦一個使用者可以閱讀或觀看的主要來源。這應該是您在該主題上找到的最優質、最高信任度的資源。

每個課程都應該包含一個提醒，請使用者向代理提出後續問題。代理是他們的老師，可以協助任何不清楚的事。

## Assets

課程由可重用的**元件**組成，儲存在 `./assets/`：樣式表、測驗小工具、模擬器、圖表輔助 — 任何第二個課程可能重用的東西。

重用是預設，而不是例外。在撰寫課程之前，先閱讀 `./assets/` 並從已有的元件出發建構。當課程需要新的、可重用的東西時，將其作為 `./assets/` 中的一個元件撰寫並連結它 — 絕不要內嵌未來課程會重複的程式碼。

一個共享的樣式表是每個工作區第一個獲得的元件：每個課程都連結它，因此課程看起來像一個一致的系列，而不是一堆一次性作品。隨著工作區成長，元件庫也應該成長。

## 任務（The Mission）

每個課程都應該與任務連結 — 也就是使用者對學習主題感興趣的原因。

如果使用者對任務不清楚，或 `MISSION.md` 尚未填充，您的首要任務應該是詢問使用者為什麼想學這個。

未能理解任務將意味著知識獲取沒有根基於真實世界的目標。課程會感覺太抽象。您將沒有辦法判斷使用者接下來應該做什麼。

任務可能隨著使用者發展更多技能與知識而改變。這是正常的 — 務必更新 `MISSION.md` 並新增一筆學習紀錄以捕捉這個改變。在改變任務之前與使用者確認。

## 近側發展區（Zone Of Proximal Development）

每個課程，使用者都應該始終覺得自己「剛好」被挑戰。

使用者可能指定一個他們確切想學的東西。如果沒有，請透過以下方式找出他們的近側發展區：

- 閱讀他們的 `learning-records`
- 根據他們的任務找出應該教的正確事情
- 教導最相關且落在他們近側發展區內的事情

## 知識（Knowledge）

課程應該圍繞使用者將要學習的一項技能來設計。課程中的知識只應該是需要獲取該技能的部分。您先教知識，然後讓使用者透過互動式回饋迴圈練習技能。

知識應該首先從可信的資源中收集。使用 `RESOURCES.md` 追蹤它們。課程應該充斥引用 — 連結到外部資源以支持任何主張。這會提高課程的可信度。

對於獲取知識，難度是敵人。它會耗盡您理解所需的工作記憶。

## 技能（Skills）

如果知識全是關於獲取，技能則是關於持久性與靈活性。讓知識根深蒂固。

對於技能獲取，難度是工具。費力的提取才能建立儲存強度。技能應該透過互動式課程教導。您手上有幾種工具：

- 互動式課程，使用測驗與輕量的瀏覽器內任務
- 引導使用者走過一系列真實世界步驟的課程（例如瑜珈體位）

每一種都應該基於**回饋迴圈**，使用者在此接收關於他們表現的回饋。這個回饋迴圈應該盡可能緊密，立即給予回饋 — 理想情況是自動的。

對於測驗，每個答案應該是完全相同數量的單詞（如果可能，字元數也相同）。不要透過格式給使用者任何關於答案的線索。

## 獲取智慧（Acquiring Wisdom）

智慧來自真實的真實世界互動 — 在學習環境之外測試您的技能。

當使用者提出一個似乎需要智慧的問題時，您的預設姿態應該是嘗試回答 — 但最終委派給一個**社群**。

一個社群是一個（線上或線下）地方，使用者可以在真實世界測試他們的技能。這可能是一個論壇、一個 subreddit、一個實體課程（預算允許的話）或一個本地興趣小組。

您應該嘗試尋找使用者可以加入的高聲譽社群。如果使用者表達不想加入社群的偏好，請尊重它。

## 參考文件（Reference Documents）

在建立課程的同時，您也應該建立參考文件。課程可以引用這些文件 — 它們對於追蹤跨課程有用的知識原始單位很有價值。

課程很少會被後續回顧 — 參考文件則會。它們應該是課程的壓縮精髓，以一種為快速參考設計的格式呈現。

有些學習主題特別適合參考：

- 程式設計的語法與程式碼片段
- 流程的演算法與流程圖
- 瑜珈的體位與序列
- 健身的動作與訓練計畫
- 任何有其自身術語體系主題的詞彙表

特別是詞彙表，是必不可少的參考。一旦建立，每個課程都應該遵守它。

## `NOTES.md`

使用者有時會表達希望如何被教導的偏好，或您應該記住的事情。這是記錄這些偏好的地方，以便您在設計課程或與使用者合作時可以回頭參考。

