mcpField
T
teach

teach

github.com/mattpocockAgent 工作流305.7k881.9k 次安装1 天前更新
代码仓库

关于 teach

teach 是一个用于多次会话学习某一主题的 skill,将当前目录作为教学工作区,记录学习目标、参考资料、学习记录和课程。课程为单个 HTML 文件,结合检索练习与即时反馈,帮助学习者长期保留知识。

主要功能

  1. 01以当前目录作为教学工作区
  2. 02按学习目标组织课程与参考文档
  3. 03课程为单个 HTML 文件并链接共享组件
  4. 04强调检索练习与间隔练习
  5. 05记录学习过程以确定下一步内容

适用场景

  1. 01系统性学习一门新技术或新领域
  2. 02制作可反复查阅的速查参考文档
  3. 03依据学习记录规划后续课程

安装

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

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

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

包含的文件

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

GLOSSARY-FORMAT.md
LEARNING-RECORD-FORMAT.md
MISSION-FORMAT.md
RESOURCES-FORMAT.md
agents/
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

用户有时会表达希望如何被教学的偏好,或者希望你注意的事项。这一文件用于记录这些偏好,以便你在设计课程或与用户协作时随时参考。

评论

支持 Markdown