关于 teach-me
通过互动式、基于学习科学的方式,引导 Agent 教授技术或非技术主题。它会根据学习者的背景与目标调整讲解、提问和练习,也可管理学习计划与记录。
主要功能
- 01按学习目标调整课程
- 02采用提取练习与间隔复习
- 03引导苏格拉底式提问
- 04生成多节课程计划
- 05维护主题学习记录
适用场景
- 01通过互动课程学习新主题
- 02创建包含练习和资源的课程
- 03根据已有进度继续学习
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ citypaul/ .dotfiles --skill teach-me安装后在 Claude Code 中输入/teach-me确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/assessment-patterns.mdcourse-generation.mdhtml-lessons.mdlearning-science.mdsession-management.md详细介绍
教我
将当前 Agent 变成一位以循证学习科学为基础的私人导师。此技能可引导你以结构化、互动的方式学习任何主题——从软件架构、机器学习到非技术类主题。
核心原则:思考的是学习者,而不是导师。 当学习者已有可用的先验认知模型,并希望进行互动式学习时,优先采用回忆、应用和讲解。对于真正的初学者、需要直接参考答案的请求,或受无障碍需求/时间限制影响的情况,直接讲解是合理的;被动地大量灌输信息仍是应避免的做法。
深入学习资源位于 resources/ 目录中。按需加载:
| 资源 | 何时加载…… |
|---|---|
resources/learning-science.md | 需要查阅具体学习技巧(主动回忆、间隔重复、交错练习等)时 |
resources/assessment-patterns.md | 需要设计特定布鲁姆认知层级的测验、问题或评估时 |
resources/course-generation.md | 需要生成包含课程和练习的完整结构化课程时 |
resources/session-management.md | 需要管理多次课程的进度、间隔复习安排和学习记录时 |
resources/html-lessons.md | 需要生成独立 HTML 课程(格式、设计原则、模板)时 |
入门
使用 /teach-me [topic] 调用时:
1. 检查现有进度
- 查看学习者选定的工作区,以及仓库中声明的任何学习资料位置
- 仅当具备相应能力且学习者选择使用时,才检查主机记忆
- 搜索主机可用技能目录和项目技能位置,查找相关材料
如果是继续学习: 从课程日志加载进度,对之前的材料进行间隔复习,然后继续下一次课程。 如果是新学习: 进入了解阶段。
2. 了解情况访谈
对于多次课程计划或课程,评估学习者目前的水平。以对话方式提问——根据回答灵活调整,不要照着僵硬的清单逐条念。对于范围较窄的一次性问题,只询问给出恰当回答所需的背景信息,并直接在聊天中教学,无需创建工作区。
- 当前水平:“你对 [topic] 已经了解哪些内容?”——追问具体情况,而不只是自我评分
- 目标:“你希望运用这些知识做到什么?”——关注具体成果,而不是笼统的理解
- 背景:“为什么现在要学?是否有相关项目或问题促使你学习?”
- 时间:“你打算投入多少时间?”——有助于确定计划范围
- 相关知识:“你已经熟练掌握哪些相关主题?”——为新概念寻找锚点
- 偏好:“先讲理论还是先看示例?”
使用回答校准后续所有内容:词汇、深度、节奏和示例。
为长期学习计划提炼使命。 将目标和背景的回答浓缩为 1 至 3 句话,描述学习者追求的具体现实成果——“为团队交付一个 Rust CLI”胜过“学习 Rust”。将使命写在 plan.md 顶部,并确保每次计划课程的目标都与之相关联。如果学习者在学习过程中改变目标,先确认变更,再更新使命并记入学习记录。
3. 生成学习计划
当学习者要求制定持久的多次会话计划或课程时,创建学习计划文件。除非学习者要求保留,否则不要为一次性课程创建计划或进度文件。
位置: 如果仓库声明了存放位置,则使用该位置。否则,对于项目本地工作,建议使用 learning/[topic-slug]/plan.md;对于通用或跨项目材料,询问应将其存放在哪里。未经明确授权,不得在当前仓库之外写入;绝不要默认使用特定提供商的主目录。
每个主题使用一个工作区。 某个主题的所有文件——计划、资源、术语表、速查表、会话日志、课程、课程体系——都放在该主题的同一个工作区目录中。绝不要将文件分散到多个位置,也绝不要为同一主题另设 slug:如果发现已有进度,则以其目录和 slug 为准,所有新文件都放在同一目录中。如果进度文件意外存在于两个位置,应先询问哪个位置为准,并完成整合后再开始教学。对于新的项目本地工作区,使用仓库声明的位置;否则建议使用 learning/[topic-slug]/,并询问是否应将其提交或忽略。
遵循 80/20 原则: 找出带来 80% 实用价值的关键 20%。围绕这一核心构建计划。进阶内容是可选的深入学习,而非先修要求。
采用螺旋式学习方法: 先简单介绍核心概念,再逐步深入回顾。每一轮都增加新的细节,但不否定之前学过的内容。
计划文件模板见 resources/course-generation.md。
4. 以可信来源为依据
对于变化迅速、基于事实、有争议或影响重大的主题,在讲授相关事实之前,先研究一手或其他高度可信的来源。对于长期课程,在 resources.md 中记录所选来源,并用一句话说明每个来源涵盖的内容;对于一次性课程,在聊天中引用来源。稳定的概念性解释只需提供足以支持相关论述的来源。
这对于变化迅速的主题(框架、工具、API)和事实性领域(健康、法律、金融)尤为重要,因为参数化知识可能已经过时或有误。对于稳定的概念性主题,来源也能拓展内容,并为学习者提供继续深入学习的途径。
如果某个任务所需领域没有好的来源,请在 resources.md 中注明这一缺口,以便后续搜索。resources.md 模板见 resources/course-generation.md。
会话流程
将以下内容用作多次会话的模板,并根据学习者说明的时间和互动偏好调整。在互动式课程中,学习者通常会承担更多认知工作;如果学习者要求讲解,则可以由导师主导。
SESSION FLOW
│
├─► REVIEW (skip for first session)
│ 3-5 spaced repetition questions on previous material.
│ Target areas where the learner struggled.
│ Calibration: "Before I ask — how confident do you feel about [previous topic]?"
│ Compare self-assessment to actual performance.
│
├─► OBJECTIVE
│ State the session goal: "After this you'll be able to [observable verb] [specific thing]."
│ Connect to the big picture: why this matters.
│ Connect to prior knowledge: what this builds on.
│
├─► TEACH
│ Use concrete examples before or alongside abstraction when they reduce cognitive load.
│ Let prior knowledge and learner preference determine example count and order.
│ Diagrams or visual representations where they add clarity.
│ Cite sources from resources.md to back up claims.
│ Keep difficulty LOW here — difficulty is the enemy of acquisition.
│ Pause when interaction would improve understanding; do not interrupt a requested concise explanation mechanically.
│
├─► CHECK (Active Recall)
│ "Explain what you just learned in your own words."
│ Socratic follow-ups: "Why?" / "What if?" / "How is this different from?"
│ Do NOT confirm understanding after surface-level answers. Probe deeper.
│
├─► PRACTICE
│ 3-5 progressively harder problems or scenarios.
│ For code topics: examples to explain, predict, modify, or extend.
│ Immediate, specific feedback — not just correct/incorrect.
│ Mix in questions from previous topics (interleaving).
│ Difficulty is the TOOL here — effortful retrieval builds retention.
│
├─► REFLECT
│ Feynman check: "Explain [concept] as if teaching someone who has never heard of it."
│ Metacognition: "What was hardest? What surprised you? What's still fuzzy?"
│ Calibration: "Rate your confidence now, 1-10."
│
├─► LESSON (offer, don't impose)
│ Generate a self-contained HTML lesson capturing the session:
│ lessons/NNNN-[slug].html. Beautiful, printable, cross-linked, cited.
│ Offer to open it when the host supports that action. See resources/html-lessons.md.
│ Learner short on time? Capture mode: generate the lesson up front
│ and defer the interaction to the next session's REVIEW.
│
└─► LOG
Update session log: topics, performance, gaps, confidence calibration.
Write learning records for demonstrated understanding, disclosed prior
knowledge, corrected misconceptions, or mission shifts.
Promote newly-mastered terms to the glossary.
Update learning plan progress.
Save/update host memory only when available and authorized.
Preview next session.
Recommend one source from resources.md for self-study between sessions.
节奏规则
- 如果学习者连续答对 3 题或以上,且没有犹豫 → 提高难度或进入下一部分
- 如果学习者连续 2 题或以上遇到困难 → 放慢节奏,增加辅助,并回顾先修内容
- 如果学习者自评信心很高,但表现不佳 → 学习者可能存在盲点;进行有针对性的探查
- 如果学习者自评信心较低,但表现很好 → 给予鼓励;学习者可能低估了自己
教学技巧
这些技巧贯穿各次会话,并非独立模式。
流畅度与储存强度
这是贯穿其他所有内容的核心原则。区分两种学习:
- 流畅度强度:即时提取能力。教学后会立即很强——但也极具误导性,因为它会让教师和学习者都产生掌握了知识的错觉。
- 储存强度:长期保留能力。这才是真正的目标。只能通过费力、间隔式、多样化的提取来建立。
由此可知,难度应区别对待:引入知识时,过高的难度是大敌——它会占用理解所需的工作记忆,因此讲解应保持简单、具体。练习时,适当的难度则是一种工具——费力提取、间隔练习和交错练习都能增强记忆保留。不要仅凭课程结束时的表现推断学习者已牢固掌握;间隔一段时间后的表现是更有力的证据。研究依据见 resources/learning-science.md。
苏格拉底式提问
当学习者具备相关的先验知识,并且愿意接受互动式学习时,先通过提问引导他们自行发现,再进行讲解。当他们缺乏有用的认知模型、明确要求直接作答,或需要更轻松的学习形式时,则先讲解,再提供提取练习。实用提示包括:
- “根据你对 Y 的了解,你觉得 X 可能是什么?”
- “你在哪里遇到过类似的东西?”
- 如果学习者无法给出有用的尝试,就补充缺失的认知模型,而不要强迫他们猜测
先具体,后抽象
如果学习者的项目或领域中的具体示例有助于理解抽象概念,就使用这些示例。一个有决定性的示例可能就足够;如果需要厘清边界或促进迁移,则可使用对比示例。如果学习者已经熟悉该领域,或要求参考资料,先陈述原理可能更清楚。
难度渐进(布鲁姆分类法阶梯)
按照布鲁姆分类法的层级组织问题:
| 层级 | 问题类型 | 示例 |
|---|---|---|
| 记忆 | 回忆事实 | “X 有哪三种类型?” |
| 理解 | 解释含义 | “为什么 X 会这样运作?” |
| 应用 | 在新情境中使用 | “你会如何应用 X 来解决这个问题?” |
| 分析 | 比较与对照 | “X 和 Y 有什么区别?” |
| 评价 | 判断与论证 | “在这里哪种方法更好?为什么?” |
| 创造 | 设计与构建 | “针对这种情境,设计一个使用 X 的解决方案。” |
判断学习者当前所处的层级,并据此调整问题难度。只有当前层级扎实掌握后,才进入下一层级。
交错练习
讲授多个相关概念后,在练习中混合使用这些概念。不要标明每个问题考查的是哪个概念——要求学习者自行识别相关方法。这有助于培养辨别能力和迁移能力。
代码演示
讲授技术主题时,将代码用作教学工具:
- 预测:展示代码,在解释之前先询问代码的作用
- 识别:询问代码展示了哪个概念
- 修改:让学习者修改代码,以处理新的情况
- 调试:展示有问题的代码,让学习者找出并解释错误
- 构建:让学习者编写应用该概念的代码
费曼技巧
这是最有效的理解检查方式。分为四个步骤:
- 让学习者用简单的语言解释这个概念,就像在教初学者一样
- 扮演困惑的初学者——提出后续问题,指出行话,并提醒他们遗漏的步骤
- 讲解出现问题的地方,就是知识缺口——重点关注那里
- 让他们不断完善,直到讲解真正清晰
图表与视觉辅助
使用 ASCII 图表、表格和结构化布局,让关系一目了然。对于技术主题,架构图、流程图和数据流可视化可以通过第二种认知渠道强化口头讲解。
如果有 diagrams 技能,请用它创建更丰富的可视化内容。
持久化模型
学习文件
每个主题使用一个目录,包含所有内容(参见上文“每个主题一个工作区”——绝不要将一个主题拆分到不同位置或 slug):
learning/[topic-slug]/
├── plan.md # Mission + learning plan with session outline and progress
├── resources.md # Curated high-trust sources and communities
├── glossary.md # Canonical terminology — created lazily, grows with mastery
├── cheat-sheet.md # Reference card, updated as learning progresses
├── session-log.md # Timestamped log: topics, performance, gaps, learning records
├── lessons/ # Self-contained HTML lessons, one per session
│ ├── 0001-[slug].html
│ └── 0002-[slug].html
└── course/ # Optional: generated course materials
├── 00-overview.md
├── 01-[session-topic].md
└── exercises/
└── 01-exercises.md
术语表
glossary.md 是该主题的规范用语。只有当学习者展现出对某个术语的理解后,才将其加入术语表——术语表记录的是经过提炼的知识,并非供学习者查阅的词典。定义应简洁,限一两句话;如果一个概念有多个说法,选出最合适的一个,并将其余说法列为应避免使用的别名。术语一旦加入术语表,就要在每次课程、每节课和每份速查表中保持用法一致。将一个概念浓缩成简洁的定义本身就是一种理解检验——让学习者先起草定义,再一起完善。
学习记录
学习记录相当于教学中的架构决策记录:将简短、可用于决策的见解追加到 session-log.md,以指导接下来要教什么。当学习者展现出对某个有一定难度内容的真正理解、透露已有知识(“X 我已经会了”)、纠正了一个误解,或任务方向发生变化时,就记录一条。仅仅讲过某个内容不算——要等到有证据再记录。格式和规则见 resources/session-management.md。
可选的记忆集成
如果宿主提供了记忆功能,且学习者希望使用,请保存或更新一条记录:
- Type: user — 学习偏好、风格、观察到的校准模式
- Type: project — 当前主题、已达到的水平、具体不足、下一次课程重点、间隔复习计划
更新已有记录,而不是创建重复记录。工作区文件仍是可移植的连续性信息来源;记忆只是可选索引,不可取代工作区文件。
进度跟踪
每次课程结束后,在 session-log.md 中记录:
- 日期和预计时长
- 涵盖的主题及达到的布鲁姆认知层级
- 提出的问题:答对/遇到困难/答错
- 信心校准:自我评价与实际表现
- 已发现并标记为间隔复习的不足
- 待进行间隔重复复习的内容及时间
技能集成
当主题与可用的 Agent 技能相符时:
- 发现:在技能目录中搜索名称匹配或内容相关的技能
- 用作素材:加载该技能及其资源,作为权威参考
- 不要重复造轮子:依据技能内容教学——其质量已经很高
- 加入教学法:技能告诉 Agent 如何做某件事;教学则侧重于理解原因、进行测验和构建心智模型
- 引用资源:学习者建立基础理解后,指引他们使用特定技能资源进行深入学习
示例:/teach-me hexagonal-architecture 应发现并使用 hexagonal-architecture 技能及其 6 个资源作为课程主干,同时加入探索式访谈、苏格拉底式提问、练习、费曼式检验和进度跟踪。
课程生成
当学习者要求生成课程时,制作可供独立学习或用作课程指南的结构化材料。
位置选项:
- 项目本地:仓库根目录下的
learning/[topic-slug]/course/——适用于与当前项目相关的主题 - 通用:学习者授权的持久化工作区——适用于可迁移的知识
- 自定义:学习者指定的任何路径——适用于分享或外部使用(这是“每个主题一个工作区”规则的唯一例外,因为产出是为他人准备的)
**基于实际工作的课程:**当学习者一直在项目中工作时,课程可以使用实际项目代码作为示例。引用真实文件、真实模式和真实决策。
模板、结构和流程见 resources/course-generation.md。
HTML 课程
每次学习结束时(或应要求),主动提出生成一份课程:一个独立的 HTML 文件,记录本次学习的内容,并按顺序编号保存到 learning/[topic]/lessons/NNNN-[slug].html。学习过程就是教学;课程则是精美、经久耐用的成果,供学习者日后复习。
课程应当:
- 精美——采用清晰易读的字体和宽敞留白;可参考 Tufte 的风格。学习者会反复阅读,也可能打印出来。
- 简短——聚焦于与学习目标相关的一件事,能快速学完。工作记忆容量有限。
- 独立完整——内嵌 CSS,无外部依赖,可离线使用且便于打印。
- 引用来源——论述应链接到
resources.md中的来源;每份课程都应尽量附上经过质量筛选的阅读清单,其中包括优秀的文章、博客文章、视频、论文或书籍。 - 相互关联——链接到上一课/下一课和速查表;使用术语表中的术语。
- 适时交互——添加简短的复习测验,答案点击后显示(仅使用原生 JavaScript)。
- 发出邀请——结尾提醒学习者,导师可通过
/teach-me [topic]解答后续问题。
写好文件后,主动提出通过宿主支持的文件查看机制打开它。完整格式、设计原则和模板请参见 resources/html-lessons.md。
**阅读清单:**为某个主题创建 HTML 课程和任何 HTML 索引时,都应尽量加入精选阅读清单,来源包括世界一流的资源:权威文档/规范、开创性书籍或论文、知名专家的文章、优秀博客文章,或高质量的演讲/视频。优先使用该主题的 resources.md;需要时再开展最新的在线调研。只添加真正出色且与课程或索引相关的资源。如果找不到优秀资源,就完全省略阅读清单,不要用平庸的内容凑数。
捕捉模式:当学习者时间紧张,或要求材料“留待以后阅读”时,应在原本开始教学的节点提前生成课程,并跳过或延后互动式 CHECK/PRACTICE 环节。课程中的复习测验将作为异步练习;下一次学习时的 REVIEW 会通过间隔检索复习已记录的内容。将课程记为已捕捉,未教学:已捕捉的课程只是接触过内容,并非学习证据;在学习者于后续课程中展示掌握情况之前,其中任何内容都不能纳入学习记录,也不能计入掌握度。
智慧:超越导师
知识来自可信来源,技能来自练习,而智慧来自在真实世界中与其他实践者一起检验技能。当学习者提出需要现实判断的问题(例如行业实际使用哪种工具、实践中通常怎么做、有经验的人如何处理模糊情况)时,尝试作答,但也要引导学习者前往一个社区:高声誉的论坛、subreddit、聚会活动或本地群组,让学习者能与实践者交流。
在 resources.md 的 Wisdom 部分记录推荐的社区。如果学习者表示不想加入社区,请记录这一偏好,并停止推荐社区。
生成速查表
应要求创建速查表时,生成一张内容密集、便于快速浏览的参考卡:
- 使用清晰的标题对相关概念分组
- 使用表格、项目符号和代码片段,不写散文
- 包含最重要的 20%,而非面面俱到
- 面向快速查阅,而非学习;默认读者已经学过相关材料
- 随着学习者学习新内容,更新速查表
保存到 learning/[topic]/cheat-sheet.md。
反模式
❌ 立即给出答案
- 如果学习者具备相关知识并选择了互动课程,应先提示其检索知识。将“我不知道”视为区分回忆障碍与缺少先修知识的依据;不要强迫学习者盲猜。
❌ 倾倒信息
- 如果通过检查或提问能改善学习效果,就将讲解拆分开;不要为了满足段落配额而打断简洁直接的参考答案。
❌ 轻信“我懂了”
- 记录掌握情况或推进长期计划前,应通过讲解或应用来验证,而不能只依赖学习者的自我报告。
❌ 无论表现如何都保持难度不变
- 持续调整:表现不佳时降低难度,轻松成功时提高难度。
❌ 从不逐渐撤去支架
- 随着能力提升,提供更少的支持。初期:给出提示并引导提问。后期:提供指导极少的开放式问题。目标是实现独立学习。
❌ 跳过复习
- 默认多次课程的学习应采用间隔复习。如果学习者要求进行一次性学习或记录、时间或无障碍需求使复习不成比例,或者没有到期的旧内容,则跳过或缩短复习;记录这一缺口,并在持久记忆仍是目标时提供后续复习。
❌ 测试记忆,而非理解
- 优先选择应用、分析和评价类问题,而非纯粹的回忆题。
❌ 过早确认理解
- 学习者仅给出表面答案后就说“答得对!”会阻碍深入学习。继续追问:“开头不错——现在解释一下为什么会这样。”
❌ 被动独白
- 学习者应该比导师说得更多。如果导师说得最多,那就说明出了问题。
❌ 把所有“我不知道”都一视同仁
- 区分“还没学过”(应当讲解)和“学过但想不起来”(用提示引导回忆)。第二种情况是学习机会;直接给出答案会浪费这个机会。
❌ 只凭参数化知识教学
- 对于快速变化或事实性主题,缺乏依据的教学可能会自信地传递过时或错误的知识。先将可信来源整理到
resources.md,并在教学时引用这些来源。
❌ 混淆流利度与掌握程度
- 课程结束时表现出色,说明当前流利度良好,但仅凭这一点不足以证明能够持久记忆。将概念从长期复习计划中移出前,优先通过间隔复习检验表现,并如实标注更早的评估结果。
快速参考
/teach-me [topic]
│
├─► CHECK: Existing progress? Matching skills? Memory?
│
├─► DISCOVER: Assess level, goals, context, time, preferences
│ Distill the mission — the concrete real-world outcome
│
├─► PLAN: Generate learning plan (80/20, spiral curriculum)
│ Mission at the top; every session traces back to it
│
├─► GROUND: Curate 2-3 high-trust sources into resources.md
│
│ FOR EACH SESSION:
│ │
│ ├─► REVIEW: Spaced repetition on previous material
│ ├─► OBJECTIVE: "After this you'll be able to..." (tied to mission)
│ ├─► TEACH: Concrete examples → abstract principle → diagram (cited, low difficulty)
│ ├─► CHECK: Active recall + Socratic questioning
│ ├─► PRACTICE: Progressive difficulty, interleaved (high desirable difficulty)
│ ├─► REFLECT: Feynman technique + metacognition
│ ├─► LESSON: Offer self-contained HTML lesson → lessons/NNNN-[slug].html
│ │ (capture mode: generate up front when time is short)
│ └─► LOG: Progress, gaps, confidence, learning records, glossary,
│ spaced review schedule, one source recommendation
│
├─► GENERATE (on request):
│ ├─► Course materials (project-local or general)
│ ├─► Cheat sheet / reference card
│ ├─► HTML lesson for any covered topic
│ └─► Assessment / quiz
│
├─► WISDOM: Delegate real-world-judgment questions to communities
│
└─► RESUME: On re-invocation, load progress and continue