安装此技能
npx skills@latest add mattpocock/skills --skill=teach然后输入 /teach 来调用它。
本页内容
它的作用
teach 把你运行它的目录变成一个常驻教学工作区,并在许多 sessions,以简短独立的自包含 HTML 课程形式。
它不是基于 model 已经知道了。 参数化知识 被视为不可信:在教之前,它去找高可信度的资源,把它们记录在 RESOURCES.md,并在每节课里引用它们。另一个结构事实是它 有状态 ——使命、资源、课程和你的学习记录都以文件形式住在目录里,所以下一个会话从那些文件接手,而不是从上次对话残留的任何东西。
何时使用
你通过输入 /teach ——这个 agent 不会自动调用它。
当学习本身就是项目时使用它:一门语言、一个框架、你刚加入的代码库、瑜伽、着色器、一个认证。它不是顺口解释一下的工具。
前置条件
teach 构建一个目录而不是产出单个文件,而且该技能假设每个工作区只有一个使命——所以请在某个你乐意交给单一主题的地方运行它。把它放在你正在工作的项目之外:推荐放在单独的仓库里,而不是全局 ~/.learnings/ 文件夹或正在进行的项目本身。专门的仓库还让课程可以提交,这正是团队分享它们的方式。
那个目录里积累了什么:
| 路径 | 它持有 |
|---|---|
MISSION.md | 你为什么学这个。其他一切都挂在它上面;如果它缺失,第一件事 teach 做的是审问你,直到它不再是 |
RESOURCES.md | 它据以教学的经过审核的来源,分为知识与智慧(社区) |
lessons/*.html | 编号课程——教学的主要单位 |
reference/*.html | 压缩的速查表、算法、词汇表:你真正会回看的文档 |
learning-records/*.md | 关于你确实学到了什么的 ADR 式笔记,用于决定接下来教什么 |
assets/* | 可复用组件——先共享样式表——让课程看起来像一门课 |
NOTES.md | 你声明的教学偏好 |
对那个列表有两点诚实说明。词汇表适合大多数主题,但技能自带 GLOSSARY-FORMAT.md that SKILL.md 不再链接到,所以只有你提出要求才能得到一个(issue #559)。而且工作区并不总是在你期望的位置创建——在它之上构建长课程之前,先看下面的第一个问题。
存储强度,而非流畅度
用来思考的词是 存储强度:长期记忆,相对于 fluency,那种阅读时感觉已经掌握、一周后却消失殆尽的一时记忆。 teach 通过合意困难来构建前者——提取练习、间隔、交错。知识先行,此时困难是敌人,因为它吃掉你理解所需的记忆;然后技能通过紧密的反馈循环来操练,此时困难是工具。
两件事决定你学到什么。 mission ——你想要这个的具体现实理由——为每节课提供根基;没有它,课程就飘向抽象,没有任何东西决定接下来是什么。从使命和学习记录, teach 在你的 最近发展区:难度足以需要投入,又不至于超前到无法学习。
这也是为什么技能会顶回来而不是照办。一个需要 wisdom ——现实世界的判断——得到一个尝试性的答案,然后得到指向可测试它的社区的指引。测验是一道门,不是走过场:一位用户报告说了一句「非常感谢」,结果被告知练习仍然有效。
课程、参考资料与组件
A lesson 是一个自包含的 HTML 文件,短到一次坐下就能完成,与使命绑定,给出一项切实的胜利。它引用来源,推荐一份 第一手资料 让你自己去读,并链接到同类课程和参考文档。
值得知道的拆分:课程很少重读,参考文档会。所以课程的压缩精华——语法表、算法、姿势序列、词汇表——属于 reference/,而不是埋在介绍它的那一课里。
课程由 components in assets/:样式表、测验组件、模拟器、图表辅助。复用是默认选项。智能体读取 assets/ 在编写课程之前,并基于现有内容构建,任何第二课可能用到的新东西都被写成组件而不是内联。共享样式表是每个工作区获得的第一个组件;正是它阻止输出变成一堆一次性产物。
常见问题
它把文件放在哪?我的最终出现在 ~/.claude/skills.
一个真实、开放中的 bug(#377)。 SKILL.md uses ./ 同时为两个不同的根: ./MISSION-FORMAT.md 以及它的同类真的紧挨着 SKILL.md 在已安装的技能中,而 ./lessons/, ./reference/, ./learning-records/ and ./assets/ 应该在你的目录里。一个按技能安装目录解析第一种路径的智能体,也会在那里解析第二种,并把你的课程写进技能文件夹。在基于它构建之前,先检查第一课落在了哪里;开始时就明确指定目录名,而不是依赖对「当前目录」的理解。
我留在一个会话里,还是每课开一个新会话?
三种方式都有效——留在同一个会话、重新调用 /teach 在新会话中,或在同一文件夹中开新会话。每节课都是一次独立调用。连续性来自文件夹,而不是对话。常见做法是在工作区开一个全新会话然后说 /teach next lesson for <topic>.
我怎么知道它教的不是它编造的东西?
不能只凭技能的话。你要读第一手来源。 teach 还不够可靠到可以不加检查地信任,任何基于 LLM 的技能都是如此。接地机制—— RESOURCES.md,每节课都带引用,每节课推荐一份第一手来源——存在是为了让验证变便宜,而不是免除验证。失败并非假设:一位学 2x2 魔方的用户被给了无法解开的编造步骤序列。对这类案例的诊断检查清单是:模型、运行框架、投入——以及来源是什么。风险在具有精确符号的程序性领域最高,在输出可立即验证的地方最低,比如能运行的代码。
测验的正确选项总是第一个。
被多人在 Sonnet、Opus 和 GLM 上确认,且仍未修复。 SKILL.md 现在要求每个答案字数相同,这消灭了另一种破绽——正确答案曾经是唯一被完整推理的——但对位置只字未提。一位贡献者测试了针对位置的指令级修复,报告正确答案在九节课中仍然 33 次全部落在槽位 A(#335),它指向 assets/ 作为真正的修复,而不是更好的措辞。在那之前,把答案位置当作无意义。你的 assets/ 目录由你掌控,所以要求一个在渲染时洗牌的组件是合理的本地修改。
它假设我已经知道一些东西,并使用了从未定义过的术语。
最普遍的实质性抱怨。没有评估步骤: teach 从使命和学习记录推断你的水平,而第一节课时还没有学习记录。一位用户在 wayfinder 管道里运行它时说得直白——「它从来没有 追问审视 来建立我的起点,所以它对我已知的东西做了大量假设。」还有人报告课程依赖未定义的术语,以及一个针对他们硬件的课程只讲硬件能做什么、从不说它不能做什么。两件事有帮助:在第一条消息中说明你的先验知识和缺口,并在课程脱靶时大声纠正水平,因为纠正会变成学习记录,引导下一课。显式的知识评估步骤是一个长期的特性请求(#725),不是已发布的行为。
它做间隔重复吗?它知道什么时候该停止教学吗?
第一个是不,第二个也不可靠。间隔和交错是课程设计所依据的原则,但没有任何东西安排复习,也没有 Anki 或日历集成——两者都是反复出现的请求。相关的缺口是退出标准:正如一位用户所说, teach 「擅长制作下一课,但不擅长判断何时该停下来切换到复习或真实练习。」如果你想要复习或练习而不是新材料,请主动要求;该技能不会自行提议切换。
它只对代码有用吗? 不,而且非编码用途占了记录的大头:韩语、日语敬语、钢琴、吉他、桌游设计、OpenSCAD、电影剧情、Azure 和 CCNA 认证、大学考试,以及八岁十岁的孩子获得关于密室逃脱和火蝾螈的可打印书。技能里没有任何编程专属的东西——使命、资源、最近发展区和练习在任何领域都以同样的方式工作。在代码领域内,被报告最强的用途不是从零学语言,而是在陌生代码库或新团队的栈里快速定位。
我该用哪个模型运行它? 没有标准答案,被报告的差异很大。更高的 推理投入 被报告能产出明显比中等设置更好的课程。一位用户通过 Copilot CLI 搭配 Codex 运行同一个技能,只得到一张 30 行的 HTML 卡片,而 Claude Code 产出了完整课程。它能在 Claude Cowork 中原样运行,取决于你的组织是否允许在那里添加技能。如果课程产出单薄,换个模型, 运行框架 或投入,再重写你的提示词。
做到以下就算成功
- 它在空目录里做的第一件事是审问你为什么想要这个,而不是产出课程。
RESOURCES.md比课程更早装满,而且每节课都点名一份值得你自己读的第一手来源。- 课程中的论断都要带出链接。没有引用的课程,就是技能在凭记忆教学。
- 一节课用一次坐下就能完成,让你学会一件之前不会的事。
- 在文件夹里开全新会话并说「下一课」,会继续课程而不是重新开始。
learning-records/增长,课程就不再重复教你已展示过的东西。- 课程看起来像一门课——它们链接
assets/而不是各自携带自己的。 - 需要判断力的问题,会得到指向论坛、subreddit 或课程的指引,而不只是一个答案。
在流程中的位置
teach 是一个 随时可调用的独立技能。它不是构建链上的一步,也不与工程流程共享任何产物;它拥有自己的目录,只要主题存在就一直住在那里。
它唯一真正的邻居是 handoff,通过 Matt 给出的那个组合方案来回答「被审问到我不懂的东西该怎么办?」:不要为了学习而打断审问—— /handoff 到一个教学工作区,在那里用 /teach,然后回来从上次中断的地方继续。相近的替代方案是 research,用于当你想要带引用的文档而不是课程和记忆留存时。当你不确定哪个技能或流程合适时, ask-matt 为你规划整套流程。
技能操作
npx skills@latest add mattpocock/skills安装整套技能,然后在智能体中输入 /teach 来调用它。