AIHero
    19 / 25为真正的工程师打造的 AI 技能 · 10 分钟阅读

    /teach 技能

    通过多节层层递进的会话学习一个主题。

    Matt Pocock
    Matt Pocock
    下一页

    安装此技能

    npx skills@latest add mattpocock/skills --skill=teach

    然后输入 /teach 来调用它。

    本页内容

    它的作用

    teach 把你运行它的目录变成一个常驻教学工作区,并在许多 sessions,以简短独立的自包含 HTML 课程形式。

    它不是基于 model 已经知道了。 参数化知识 被视为不可信:在教之前,它去找高可信度的资源,把它们记录在 RESOURCES.md,并在每节课里引用它们。另一个结构事实是它 有状态 ——使命、资源、课程和你的学习记录都以文件形式住在目录里,所以下一个会话从那些文件接手,而不是从上次对话残留的任何东西。

    何时使用

    你通过输入 /teach ——这个 agent 不会自动调用它。

    当学习本身就是项目时使用它:一门语言、一个框架、你刚加入的代码库、瑜伽、着色器、一个认证。它不是顺口解释一下的工具。

    你想要什么该用哪个
    在数周内学习一个主题,会话不断累积teach
    一个在你已在的会话中解释的想法就在那个会话里直接问
    智能体重新推销了上一条消息,因为它没被理解wait-what
    磨利你已有的思考,而不是获取新材料grill-me
    一个后台智能体来阅读 第一手资料 并给你留下一份带引用的文档research
    学习审问中途冒出来的东西,而不打断 追问审视handoff 输出到一个教学工作区,然后 teach there

    前置条件

    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 为你规划整套流程。

    技能操作

    安装技能

    Live Skills.sh install count
    npx skills@latest add mattpocock/skills

    安装整套技能,然后在智能体中输入 /teach 来调用它。

    用以下命令更新: npx skills updateSkills.sh