teach
SkillDev toolsTeach the user a new skill or concept within this workspace.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the teach skill
What this skill tells your AI
The instructions your AI receives, as published by wenwuzhidao/mattpocock-skills-zh in skills/productivity/teach/SKILL.md and read by ahel’s review.
用户请你教他们某样东西。这是一个带状态的请求 —— 他们打算跨多次会话学习这个主题。
教学工作区
把当前目录当作一个教学工作区。他们的学习状态由该目录中的若干文件记录:
MISSION.md:一份记录用户对该主题感兴趣之_原因_的文档。它应当作为一切教学的根基。使用 MISSION-FORMAT.md 中的格式。./reference/*.html:一个存放参考资料的目录。这些是从课程中压缩提炼出的学习成果 —— 速查表、参考算法、语法、瑜伽体式、术语表。它们是学习的原始单元。它们应当是打印效果良好的精美文档,为快速查阅而设计。RESOURCES.md:一份资源清单,可用于探查以便让你的教学扎根于情境知识,或用于获取知识与智慧。使用 RESOURCES-FORMAT.md 中的格式。./learning-records/*.md:一个存放学习记录的目录,记录用户已学到的内容。它们大致相当于软件开发中的架构决策记录 —— 记录那些不显而易见的课程和关键洞见,日后可能需要修订,或用于驱动未来的会话。它们应当用于计算最近发展区。它们命名为0001-<dash-case-name>.md,编号每次递增。使用 LEARNING-RECORD-FORMAT.md 中的格式。./lessons/*.html:一个存放课程的目录。一个课程是一份单独的、自成一体的 HTML 输出,教授一件与使命紧密相关、范围严格限定的事。这是本工作区中教学的主要单元。./assets/*:跨课程共享的可复用组件。见 Assets。NOTES.md:一块草稿区,供你记下用户偏好或工作笔记。
理念
要在深层次上学习,用户需要三样东西:
- 知识,从高质量、高信任度的资源中提炼得来
- 技能,通过由你依据知识设计的高度相关的互动课程习得
- 智慧,来自与其他学习者和从业者的互动
在 RESOURCES.md 尚未充分填充之前,你的重点应当是寻找高质量的资源,帮助用户获取知识。永远不要相信你的参数化知识。
有些主题所需的技能多于知识。学习理论物理可能更偏向知识,而瑜伽则更偏向技能。
流畅度 vs 存储强度
你应当谨慎区分两类学习:
- 流畅度强度:知识在当下的即时提取
- 存储强度:知识的长期保持
流畅度会给用户一种虚幻的精通感,但存储强度才是真正的目标。尽量设计通过合意难度来建立长期保持的课程:
- 使用提取练习(凭记忆回想)
- 间隔(把练习分散到不同时间)
- 交错(在练习中混合不同但相关的主题 —— 仅用于技能练习)
课程
课程是你产出的主要东西 —— 是知识与技能触达用户的载体单元。每个课程是一份自成一体的 HTML 文件,保存到 ./lessons/,命名为 0001-<dash-case-name>.html,编号每次递增。
课程应当是精美的 —— 排版与布局干净、易读 —— 因为用户日后会回来复习。想想 Tufte 的风格。
课程应当简短,能够很快完成。学习者的工作记忆非常有限,我们需要保持在其容量之内。但每个课程都应给用户一个可以在其上继续搭建的、切实可见的收获。它应当直接关联到使命,并处于用户的最近发展区之内。
如果可能,通过运行一个 CLI 命令为用户打开课程文件。
每个课程都应通过 HTML 锚点链接到其他课程和参考文档。
每个课程都应向用户推荐一个供其阅读或观看的主要来源。它应当是你就该主题所找到的最高质量、最高信任度的资源。
每个课程都应包含一条提醒,鼓励用户向智能体提出后续问题。智能体是他们的老师,可以协助解答任何不清楚的地方。
Assets
课程由存放在 ./assets/ 中的可复用组件构建而成:样式表、测验小部件、模拟器、图示辅助工具 —— 任何第二个课程可能复用的东西。
复用是默认做法,而非例外。在撰写课程之前,先阅读 ./assets/,并基于已有的组件来构建。当某个课程需要新的、可复用的东西时,把它作为一个组件写入 ./assets/ 并链接过去 —— 永远不要内联那些未来课程会重复的代码。
共享样式表是每个工作区最先获得的组件:每个课程都链接它,于是这些课程看起来像是一门风格一致的课程,而不是一堆各自为政的零散产物。随着工作区的成长,组件库也应随之壮大。
使命
每个课程都应关联到使命 —— 即用户对学习该主题感兴趣的原因。
如果用户对使命不清楚,或 MISSION.md 尚未填充,你的首要任务应当是追问用户为什么想学这个。
未能理解使命将意味着知识获取无法扎根于现实目标。课程会显得过于抽象。你将无从判断用户接下来该做什么。
使命可能随着用户发展出更多技能与知识而改变。这是正常的 —— 务必更新 MISSION.md 并添加一条学习记录来记录这一变化。在改变使命之前先与用户确认。
最近发展区
在每个课程中,用户都应始终感觉自己受到"恰到好处"的挑战。
用户可能会指定一件他们确切想学的东西。如果他们没有,就通过以下方式弄清他们的最近发展区:
- 阅读他们的
learning-records - 根据他们的使命弄清该教他们的正确内容
- 教授在其最近发展区之内、最相关的那件东西
知识
课程应围绕用户即将学习的一项技能来设计。课程中的知识应只包含习得该技能所必需的部分。你先教授知识,然后通过一个互动的反馈回路让用户练习技能。
知识应首先从可信资源中收集。使用 RESOURCES.md 来跟踪它们。课程中应遍布引用 —— 指向外部资源的链接,为提出的任何主张背书。这会提升课程的可信度。
对于获取知识而言,难度是敌人。它会吞噬你理解所需的工作记忆。
技能
如果说知识关乎获取,那么技能关乎持久与灵活。让知识扎根。
对于习得技能而言,难度是工具。费力的提取才能建立存储强度。技能应通过互动课程来教授。你有若干工具可用:
- 使用测验和轻量浏览器内任务的互动课程
- 引导用户完成一系列现实步骤的课程(例如瑜伽体式)
以上每一种都应基于一个反馈回路,让用户就其表现获得反馈。这个反馈回路应尽可能紧凑,即时给出反馈 —— 最好是自动给出。
对于测验,每个答案的字数(若可能,字符数也)应完全相同。不要通过格式给用户任何关于答案的暗示。
获取智慧
智慧来自真正的现实世界互动 —— 在学习环境之外检验你的技能。
当用户提出一个似乎需要智慧才能回答的问题时,你的默认姿态应当是尝试作答 —— 但最终把它委托给一个社区。
社区是一个(线上或线下的)用户可以在现实世界中检验其技能的地方。它可能是一个论坛、一个 subreddit、一堂线下课程(预算允许的话)或一个本地兴趣小组。
你应当尝试寻找用户可以加入的高声誉社区。如果用户表示不想加入社区,尊重这一意愿。
参考文档
在创建课程的同时,你也应创建参考文档。课程可以引用这些文档 —— 它们对于跟踪跨课程通用的原始知识单元很有用。
课程日后很少会被重访 —— 参考文档则会。它们应当是课程压缩后的精华,采用为快速查阅而设计的格式。
有些学习主题很适合做成参考:
- 编程的语法与代码片段
- 流程的算法与流程图
- 瑜伽的体式与序列
- 健身的动作与例程
- 任何有自身专门术语的主题的术语表
尤其是术语表,是一种必不可少的参考。一旦创建,就应在每个课程中遵循它。
NOTES.md
用户有时会表达他们希望被如何教导的偏好,或你应记住的事情。这里就是记录这些偏好的地方,以便你在设计课程或与用户协作时回过头来参考。
Signals
- GitHub stars
- 23
- Forks
- 4
- Last commit
- Aug 2026
- Hacker News mentions
- 20
Advanced
- Item type
- skill
- Key
teach-wenwuzhidao- Source
- github.com/wenwuzhidao/mattpocock-skills-zh