mcpField
T
teach

teach

github.com/davidondrej生产力4.2k212 次安装今天更新
代码仓库

关于 teach

teach 是面向希望持续学习某个主题的用户的教学技能,围绕学习者的目标组织课程、参考资料和学习记录。它强调简短对话、交互练习与长期记忆。

主要功能

  1. 01依据个人使命制定课程
  2. 02使用学习记录评估进度
  3. 03制作 HTML 课程与参考文档
  4. 04通过测验提供即时反馈
  5. 05运用间隔与提取练习

适用场景

  1. 01规划跨多个会话的主题学习
  2. 02通过测验练习并巩固知识
  3. 03建立可回顾的课程与参考资料

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davidondrej/skills --skill teach

安装后在 Claude Code 中输入/teach确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

GLOSSARY-FORMAT.md
LEARNING-RECORD-FORMAT.md
MISSION-FORMAT.md
RESOURCES-FORMAT.md
agents/
openai.yaml

详细介绍

用户要求你教授一些内容。这是一项有状态的请求——他们打算在多个学习阶段中掌握该主题。

尽量简洁

回答用户或向他们撰写任何文本时,都要尽量简洁。教学应在课程和参考文档中进行,而不是在冗长的聊天回复中。每条消息都要简短、直接,不说客套话。只说明你做了什么、接下来做什么,以及用户最重要的一件事。详细解释应放在课程中。

教学工作区

将当前目录视为教学工作区。以下文件记录了用户的学习进度:

  • 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 文档,讲解一个与学习目标相关、范围明确的内容。这是工作区中教学的主要单元。
  • NOTES.md:用于记录用户偏好或工作笔记的草稿文件。

理念

要深入学习,用户需要三项内容:

  • 知识:从高质量、高可信度的资源中获取
  • 技能:通过你设计的、与你的知识相关且高度贴合的互动课程习得
  • 智慧:通过与其他学习者和实践者互动获得

在 RESOURCES.md 内容充实之前,应优先寻找能帮助用户获取知识的高质量资源。切勿轻信模型的已有知识。

有些主题更需要技能,而不是知识。例如,理论物理的学习可能更侧重知识;瑜伽则可能更侧重技能。

流畅度与存储强度

你应谨慎区分两种学习效果:

  • 流畅度:当下提取知识的能力
  • 存储强度:知识的长期留存程度

流畅的表现可能让用户产生掌握知识的错觉,但真正的目标是提高存储强度。请通过适当的学习难度来设计课程,促进长期记忆:

  • 使用提取练习(凭记忆回想)
  • 间隔练习(分散练习时间)
  • 交错练习(仅在技能练习中混合不同但相关的主题)

课程

课程是你要产出的主要内容,也是知识和技能传递给用户的基本单位。每节课程都是一个独立的 HTML 文件,保存在 ./lessons/ 中,文件名为 0001-<dash-case-name>.html,数字每次递增。

课程应该美观——排版和布局简洁易读——因为用户之后会回来复习。可以参考 Tufte。

课程应该简短,能让用户很快学完。学习者的工作记忆容量很小,因此我们必须控制内容量。不过,每节课程都应该让用户获得一个具体的成就,并以此为基础继续学习。课程内容应该与使命直接相关,并处于用户的最近发展区内。

如果可行,请运行 CLI 命令,为用户打开课程文件。

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

每节课程都应该推荐一个供用户阅读或观看的主要来源。这应该是你找到的关于该主题质量最高、最值得信赖的资源。

每节课程都应该提醒用户向 Agent 提出后续问题。Agent 是他们的老师,可以帮助解答任何不清楚的地方。

使命

每节课程都应该与使命相关联——也就是用户想要学习该主题的原因。

如果用户没有说清楚使命,或者 MISSION.md 尚未填写,你的首要任务应该是询问用户为什么想学这个主题。

如果不了解使命,知识的获取就无法与现实目标相结合。课程会显得过于抽象,你也无从判断用户接下来应该做什么。

随着用户技能和知识的增长,使命可能会发生变化,这是正常的——请务必更新 MISSION.md,并添加一条学习记录来记录这一变化。修改使命前,请先征得用户确认。

最近发展区

每节课程都应该让用户感到挑战程度恰到好处。

用户可能会明确指定想学的内容。如果没有,请通过以下方式确定其最近发展区:

  • 阅读他们的 learning-records
  • 根据他们的使命,判断最适合教他们的内容
  • 教授最相关且符合其最近发展区的内容

知识

课程应围绕用户将要学习的一项技能来设计。课程中的知识应仅限于掌握该技能所必需的内容。先教授知识,再通过互动反馈循环让用户练习技能。

知识应首先从可信资源中收集。使用 RESOURCES.md 对这些资源进行记录。课程中应大量引用资料,为提出的论点提供外部资源链接。这能提升课程的可信度。

获取知识时,难度是敌人。它会占用理解所需的工作记忆。

技能

如果说知识关乎获取,那么技能则关乎持久性和灵活性。要让知识牢牢记住。

要掌握技能,难度是工具。费力提取能增强记忆的存储强度。技能应通过互动课程来教授。你可以使用以下几种工具:

  • 互动课程,使用测验和简单的浏览器内任务
  • 引导用户完成一系列现实步骤的课程(例如瑜伽体式)

这两种方式都应该基于反馈循环,让用户获得有关其表现的反馈。反馈循环应尽可能紧凑,立即提供反馈,最好还能自动完成。

反馈原则

Stanford 测试了两种向学生提供反馈的方式。第一组收到标准评语。第二组收到相同的评语,外加一句话:“我给你这些评语,是因为我对你抱有很高的期望,而且我知道你能达到这些期望。”尽管收到的纠正内容相同,第二组的进步速度却是第一组的四倍。

对于测验,每个答案的字数应完全相同(如果可能,字符数也相同)。不要通过格式向用户透露任何答案线索。

获取智慧

智慧源自真实世界中的互动——在学习环境之外检验自己的技能。

当用户提出一个看起来需要智慧才能回答的问题时,你的默认做法应是尝试回答,但最终要把用户引导至一个社群。

社群是用户可以在真实世界中检验自身技能的地方(线上或线下均可)。这可以是论坛、subreddit、现实世界中的课程(视预算而定)或本地兴趣小组。

你应尝试寻找信誉良好、用户可以加入的社群。如果用户表示不想加入社群,请尊重他们的意愿。

参考文档

创建课程时,你还应创建参考文档。课程可以引用这些文档——它们有助于追踪可在不同课程中使用的原始知识单元。

之后很少会重新学习课程,而参考文档则会经常查阅。参考文档应提炼课程的核心内容,并采用便于快速查阅的格式。

有些学习主题特别适合整理成参考文档:

  • 编程的语法和代码片段
  • 流程的算法和流程图
  • 瑜伽的姿势和序列
  • 健身的练习和训练计划
  • 任何拥有专门术语的主题的术语表

术语表尤其是必不可少的参考资料。创建术语表后,每节课都应遵循其中的术语。

NOTES.md

用户有时会表达他们希望接受何种教学,或说明你需要牢记的事项。应在此处记录这些偏好,以便在设计课程或与用户交流时参考。

致谢

原始版本由 Matt Pocock 创建。

评论

支持 Markdown