关于 teach
teach 是用于持续学习的教学 Skill,通过学习工作区中的使命、学习记录、参考资料和课程来规划后续教学,并产出可复习的课程与参考文档。
主要功能
- 01围绕学习使命规划课程
- 02跟踪学习记录与进度
- 03制作 HTML 课程和参考资料
- 04使用检索练习与间隔复习
- 05整理资源和主题术语表
适用场景
- 01跨多个会话学习一个主题
- 02根据既有学习记录安排下一课
- 03创建可打印的学习参考资料
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dyrits/ skills --skill teach安装后在 Claude Code 中输入/teach确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
apm.ymlagents/openai.yamlreferences/learning-glossary-format.mdlearning-record-format.mdmission-format.mdresources-format.md详细介绍
用户要求你教他们某个主题。这是一个有状态的请求——他们希望在多个会话中持续学习该主题。
教学工作区
请将当前目录视为教学工作区。以下所有路径都相对于当前工作目录(即工作区),而不是此技能自身的文件夹;只有链接的 references/*-format.md 文件才从此技能的文件夹中读取。用户的学习状态保存在此目录中的多个文件里:
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/*:可在多节课程中复用的组件。请参阅 资源。GLOSSARY.md:用户学习过程中逐步整理的主题规范术语。请使用 learning-glossary-format.md 中的格式。NOTES.md:用于记录用户偏好或工作笔记的草稿区。
理念
要深入学习,用户需要三样东西:
- 知识:从高质量、高可信度的资源中获取
- 技能:通过你设计的、与你高度相关的互动课程来掌握,这些课程以知识为基础
- 智慧:通过与其他学习者和从业者交流获得
在 RESOURCES.md 内容充实之前,你应把寻找有助于用户获取知识的高质量资源作为重点。不要盲信模型自身的参数化知识。
有些主题可能更需要技能,而非知识。学习理论物理可能更偏重知识;学习瑜伽则可能更偏重技能。
流畅度与存储强度
你应仔细区分两种类型的学习:
- 流畅度:当下提取知识的能力
- 存储强度:长期保留知识的能力
流畅度可能让用户产生掌握知识的错觉,但真正的目标是存储强度。请通过理想难度来设计课程,以促进长期记忆:
- 通过提取练习,从记忆中回想
- 通过间隔练习,将练习分散到不同时间
- 通过交错练习,在练习技能时混合不同但相关的主题
课程
课程是你要制作的核心内容:它是将知识和技能传递给用户的单元。每节课程都是一个独立完整的 HTML 文件,保存在 lessons/ 中,并命名为 0001-<dash-case-name>.html,其中的数字每次递增。
课程应该美观,采用简洁易读的排版和布局,因为用户之后还会回来复习。可以参考 Tufte 的风格。
课程应该简短,并且能在很短时间内完成。学习者的工作记忆容量很小,因此我们需要把内容控制在这个范围内。但每节课程都应带给用户一个明确、实用的收获,让他们可以在此基础上继续学习。课程内容应与学习使命直接相关,并处于用户的最近发展区内。
如有可能,通过运行 CLI 命令为用户打开课程文件。
每节课程都应通过 HTML 锚点链接到其他课程和参考文档。
每节课程都应推荐一份主要的一手资料,供用户阅读或观看。这应该是你找到的关于该主题的最高质量、最值得信赖的资源。
每节课程都应提醒用户向 Agent 提出后续问题。Agent 是他们的老师,可以帮助解答任何不清楚的内容。
资源文件
课程由可复用的组件构建而成,并存储在 assets/ 中:样式表、测验小组件、模拟器、图表辅助工具,以及任何其他课程可以复用的内容。
默认情况下应复用,而不是另起炉灶。编写课程前,请先阅读 assets/,并使用其中已有的组件。如果课程需要新的可复用内容,请将其编写为 assets/ 中的组件并链接到它;切勿将未来课程可能重复使用的代码内嵌其中。
共享样式表是每个工作区应优先创建的第一个组件:每节课程都会链接它,这样所有课程看起来就像一套风格统一的课程,而不是一堆各自为政的页面。随着工作区不断扩展,组件库也应随之增长。
学习使命
每节课程都应与学习使命相关联——也就是用户想要学习该主题的原因。
如果用户尚未明确学习使命,或 MISSION.md 尚未填写,你首先应该询问用户为什么想学习这个主题。
不了解学习使命,就无法让知识获取扎根于现实目标。课程会显得过于抽象,你也就无法判断用户接下来应该做什么。
随着用户技能和知识的增长,学习使命可能会改变。这很正常——请务必更新 MISSION.md,并添加学习记录来记下这一变化。修改学习使命前,请先征得用户同意。
最近发展区
每节课程都应让用户始终觉得挑战「恰到好处」。
用户可能会指定自己想学的确切内容。如果没有,请通过以下方式判断他们的最近发展区:
- 阅读他们的
learning-records - 根据他们的学习使命,判断适合教他们什么
- 教授最相关且符合其最近发展区的内容
知识
课程应围绕用户将要学习的技能来设计。课程中的知识应仅限于掌握该技能所必需的内容。先教授知识,再通过互动反馈循环让用户练习技能。
知识应首先从可信资源中收集。使用 RESOURCES.md 记录这些资源。课程中应大量引用资料——通过链接到外部资源,为提出的每个观点提供支持。这能提升课程的可信度。
获取知识时,难度是最大的阻碍。它会占用你理解内容所需的工作记忆。
技能
如果说知识的核心在于获取,那么技能的核心在于持久性与灵活性。要让知识真正留存下来。
对于技能的习得,难度本身就是工具。主动提取(effortful retrieval)是建立长期记忆强度的关键。技能应当通过交互式课程来教授。可以使用以下几种工具:
- 交互式课程,包括测验和轻量的浏览器内任务
- 引导用户完成一系列真实世界步骤的课程(例如瑜伽体式)
每种课程都应基于反馈循环,让用户获得关于自身表现的反馈。这个反馈循环应尽可能紧密,即时给出反馈,并且最好是自动完成。
对于测验,每个选项的字数应完全相同(如果可能,字符数也应相同)。正确答案的位置应在各题之间变换。不要通过格式或选项顺序向用户暗示答案。
获取智慧
智慧来自真实世界中的互动,即在学习环境之外检验你的技能。
当用户提出的问题似乎需要智慧才能回答时,你的默认立场是尝试作答,但最终应将用户引导至一个社区。
社区是用户可以在现实世界中检验技能的地方,可以是线上或线下的场所。它可以是论坛、subreddit、现实中的课程(在预算允许的情况下)或本地兴趣小组。
你应当尽量找到信誉良好的社区供用户加入。如果用户表示不想加入任何社区,应尊重其选择。
参考文档
在制作课程的同时,你还应当制作参考文档。课程可以引用这些文档,它们便于记录跨课程有用的基础知识单元。
课程很少会被重新访问,而参考文档则会经常被查阅。参考文档应是课程的精华浓缩,并采用便于快速查阅的格式。
一些学习主题适合配备参考文档,例如:
- 编程的语法与代码片段
- 流程的算法与流程图
- 瑜伽的体式与序列
- 健身的动作与训练计划
- 任何拥有自身术语体系的主题的术语表
术语表尤其是一种必不可少的参考资料。一旦创建,就应在每节课中始终遵循。
NOTES.md
用户有时会表达希望如何被教学的偏好,或者希望你注意的事项。这一文件用于记录这些偏好,以便你在设计课程或与用户协作时随时参考。