mcpField
T
teach

teach

github.com/erikpr1994生产力357 次安装1 周前更新
代码仓库

关于 teach

teach 是一项有状态的教学技能,会围绕学习目标建立学习工作区。它生成相互链接的课程、参考资料和学习记录,并强调可信来源、检索练习及跨会话进展。

主要功能

  1. 01维护以目标为中心的学习工作区
  2. 02创建相互链接的独立 HTML 课程
  3. 03构建参考文档和规范术语表
  4. 04记录学习进展与偏好
  5. 05采用可信来源和检索练习

适用场景

  1. 01围绕学习者的明确目标创建课程
  2. 02通过速查参考文档复习概念
  3. 03依据过往学习记录继续教学

安装

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

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

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

包含的文件

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

DASHBOARD-FORMAT.md
GLOSSARY-FORMAT.md
LEARNING-RECORD-FORMAT.md
MISSION-FORMAT.md
RESOURCES-FORMAT.md

详细介绍

用户希望你教他们某项内容。这是一个有状态的请求——他们打算通过多个会话学习该主题。

教学工作区

将当前目录视为教学工作区。状态保存在以下文件中:

  • index.html:一个移动端优先的仪表板——首页,链接到每一课、参考文档、学习使命和资源。使用 DASHBOARD-FORMAT.md 中的格式。
  • MISSION.md:用户学习该主题的原因。所有教学都以此为基础。使用 MISSION-FORMAT.md 中的格式。
  • GLOSSARY.md:该主题的规范精简术语集——每一课和参考文档都遵循它。使用 GLOSSARY-FORMAT.md 中的格式。
  • ./reference/*.html:精简的学习资料——速查表、算法、语法、姿势等。精美、适合打印、便于快速查阅。可以将 GLOSSARY.md 渲染为 HTML。
  • RESOURCES.md:用于夯实教学基础或获取知识与智慧的资源。使用 RESOURCES-FORMAT.md 中的格式。
  • ./learning-records/*.md:记录用户学到的内容——类似 ADR,记录不明显的经验与见解,用于评估其最近发展区。使用 LEARNING-RECORD-FORMAT.md 中的格式。
  • ./lessons/*.html:每个范围明确、与学习使命相关的主题都输出为一个独立完整的 HTML 文件。这是教学的主要单元。
  • ./assets/*:在各课之间共享的可复用组件。参见 Assets。
  • NOTES.md:记录用户偏好和工作笔记的草稿区。

理念

深度学习需要三样东西:知识(高质量、高可信度的资源——绝不要相信参数化知识)、技能(以这些知识为基础构建的互动课程)和智慧(来自其他学习者和从业者)。根据主题调整三者的比重——理论物理偏重知识,瑜伽偏重技能。在 RESOURCES.md 内容充实之前,应优先寻找优质资源。

将学习分为流畅性强度(即时提取)和存储强度(长期保留)——流畅性让人感觉已经掌握,但目标是提升存储强度。通过合意难度来实现:提取练习、间隔练习和交错练习(仅用于技能练习)。

课程

课程是输出的主要单元:一个独立的 HTML 文件,存放在 ./lessons/ 中,标题为 0001-<dash-case-name>.html,编号递增。

让课程赏心悦目——采用简洁易读、Tufte 风格的排版——因为用户之后还会回来查看。不要只用文字讲解,而要展示:将空间、关系或动态概念呈现为图示或小型交互视觉内容,并作为可复用的 ./assets/ 组件(参见 资源),这样就多了一种回忆路径。

用语义化 HTML(嵌套列表、CSS)表示层级/树状结构,不要用 ASCII 艺术图——比例字体会破坏对齐。如果必须使用 ASCII,请用 <pre><code> 包裹,切勿混用内联样式。

课程应简短且能快速完成——工作记忆容量有限。每节课仍应带来一个切实的收获,与使命相关,并处于用户的最近发展区内。如果可以,用 CLI 命令为用户打开课程文件。

每节课程都应包含一致的导航栏:可点击的 ◀ 上一节 / 下一节 ▶(到达首尾时禁用),以及返回根目录 index.html 的 目录 链接,并使用相对路径以支持离线 file:// 访问。添加课程时,要重新连接课程链——将前一节的 下一节 指向新课程,并将其添加到仪表板。还要在正文中链接到相关参考文档。

每节课程都应推荐一个主要来源(找到的质量最高、最可信的来源),并提醒用户向 Agent 追问后续问题。

用户阅读时可能会产生疑问;离开课程去重新输入疑问会打断阅读流程,也会丢失引发疑问的段落。每节课程都应配备共享的 ./assets/ 疑问记录组件(参见 资源):一个可在上下文中记录问题并持久保存的位置,还要提供一键复制功能,将每条疑问连同引用段落一起格式化,方便粘贴回来问你——因为从磁盘打开的课程无法通过其他方式联系你。

资源

课程由 ./assets/ 中的可复用组件构建:样式表、测验组件、模拟器、图示辅助工具。

默认应复用现有组件:编写课程前先查看 ./assets/,并使用已有内容。新的可复用需求应编写为组件并建立链接——绝不要内联到课程中,以免后续课程重复编写。共享样式表是每个工作区应优先创建的第一个组件,让课程看起来像同一门课程;随着工作区发展,逐步扩充组件库。

仪表板

工作区的唯一入口是根目录中的 index.html。使用 DASHBOARD-FORMAT.md 中的格式。

课程和仪表板都是纯 HTML。要在手机上查看,可用任意静态服务托管工作区目录(例如 python -m http.server),并通过本地网络打开;也可以通过 Tailscale 或 Cloudflare Tunnel 等安全隧道远程访问。始终引导学习者访问 index.html。

设置 HTML 输出的样式

使用 Tailwind v4 Play CDN 为每个 HTML 输出(课程、仪表板、参考文档)设置样式,而不要手写 <style>,这样多节课程的样式才能保持一致,且每个文件都更精简:

<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>

将自定义主题放在 <style type="text/tailwindcss"> 块中。如果 CDN 可能无法加载——例如机器处于离线或限制外网访问的状态,或会话钩子要求外部脚本带有 integrity 哈希——则应改为内联 CSS。你不会实际渲染页面,因此 CDN 加载失败时不会有提示:课程会以无样式的标记打开,只有学习者会发现问题。

课程展示代码时,应加载语法高亮器,让代码块以彩色显示——仅添加 language-* 类不会有任何效果,而 Tailwind 负责布局,不负责代码标记。highlight.js 可以采用同样的方式加载(同样有离线限制——要创建完全离线的文件,请将其内联):

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@highlightjs/cdn-assets/styles/github.min.css">
<script src="https://cdn.jsdelivr.net/npm/@highlightjs/cdn-assets/highlight.min.js"></script>
<script>hljs.highlightAll()</script>

使命

每节课都要关联到使命——也就是用户想学习该主题的原因。如果用户尚未明确说明,或者 MISSION.md 还未填写,首先询问原因;否则课程会停留在抽象层面,缺乏实际依据。

随着技能和知识的增长,使命可能会改变——更新 MISSION.md 并添加一条学习记录,以记录这种变化。请先征得用户同意。

最近发展区

每节课都应让用户感到「恰到好处的挑战」。如果用户没有指定确切目标,可通过以下方式确定其最近发展区:

  • 阅读 learning-records——完整阅读最近几条记录;当记录积累到约 8 条或更多时,对于较早的记录,参考 NOTES.md 中持续更新的概念摘要,而不要重新阅读每个文件(避免整个课程期间产生二次复杂度成本)。
  • 权衡哪些内容符合用户的使命。
  • 教授最相关且符合其最近发展区的内容。

知识

课程围绕要学习的技能设计;只包含掌握该技能所需的知识。先教授知识,再通过互动反馈循环让用户练习。

从可信资源中获取知识,并记录在 RESOURCES.md 中。贯穿课程引用外部来源,以提高可信度。获取知识时,难度是敌人——它会占用理解所需的工作记忆。

技能

技能关乎持久性与灵活性——让知识牢固掌握。难度是培养技能的工具:费力检索可以增强记忆。通过互动课程教授技能——测验、简单的浏览器内任务,或指导用户完成现实世界步骤的课程(例如瑜伽姿势)——并尽可能让反馈循环紧密,最好能自动进行。

对于测验:让每个答案的长度都相同(词数相同,若可能,字符数也相同),避免格式泄露线索。变换正确答案所在的位置,并确保每个干扰项都是看似合理、措辞肯定的错误答案——绝不能是明显凑数的选项。

获取智慧

智慧来自现实世界的互动——在学习环境之外检验技能。遇到需要智慧的问题时,先尝试作答,但最终要引导用户前往一个社区:论坛、subreddit、现实世界的课程或本地兴趣小组,让他们在那里实际检验技能。优先寻找声誉良好的社区;如果用户不想加入,请尊重其意愿。

参考文档

除了课程,还要创建参考文档——以便于快速查阅的格式,浓缩课程的精华。课程很少会重温,参考文档则会。适合整理成参考文档的主题包括:语法/代码片段(编程)、算法/流程图(流程)、姿势/动作序列(瑜伽)、练习/训练计划(健身)。

对于有专属术语的主题,术语表(上文的 GLOSSARY.md)至关重要。术语一经定义,就要在每节课中保持一致;参考文档可以将术语表呈现为 HTML,方便快速查阅。

NOTES.md

在此记录用户的教学偏好,供设计课程时参考。同时持续总结已学概念,并在每次会话结束时更新——这样随着学习记录不断增加,你就能判断用户的最近发展区,而不必重新阅读较早的每条学习记录。

评论

支持 Markdown