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