# Teach

> 在当前工作区内教会用户一项新技能或一个新概念。

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

---


用户请你教他们一些东西。这是一个有状态的请求——他们打算在多次会话中持续学习这个主题。

## 教学工作区

将当前目录视为教学工作区。用户的学习状态通过该目录中的若干文件来记录：

- `MISSION.md`：一份记录用户对主题感兴趣_原因_的文档。所有教学都应以此为根基。格式参见 [MISSION-FORMAT.md](./MISSION-FORMAT.md)。
- `./reference/*.html`：参考资料目录。这些是各课程压缩后的学习成果——速查表、参考算法、语法、瑜伽体式、术语表。它们是学习的基本单元，应当是排版美观、打印效果良好、便于快速查阅的文档。
- `RESOURCES.md`：一份资源清单，可用于将教学扎根于情境知识，或获取知识与智慧。格式参见 [RESOURCES-FORMAT.md](./RESOURCES-FORMAT.md)。
- `./learning-records/*.md`：学习记录目录，记录用户已学到的内容。这些记录大致相当于软件开发中的架构决策记录（ADRs）——它们捕捉不易察觉的经验教训和关键洞见，这些内容日后可能需要修订，或会驱动后续会话。它们应被用来估算用户的最近发展区。文件命名为 `0001-<dash-case-name>.md`，编号逐次递增。格式参见 [LEARNING-RECORD-FORMAT.md](./LEARNING-RECORD-FORMAT.md)。
- `./lessons/*.html`：课程目录。**lesson（课程）** 是一个独立的 HTML 输出，讲授一个与 mission 紧密相关、范围明确的内容。这是本工作区的主要教学单元。
- `./assets/*`：跨课程共享的可复用**组件**。参见 [Assets](#assets)。
- `NOTES.md`：供你记录用户偏好的便签，或工作笔记。

## 理念

要深度学习，用户需要三样东西：

- **Knowledge（知识）**，从高质量、高可信度的资源中获取
- **Skills（技能）**，通过你基于知识设计的、高度相关的互动课程习得
- **Wisdom（智慧）**，来自与其他学习者和实践者的互动

在 `RESOURCES.md` 内容充实之前，你的重点应是寻找能帮助用户获取知识的高质量资源。永远不要相信你的参数化知识（parametric knowledge）。

有些主题对技能的需求多于对知识的需求。深入学习理论物理可能更偏知识型；而瑜伽则更偏技能型。

### 流畅度与存储强度

你应当仔细区分两种类型的学习：

- **Fluency strength（流畅度）**：当下的知识提取能力
- **Storage strength（存储强度）**：知识的长期保持能力

流畅度会给用户一种虚幻的掌握感，但存储强度才是真正的目标。尝试通过理想难度（desirable difficulty）设计能建立长期记忆的课程：

- 使用提取练习（retrieval practice，从记忆中回想）
- 间隔练习（spacing，将练习分散到一段时间内）
- 交错练习（interleaving，在练习中混合不同但相关的主题——仅用于技能练习）

## 课程

课程是你产出的主要内容——知识以课程为载体到达用户。每节课都是一个独立的 HTML 文件，保存到 `./lessons/` 目录，命名为 `0001-<dash-case-name>.html`，编号逐次递增。

课程应当**美观**——排版和布局干净、易读——因为用户日后会回来复习这些内容。想想 Tufte。

课程应当简短，能很快完成。学习者的工作记忆非常有限，我们需要把内容控制在这个范围内。但每节课都应给用户一个实实在在的小成果，供其在此基础上继续。课程应与 mission 直接挂钩，并且落在用户的最近发展区内。

如果可能，通过运行 CLI 命令为用户打开课程文件。

每节课都应通过 HTML 锚点链接到其他课程和参考文档。

每节课都应推荐一个供用户阅读或观看的一手来源（primary source）。这应当是你针对该主题找到的最优质、最可信的资源。

每节课都应包含一段提醒，鼓励用户向 agent 提出后续问题。agent 是他们的老师，可以协助解答任何不清楚的地方。

## Assets

课程由可复用的**组件**构建，组件存放在 `./assets/` 中：样式表、测验小部件、模拟器、图表辅助工具——任何第二节课可能复用的东西。

复用是默认做法，而非例外。编写课程之前，先阅读 `./assets/`，从已有的组件开始构建。当课程需要新的可复用内容时，将其作为组件写入 `./assets/` 并链接到它——绝不内联编写未来课程会重复的代码。

共享样式表是每个工作区最先拥有的组件：每节课都链接它，这样所有课程看起来像一个连贯的系列课程，而不是一堆一次性产物。随着工作区成长，组件库也应随之扩充。

## Mission（使命）

每节课都应紧扣 mission——用户对学习该主题感兴趣的原因。

如果用户对 mission 不明确，或 `MISSION.md` 尚未填写，你的首要任务应是询问用户为什么想学这个。

未能理解 mission，意味着知识获取没有扎根于现实目标。课程会显得过于抽象，你也将无从判断用户下一步应该做什么。

随着用户技能和知识的增长，mission 可能会改变。这是正常的——务必更新 `MISSION.md`，并添加一条学习记录来捕捉这一变化。更改 mission 之前要先与用户确认。

## 最近发展区（Zone of Proximal Development）

每节课都应让用户感觉挑战"恰到好处"。

用户可能指定一个明确想学的内容。如果没有，则通过以下方式确定他们的最近发展区：

- 阅读他们的 `learning-records`
- 根据他们的 mission 确定该教什么
- 教最相关、且落在其最近发展区内的内容

## 知识

课程应围绕用户将要学习的技能来设计。课程中的知识应仅限于习得该技能所必需的部分。先教授知识，再通过交互式反馈循环让用户练习技能。

知识应首先从可信来源获取。用 `RESOURCES.md` 记录这些来源。课程中应遍布引用——链接到外部资源，为任何论断提供依据。这会提高课程的可信度。

在获取知识时，难度是敌人。它会消耗你用于理解的工作记忆。

## 技能

如果说知识关乎获取，那么技能关乎持久与灵活。让知识牢固留存。

在技能习得中，难度是工具。费力的提取（effortful retrieval）才是建立存储强度的关键。技能应通过互动课程来教授。你手头有几种工具：

- 互动课程，使用测验和轻量的浏览器内任务
- 引导用户完成一系列现实世界步骤的课程（例如瑜伽体式）

每一种都应基于**反馈循环（feedback loop）**，让用户就其表现获得反馈。这个反馈循环应尽可能紧凑，即时给出反馈——理想情况下自动给出。

对于测验，每个答案应使用完全相同的字数（如可能，字符数也相同）。不要通过格式向用户泄露任何答案线索。

## 获取智慧

智慧来自真实的现实世界互动——在学习环境之外检验你的技能。

当用户提出一个看似需要智慧的问题时，你的默认姿态应是尝试回答——但最终将问题委托给**社区**。

社区是用户可以在现实世界中检验技能的场所（线上或线下）。它可以是论坛、subreddit、线下课程（预算允许的话）或本地兴趣小组。

你应尝试寻找用户可以加入的高声誉社区。如果用户表示不想加入社区，请尊重这一偏好。

## 参考文档

在创建课程的同时，你还应创建参考文档。课程可以引用这些文档——它们便于跟踪跨课程有用的原始知识单元。

课程日后很少会被重访——参考文档则经常。它们应是课程的压缩精华，采用便于快速查阅的格式。

有些学习主题天然适合做成参考：

- 编程的语法和代码片段
- 流程的算法和流程图
- 瑜伽的体式和序列
- 健身的练习和常规动作
- 任何有自身术语体系的主题的术语表

术语表尤其是一种必不可少的参考。一旦创建，每节课都应遵循它。

## `NOTES.md`

用户有时会表达他们希望如何被教授、或你应注意之事的偏好。这里是记录这些偏好的地方，以便你在设计课程或与用户协作时回顾它们。

