Matt Pocock 把日常用的 .claude 目录推到 GitHub 后 160K Star 冲到 trending 第一。36 个 skill 里,teach 是个异类——它不写代码、不跑测试、不审 PR,只做一件事:教你学会新东西。它把"老师"这个角色编码进了 AI。

这篇文章不讲 skill 怎么写,只讲 /teach 怎么用、什么场景好使、踩过什么坑。

/teach 做了什么

装好之后,去一个空目录,输入 /teach,告诉它你想学什么。接下来它做了五件事:

  1. 先搞清楚你为什么学——触发后第一件事不是上课,是帮你写 mission.md。它追问的是动机,不是知识点。
  2. 搜一手资料,不是二手总结——搜索 Web 找高可信度一手资料存进 resources.md,后续持续更新。
  3. 用 HTML 做课件,不是 Markdown——课程存在 lessons/ 目录,编号递增,全部是 HTML 文件,支持交互图表、可点击练习步骤、guided mode(开/关提示)。
  4. 每节课后记录你的反馈——学完问"掌握了吗",回答写进 learning records。
  5. 下次打开,它知道你卡在哪——清空上下文、关掉窗口、过一周再打开,输入 /teach 它检查 workspace、读 learning records、诊断卡点、直接出下一课。这是 /teach 和"让 AI 出个教程"最根本的区别。

动手之前,先知道这几件事

  • 必须用空目录:/teach 把当前目录当教学 workspace,Mission、课程、学习记录、术语表全写进去,别在项目目录里跑。
  • 模型选择:Matt 推荐 Opus 4.8,medium effort。“把它当一对一老师用,不是搜索引擎。更聪明的模型 = 更好的老师。”
  • 它教的是技能,不是百科全书:适合需要"练"的东西(魔方、象棋开局、声乐和声、编程语言、代码库 onboarding),不适合"帮我总结一下二战史"。
  • 每节课很短,故意的:教育心理学概念"最近发展区"(Zone of Proximal Development,ZPD)——教学应刚好在学生被挑战但不被吓到的区域。
  • HTML 课件需要浏览器打开:.html 文件点开就是完整课件,图示、callout、测验、交互练习都在里面,手机上也能看。
  • 它不会陪你到最后:当学生的问题需要 wisdom 时,AI 尝试回答但最终委派到社区。目标是给你足够信心走出去跟真人学。

什么时候用它

  • 学一门新编程语言:先问你的现有水平,定 mission,搜高质量资源,出 HTML 课件,每课带练习,下次打开接着来。
  • 新人 Onboarding:给新人一个独立目录指到代码库,让 /teach 教他代码怎么交互、核心概念是什么。文档对每个人都不一样——根据每个人的起点出不同的课。
  • 学一个"一直想学但没时间碰"的东西:魔方、象棋开局、吉他指法、日语五十音。
  • 练一个具体技能点:不是"学钢琴",是"练好 C 大调音阶的指法"。越具体越好用。

常见翻车现场

  • 别在已经有文件的目录跑,Workspace 会乱,开一个新的空目录。
  • 第一次的 mission 写认真点,AI 根据 mission 决定教什么、教多深。“我想学 Python"和"我想用 Python 写一个能从 Excel 读取数据并生成 PDF 报表的脚本”——后面的课完全不一样。
  • 别指望它替代系统课程:Teach 是私人教师,不是培训机构,擅长针对性补强和兴趣驱动学习。
  • 反馈要说实话:“差不多懂了"和"完全掌握了"会让 AI 走完全不同的路径。
  • 清空上下文不是 bug 是设计:每次新会话都是空上下文,但进度在文件里,重新输入 /teach 它自己读回来。

安装和开始

# 单独装 teach
npx skills add https://github.com/mattpocock/skills/tree/main/skills/teach

# 或者装全套
npx skills@latest add mattpocock/skills

然后找一个空目录,在 Claude Code 或 Codex 里输入 /teach

Matt Pocock 的设计哲学

一个教了 10 年书的人

Matt 做了 6 年声乐教练、4 年 TypeScript 教学。10 年教学经验告诉他:好的教学永远是有状态的。“我教学生的时候,我记得你学到哪了,我知道你掌握了什么、下一步该学什么。我还记得之前教类似内容时用过的那些好资源。“所以他一 start 就把 teach 设计成 stateful——往文件系统里写东西,跨会话记住进度。

Stateful vs Stateless

这是 skill 设计最基础的分水岭:无状态 skill 不存任何东西,关掉上下文就归零;有状态 skill 写文件或 MCP 服务器,下次接着来。Matt 自己的两个 skill 做对照:grill-me 完全 stateless(拷问你,完事就完事),grill-with-docs 是 stateful(往仓库里存 ADR、术语表,用得越多项目上下文越丰富)。“不是说哪个更好,它们只是适用不同场景。设计 skill 的时候,你得想清楚它需要哪种模式。”

HTML 课件的真正威力

课程文件是 HTML 不是 Markdown,是 teach 最精彩的设计决策。交互按钮、guided mode、可点击步骤、动态图示——让 AI 从"讲给你听"变成"带着你练”。“我们现在有浏览器的全部能力可以用。这就是 Markdown 做不到的事。”

最近发展区:为什么每节课都要短

教学应该始终发生在学生刚好被挑战、但不被吓到的区域。每节课必须紧凑、聚焦、精确框在 ZPD 内。这也是为什么 teach 把所有东西存到文件系统——每次清空上下文重新跑 /teach,AI 立刻回到你的 ZPD,不需要重新摸索。

Knowledge → Skills → Wisdom 三层框架

Matt 在 skill 文件里定义了一套教学哲学,而不是只给操作指令:

  • Knowledge(知识):来自高可信度一手资料,AI 帮你整理和解释。
  • Skills(技能):通过 HTML 交互课件练习,带着你做,不是讲给你听。
  • Wisdom(智慧):必须来自社区,跟真人讨论、参加比赛、在真实世界检验想法。

当学生的问题到了 wisdom 层,AI 的默认姿态是"尝试回答,但最终委派到社区”。“Teach skill 的目标不是让你永远依赖 AI 学习一切。它要给你足够的技能和信心,让你走出去、加入社区、融入真实世界。”

工程场景:代码库 Onboarding

“写文档真的很痛苦。不仅要保持更新,而且那些文档很可能不在这个人的最近发展区里。他可能用过你的技术栈,只是需要理解具体的问题域;也可能熟悉问题域但完全不懂 TypeScript。“用 teach 模式:给新人一个独立 workspace,让他自己学代码怎么交互、核心概念是什么,产出的是一个极短时间内就能干活的人。

开发者是 AI 的第一批先遣队

“AI 写代码的能力远超其他任何领域。我们是第一批能在 AI 极其擅长的问题上测试它的人。练出来的这些技能、建立的这些直觉——可以带出编程,迁移到任何其他地方。““不管未来的工作形态怎么变,跟 AI 协作的能力都是极其宝贵的。我们就是最先掌握它的人。“我们今天的肌肉记忆,会是明天所有人的基础设施。


原文:公众号「钉子之家」《Matt Pocock 教你把 Claude Code 变成私人教师 - /teach Skill 完整使用指南》