Imported from 15102045545/skills-cn (
skills/productivity/teach/SKILL.md). Install upstream withnpx skills add 15102045545/skills-cn --skill teach. Copyright stays with the author.
用户要求你教授某项内容。这是一项有状态的请求——他们打算通过多个会话学习这个主题。
教学工作区
将当前目录视为教学工作区。用户的学习状态记录在此目录的多个文件中:
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 为范。
课程应当简短,能够很快完成。学习者的工作记忆容量很小,我们必须控制在其范围内。但每节课程都应给用户带来一项切实成果,供他们在此基础上继续学习。课程应当直接关联使命,并处在用户的最近发展区内。
如有可能,通过运行 CLI 命令为用户打开课程文件。
每节课程都应通过 HTML 锚点链接到其他课程和参考文档。
每节课程都应推荐一项一手来源供用户阅读或观看。这应当是你为该主题找到的质量最高、可信度最高的资源。
每节课程都应提醒用户向智能体提出后续问题。智能体是他们的老师,可以帮助解决任何不清楚之处。
资产
课程由可复用的 组件 构建,这些组件存储在 ./assets/ 中:样式表、测验微件、模拟器、图表辅助工具——任何能被第二节课程复用的内容。
复用是默认做法,而不是例外。编写课程之前,先读取 ./assets/,并使用其中已有的组件进行构建。当课程需要新的可复用内容时,将其编写为 ./assets/ 中的组件并链接到它——切勿内联未来课程会重复使用的代码。
共享样式表是每个工作区首先获得的组件:每节课程都链接到它,让所有课程看起来像一门风格一致的课程,而不是一堆一次性页面。随着工作区增长,组件库也应随之扩展。
使命
每节课程都应与使命相关联——也就是用户有兴趣学习此主题的原因。
如果用户不清楚使命是什么,或 MISSION.md 尚未填写,你的首要工作应当是询问用户为什么想学习这项内容。
无法理解使命意味着知识获取没有以现实目标为基础。课程会显得过于抽象。你将无法判断用户接下来应当做什么。
随着用户掌握更多技能和知识,使命可能会发生变化。这很正常——务必更新 MISSION.md,并添加一条学习记录来记录变化。更改使命之前先与用户确认。
最近发展区
每节课程都应让用户始终感到挑战“恰到好处”。
用户可能会指定一项确切的学习内容。如果没有,请通过以下方式确定他们的最近发展区:
- 阅读他们的
learning-records - 根据使命确定适合教授的内容
- 教授与他们的最近发展区相符且最相关的内容
知识
课程应围绕用户将要学习的一项技能来设计。课程中的知识应仅限于习得该技能所需的内容。先教授知识,再让用户通过交互式反馈循环练习技能。
应先从可信资源中收集知识。使用 RESOURCES.md 跟踪这些资源。课程应包含大量引文——使用外部资源链接来支持提出的每项论断。这能提高课程的可信度。
对于知识获取而言,困难是敌人。它会吞噬理解内容所需的工作记忆。
技能
如果说知识关乎获取,那么技能就关乎持久性和灵活性。要让知识牢固掌握。
对于技能习得而言,困难是工具。费力提取才能建立存储强度。技能应通过交互式课程教授。你可以使用以下几种工具:
- 使用测验和轻量浏览器内任务的交互式课程
- 指导用户完成一系列现实步骤的课程(例如瑜伽体式)
每种工具都应建立在 反馈循环 之上,让用户获得有关自身表现的反馈。反馈循环应尽可能紧密,立即提供反馈——最好能够自动提供。
对于测验,每个答案的词数必须完全相同(如有可能,字符数也应相同)。不要通过格式向用户透露任何关于答案的线索。
获取智慧
智慧来自真实的现实互动——在学习环境之外检验技能。
当用户提出一个看起来需要智慧才能回答的问题时,默认做法应是尝试回答——但最终交由 社区 处理。
社区是用户可以在现实世界中检验技能的场所(线上或线下)。它可能是论坛、subreddit、现实中的课程(预算允许时)或本地兴趣小组。
应当尝试寻找用户可以加入的高声誉社区。如果用户表示不想加入社区,请尊重他们的偏好。
参考文档
创建课程时,还应创建参考文档。课程可以引用这些文档——它们有助于跟踪可跨课程使用的原始知识单元。
课程日后很少会被重新查看,参考文档则会。它们应当是课程精华的压缩版本,并采用便于快速查阅的格式。
有些学习主题很适合制作参考资料:
- 编程主题的语法和代码片段
- 流程主题的算法和流程图
- 瑜伽主题的体式和序列
- 健身主题的动作和训练方案
- 任何拥有自身术语体系的主题的词汇表
词汇表尤其是不可或缺的参考资料。一旦创建,每节课程都应遵循其中的术语。
NOTES.md
用户有时会表达对教学方式的偏好,或提出你应当牢记的事项。请在这里记录这些偏好,以便在设计课程或与用户合作时查阅。