ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

深入解析 teach 技能:在 skills 仓库中用状态化教学工作区长期学习任何主题

深入解析 teach 技能:在 skills 仓库中用状态化教学工作区长期学习任何主题 深入解析 teach 技能在 skills 仓库中用状态化教学工作区长期学习任何主题【免费下载链接】skillsSkills for Real Engineers. Straight from my .agents directory.项目地址: https://gitcode.com/GitHub_Trending/skills13/skills导读teach是本仓库skills/productivity/分类下的一个用户主动调用型User-invoked技能其核心思想是把你运行它的那个目录变成一个可以跨多次会话持续积累的教学工作站。它不依赖模型已有的参数化知识parametric knowledge而是先去寻找高信任度的外部资源、记录在RESOURCES.md中并在每节课里逐条引用同时它是**有状态stateful**的使命、资源、课程和已学记录全部以文件形式留在目录里下一次会话从这些文件继续而不是从上次对话残留的上下文继续。读完本文你将掌握teach的工作原理、工作区目录结构、四种配套文件格式MISSION / RESOURCES / LEARNING-RECORD / GLOSSARY、它的适用边界以及它与handoff、research、ask-matt等技能的配合方式。一、teach 是什么把目录变成跨会话的教学工作站根据 docs/productivity/teach.md 的定义teach会把你运行它的目录变成一个常驻的教学工作区teaching workspace并围绕一个主题在多次会话中产出短小、自包含的 HTML 课程。它的两个结构性事实是不信任参数化知识它不会直接从模型已经知道的内容里教学。每次开课之前它先外出查找高信任度资源记录到RESOURCES.md并在每一节课内引用这些来源。有状态stateful使命mission、资源resources、课程lessons和你的学习记录learning records全部以文件形式保存在目录中。下一次会话从这些文件续接而不是依赖上一次对话在模型上下文里的残留。这种设计的直接后果是课程的连续性由文件夹承载而不是由对话承载。你在任意一个空目录里输入/teach它做的第一件事不是开课而是先访谈你为什么要学这个主题并把原因写进MISSION.md。从源码看SKILL.md 中如何定义教学工作站在 skills/productivity/teach/SKILL.md 的 frontmatter 中可以看到--- name: teach description: Teach the user a new skill or concept, within this workspace. disable-model-invocation: true argument-hint: What would you like to learn about? ---disable-model-invocation: true表明这是一个只能由用户输入/teach触发的技能模型不会自行调用。这与 skills/productivity/teach/agents/openai.yaml 中的配置一一对应interface: display_name: Teach short_description: Learn a concept in a guided workspace policy: allow_implicit_invocation: false也就是说在 Claude Code 一侧通过disable-model-invocation禁用模型自动调用在 OpenAI/Codex 一侧通过policy.allow_implicit_invocation: false禁用隐式调用两条配置共同保证只有你主动输入/teach时它才会启动。这与本仓库 skills/productivity/README.md 中对用户主动调用类技能的定义完全一致。SKILL.md的主体则要求 agent 把当前目录当作教学工作站并在目录中维护如下状态文件MISSION.md记录用户对主题感兴趣的原因所有教学都以此为基础格式遵循 MISSION-FORMAT.md./reference/*.html参考文档目录是课程压缩后的原料单元包括速查表、算法、语法、瑜伽体式、术语表等RESOURCES.md一份可探索的资源清单用于把教学扎根于上下文知识格式遵循 RESOURCES-FORMAT.md./learning-records/*.md学习记录目录相当于软件开发中的架构决策记录ADR捕捉非显而易见的知识与关键洞见用于计算最近发展区编号格式为0001-dash-case-name.md./lessons/*.html课程目录一节课是一个自包含的 HTML 输出是本工作区教学的主要单元./assets/*跨课程复用的组件见下文NOTES.md记录用户教学偏好或工作笔记的便签。二、何时该用 teach长期学习 vs 一次性解答根据 docs/productivity/teach.mdteach的适用场景是学习本身就是项目的情况一门语言、一个框架、一个你刚加入的代码库、瑜伽、着色器、某类认证考试。它不是用来顺带解释一个问题的工具。文档用一张对照表给出了明确的取舍建议你想要什么应该用什么在数周内学习一个主题并且会话之间要持续累积teach在当前会话里解释一个想法直接在会话里问agent 上一条消息没讲明白需要重新解释wait-what见 docs/productivity/wait-what.md打磨你已有的思考而非获取新内容grill-me见 skills/productivity/grill-me/SKILL.md让一个后台 agent 阅读一手资料并给你一份带引用的文档research见 skills/engineering/research/SKILL.md在 grilling 过程中遇到不懂的东西又不想打断 grilling先用handoff切到一个教学工作区再在那里用teach这里的关键区分是teach是以周为尺度、以会话为单位累积的学习工具。如果你只是想在一段对话里搞懂某个概念直接提问即可没必要为它建立一个教学工作站。三、前置条件与工作区布局一个工作区只服务一个使命teach建立的是一个目录而不是一个文件且技能假设一个工作区只对应一个使命mission。因此官方文档的建议是把它运行在某个你愿意整个交给单一主题的目录里并且不要放在你正在工作的项目里。推荐的做法是建一个独立仓库来承载学习而不是使用全局的~/.learnings/目录也不是放在你正在开发的项目中。独立的仓库还有一个额外的好处课程可以提交到 Git 里这正是团队之间分享课程的方式。在这样一个目录中随着学习推进会累积如下文件路径存放内容MISSION.md你为什么学这个。其他一切都挂在这份文件上如果它缺失teach做的第一件事就是访谈你直到把它写出来RESOURCES.md经过筛选的教学资料来源分为 Knowledge知识与 Wisdom社区/智慧两类lessons/*.html带编号的课程教学的主要单元reference/*.html压缩过的速查表、算法、术语表那些你真正会回头查阅的文档learning-records/*.mdADR 风格的学习记录记录你已经实际学会的东西用于决定接下来教什么assets/*可复用组件起点是一个共享样式表让所有课程看起来像同一门课NOTES.md你明确表达的教学偏好文档还诚实地指出了这张表的两处注释术语表glossary对大多数主题都很有用但技能虽然随附了 GLOSSARY-FORMAT.mdSKILL.md当前却不再链接到它所以只有你明确要求时才会生成术语表对应上游仓库 issue #559。工作区不一定创建在你预期的地方这是后面要详细讲的 issue #377所以在它之上搭建长期课程之前先确认第一节课落在哪里。安装入口如果你想在本地尝试该技能README.md 提供了两种安装路径Claude Code 用户可运行claude plugins install mattpocock-skills或在会话内执行/plugin install mattpocock-skills它会以托管、只读、随发布自动更新的方式安装整套技能希望自由修改技能文件的人可运行npx skillslatest add mattpocock/skills将技能以可编辑的普通文件写入自己的仓库。注意两种方式任选其一同时安装会让每个技能出现两份。四、存储强度而非流畅度让学习留得住teach背后的核心学习科学词汇是存储强度storage strength——长期保留的知识——与之相对的是流畅度fluency当下那一刻的回忆能力它在你阅读时感觉像掌握了一周后却消失殆尽。teach的目标是构建前者手段是合意困难desirable difficulty具体包括三种练习策略提取练习retrieval practice从记忆中回忆而不是反复阅读间隔spacing把练习分散到时间轴上交错interleaving在练习中混合不同但相关的主题仅限技能训练SKILL.md 明确注明这一点。这一点在 skills/productivity/teach/SKILL.md 的 Philosophy 一节中有更完整的表述。它把深度学习拆成三个层次知识Knowledge从高质量、高信任度的资源中获取。在RESOURCES.md填充好之前agent 的首要任务是去寻找好资源——永远不要信任自己的参数化知识。有些主题偏知识型理论物理有些偏技能型瑜伽。技能Skills通过高度相关的交互式课程习得。知识先行然后通过紧反馈环来打磨技能。对于技能获取困难是工具费力的提取才构建存储强度。智慧Wisdom来自与其他学习者和实践者的真实互动。SKILL.md对知识获取和技能训练给出了相反的态度对知识获取而言困难是敌人因为它会吞噬你理解所需的短期工作记忆对技能获取而言困难是工具。课程应该围绕一个要学习的技能来设计课内的知识只保留习得该技能所需的最小部分先教知识再用交互式反馈环让用户练技能。反馈环要尽可能紧最好即时、最好自动。有两件事决定你会被教什么使命一个具体、真实的现实原因让每节课都有落点。没有使命课程会漂移到抽象也没有任何东西能裁决接下来该学什么。最近发展区zone of proximal development从使命和学习记录出发teach挑选下一节课的内容——挑战得刚好够费劲又不至于远到无法学会。这也是为什么技能会顶回来而不是一味顺从。一个需要智慧现实世界判断力的问题它会给出尝试性回答然后指引你去一个可以验证它的社区一次测验是一道关卡而不是走过场——文档记录了一位用户说了句非常感谢结果被告知训练仍在进行中。五、课程、参考文档与组件三者分工课程Lessons一节课lesson是一个自包含的 HTML 文件保存在./lessons/编号格式为0001-dash-case-name.html数字递增。根据 skills/productivity/teach/SKILL.md 的要求一节课应当美观干净、可读的排版与布局因为用户之后还会回来复习——文档用 Tufte 的设计美学作类比短小能很快完成。学习者的工作记忆非常小必须留在工作记忆的承受范围内给出一个具体的、可累积的胜利tangible win直接绑定使命并且位于用户的最近发展区内如果可能用 CLI 命令为用户打开课程文件通过 HTML 锚点链接到其他课程和参考文档推荐一个一手资料源primary source让用户自己去读或看这是你找到的最高质量、最高信任度的资源包含一条提醒用户向 agent 提问的提示——agent 就是他们的老师可以解答任何不清楚的地方。参考文档Reference Documents值得记住的分工是课程很少被回头翻阅参考文档才是。所以一节课的压缩精华语法表、算法、体式序列、术语表应该放进reference/而不是埋在引入它的那节课里。有些主题天然适合做成参考文档编程的语法与代码片段流程的算法与流程图瑜伽的体式与序列健身的训练动作与计划任何自带术语体系的主题的术语表。其中术语表尤其重要一旦建立之后的每节课都必须遵守它的用词。从 GLOSSARY-FORMAT.md 可以看到术语表的几条规则只有当用户真正理解某个术语时才收录它术语表是压缩知识的记录不是给用户读的词典要有主见地选词并把同义词列为 Avoid 列表定义保持一两句话定义内部也要优先使用术语表已有的词随着理解加深要就地修订陈旧条目。组件Assets课程由assets/里的可复用组件搭建样式表、测验小部件、模拟器、图表辅助工具以及任何第二节课还能复用的东西。复用是默认行为而不是例外编写课程之前先读./assets/从已有的组件出发当一节课需要新的可复用物时把它写成assets/里的组件再链接它绝不内联一段未来课程会重复的代码。每个工作区挣到的第一个组件就是共享样式表每节课都链接它于是所有课程看起来像同一门连贯的课而不是一堆一次性产物。随着工作区成长组件库也应一起长大。测验的防剧透设计关于交互式测验SKILL.md有一条具体约束每个答案的单词数必须完全相同如果可能字符数也相同。这是为了不给用户留下任何通过格式判断答案的线索——历史上正确的答案往往是唯一推理完整的那个从而成为一个明显的提示。六、工作区的四种文件格式源码级详解teach的工程化程度体现在它的配套格式文档上以下模板来自本仓库 skills/productivity/teach/ 下的格式文件。MISSION.md一切教学决策的罗盘MISSION-FORMAT.md 定义了MISSION.md的模板# Mission: {Topic} ## Why {1-3 句话。用户追逐的具体现实目标。掌握这个技能后他们的生活或工作会有什么变化 避免理解 X这类抽象表述要追问到底层的产出。} ## Success looks like - {一个具体的、可观察的、用户将能做到的事情} - {另一个具体的事情} - {…} ## Constraints - {时间、预算、既有承诺、学习偏好任何限制方法边界的东西} ## Out of scope - {用户明确表示现在不想追逐的相邻主题保护最近发展区}其规则包括一个工作区只有一个使命想学两件不相关的事就是两个工作区具体优于抽象十月份跑完半马胜过变得更健康给我的团队交付一个 Rust CLI胜过学习 Rust对含糊表达要顶回去用户说不清为什么就先访谈一个糟糕的使命比没有使命更糟现实变化时及时修订保持简短如果MISSION.md超过一屏它就不再是罗盘而是计划书了。RESOURCES.md高信任度资源的策展清单RESOURCES-FORMAT.md 定义了RESOURCES.md的结构# {Topic} Resources ## Knowledge - [Book: _The Science and Practice of Strength Training_ by Zatsiorsky Kraemer](https://example.com) Foundational text on programming and adaptation. Use for: anything to do with periodisation, recovery, intensity zones. - [Article: How Much Should I Train? by Greg Nuckols (Stronger By Science)](https://example.com) Evidence-based review of volume landmarks. Use for: weekly set targets per muscle group. ## Wisdom (Communities) - [r/weightroom](https://reddit.com/r/weightroom) High-signal subreddit, moderated against bro-science. Use for: programme critique, plateau troubleshooting. - Local: Tuesday strength class at {gym name} Use for: real-time coaching feedback on lifts.其规则要点只要高信任度资源优先一手来源、公认专家、同行评审内容、强管理的社区营销包装成教育的资源不要每条都要注释三个月后裸链接毫无用处补一行它覆盖什么、什么时候该去用它按 Knowledge / Wisdom 分组显式暴露缺口如果使命需要但找不到好资源写一个## Gaps章节这驱动后续搜索无情地修剪被证明错误、浅薄或偏离使命的资源应删除五条锋利的好资源胜过三十条平庸的记录社区偏好用户退出社区的决定要记下来后续会话不要再反复提议。learning-recordsADR 式的学习记录LEARNING-RECORD-FORMAT.md 定义学习记录是教学的 ADR捕捉非显而易见的经验、关键洞见和已声明的先验知识用于计算最近发展区。模板极简# {本次学到或确立内容的简短标题} {1-3 句话学到了什么或确立了哪些先验知识以及它为什么对后续会话重要。}记录的核心价值在于记下这件事现在已经知道了和它为什么改变接下来该教什么而不是填满章节。可选章节只有三个状态 frontmatter、证据、影响且大多数记录用不上。编号规则是扫描./learning-records/中最大的编号加一。什么时候该写一条学习记录用户展示了对某件不平凡事情的真正理解不只是接触过而是有证据证明能正确使用用户披露了先验知识我已经知道 X并记录声称的深度一个错误概念被纠正这类记录价值最高能预测相关主题未来的绊脚石使命因学习而发生偏移交叉链接到MISSION.md并更新它。什么不算学习记录只是被覆盖过的材料覆盖不是学习要等证据已在术语表中压缩记录过的词条逐会话的活动日志学习记录不是日记是决策级的洞见。当一条后续记录与旧记录矛盾时把旧记录标记为Status: superseded by LR-NNNN而不是删除——理解演化的历史本身是有用的信号。NOTES.md教学偏好的便签最后NOTES.md是 agent 的便签本用户有时会表达希望被怎么教的偏好或需要记住的事情都应记录在这里设计课程时回头查阅。七、常见问题来自文档的实战经验1. 文件被放到了哪里我的课程落在了~/.claude/skills这是一个真实存在的公开 bug上游 issue #377。根因是SKILL.md同时用./指代两个不同的根./MISSION-FORMAT.md及其同级文件确实与已安装技能中的SKILL.md相邻而./lessons/、./reference/、./learning-records/、./assets/本应落在你的工作目录里。如果一个 agent 把第一种./解析到了技能的安装目录就会把第二种./也解析到那里从而把你的课程写进技能文件夹。对策是在开课之前先检查第一节课落在了哪里并在开始时显式命名目标目录而不是依赖当前目录被正确理解。2. 我该留在同一个会话里还是每节课开一个新会话三种方式都可行留在同一会话在新会话里重新输入/teach在同一文件夹里开新会话。每一节课都是独立的一次调用。连续性由文件夹承载而不是由对话承载。常见的实践是在工作区里开一个新会话然后说/teach继续讲 主题 的下一课。3. 我怎么知道它不是编造了教学内容你不能只凭技能的一句话就信任它——你要去读一手资料。teach还不足以被不加核验地信任任何构建在 LLM 之上的技能都一样。它的接地机制RESOURCES.md、每节课内的引用、每节课推荐一个一手资料源是为了让核验变得廉价而不是消除核验的必要。文档明确记录了一个真实失败案例一位用户学习 2×2 魔方时被给出了无法还原魔方的虚构转动序列。遇到此类情况的诊断清单是模型model、执行环境harness、努力程度effort、以及资料来源是什么。风险在有精确记号的程序性领域最高在输出立即可验证比如可以运行的代码的领域最低。4. 正确的测验答案总是第一个选项这一点已被多人在 Sonnet、Opus 和 GLM 上确认且至今未修复。SKILL.md现在要求每个答案单词数相同这消除了一种提示正确选项曾经是唯一推理完整的那个但对位置没有任何约束。有贡献者测试过一个针对位置的指令级修复结果在九个课程的 33 次测验中正确答案仍然 33 次落在 A 槽issue #335这指向真正修法是在assets/里做一个渲染时打乱选项的测验组件而不是改进措辞。在该组件发布之前请把答案位置视为无意义信息。另外assets/目录属于你让 agent 写一个渲染时打乱的组件是完全合法的本地修复。5. 它假设我已经知道一些东西还使用了从未定义过的术语这是最常见的实质性抱怨。teach没有评估步骤它从使命和学习记录推断你的水平而第一节课时还没有任何学习记录。有位用户在 wayfinder 流程里运行它时说得很直白它从来不做 grilling 来确认我的起点所以它对我已知的东西做了大量假设。另一位用户报告课程依赖未定义的术语行话还有一节课根据用户的硬件定制讲了硬件能做什么却从不说它不能做什么。两个补救办法在第一条消息里就陈述你的先验知识和缺口当一节课偏离你的水平时当场纠正——因为这条纠正会变成一条学习记录引导下一节课。一个显式的知识评估步骤是长期存在的功能请求issue #725尚未作为已发布行为存在。6. 它做间隔重复吗它知道什么时候停止教学吗第一个问题的答案是不做第二个是不可靠。间隔与交错是课程设计所依据的原则但没有任何东西调度复习也没有 Anki 或日历集成——这两者都是反复出现的请求。与之相关的缺口是退出标准正如一位用户所说teach很擅长做下一节课但不那么擅长知道什么时候该停止、切换到复习或真实练习。如果你想要复习或训练而不是新材料请主动提出技能不会自己建议切换。7. 它只对编程有用吗不是而且文档记录显示非编程用途占了更大的部分韩语、日语正式语体、钢琴、吉他、桌游设计、OpenSCAD、电影情节、Azure 和 CCNA 认证、大学考试还有给八岁和十岁孩子做的关于密室逃脱和火蝾螈的可打印书。技能中没有任何编程专属的东西使命、资源、最近发展区和训练在任何领域都以同样的方式工作。在编程范围内报告中最强的用途不是从零学一门语言而是在一个陌生的代码库或新团队的栈里快速定位。8. 该用哪个模型运行它没有标准答案而且报告中的差异很大。更高的推理努力reasoning effort被报告能产生明显优于中等设置的课程。有用户把同一个技能经由 Copilot CLI 配 Codex 运行只得到一个 30 行的 HTML 卡片而 Claude Code 产出了完整的一节课。它在 Claude Cowork 中无需修改即可运行前提是你的组织允许在那里添加技能。如果课程产出偏薄先换模型、执行环境或努力程度再考虑改写提示词。八、判定标准它是否在正常工作skills/productivity/teach/SKILL.md 与文档共同给出了一套可验证的正常运转清单在空目录里它做的第一件事是访谈你为什么想学这个而不是直接产出课程RESOURCES.md在课程之前被填满并且每节课都点名一个值得你自己去读的一手来源课内的论断带着外部链接——一节没有任何引用的课说明技能在凭记忆教学一节课只占一次坐着学习的时间结束时你能做一件之前做不到的事在文件夹里开新会话说下一课续接课程而不是重启课程learning-records/在增长课程不再重复教你已经展示过的东西所有课程看起来像一门课它们链接assets/里的共享样式表而不是各自携带一份需要判断力的问题会被指向论坛、subreddit 或课堂而不是只给一个答案。九、它在技能体系中的位置teach是一个随时可取的独立技能reach-for-it-anytime standalone。它不是构建链中的一个步骤也不与工程流程共享任何产物它拥有自己的目录并在这个目录里一直待到主题结束。它唯一的真正邻居是handoff两者的组合正是 Matt 对被 grilling 问到我不懂的东西怎么办的答案不要停下来学习。用/handoff切到一个教学工作区在那里用/teach学会它然后回去接上原来的进度。这一组合的完整描述见 docs/productivity/handoff.md 与 skills/productivity/handoff/SKILL.md。邻近的替代方案是researchskills/engineering/research/SKILL.md当你想要的是一份带引用的文档而不是课程和长期记忆时用它。当你不确定哪个技能或流程合适时ask-mattskills/engineering/ask-matt/SKILL.md会在这整套技能上为你路由。从仓库整体看teach属于 skills/productivity/README.md 中的用户主动调用分组与grill-me、handoff、to-questionnaire、wait-what并列。根据 CLAUDE.md 的说明productivity桶承载日常非代码工作流工具每个该桶下的技能都要求一份人类可读的文档页即本文所依据的 docs/productivity/teach.md并在顶层 README.md 中有对应条目。这套文档页 SKILL.md 配套格式文件的结构正是teach能够作为独立技能被安装、共享、并在任意模型上运行的原因。结语teach的可贵之处在于它把长期学习做成了工程一个使命文件决定方向一份资源清单约束知识来源一系列 ADR 式的学习记录驱动最近发展区assets/组件库保证课程是一套连贯的课程而不是一堆一次性产物。它不是万能的——没有内置的间隔重复调度、没有显式的水平评估步骤、测验答案位置 bug 尚未修复——但它的设计意图非常清晰只从可信来源教学、让每次会话从文件而非对话上下文续接、用合意困难构建存储强度。配合handoff的暂停 grilling 去学习组合它把学习本身变成了一种可以放进任何工作流、并在数周内持续累积的工程实践。【免费下载链接】skillsSkills for Real Engineers. Straight from my .agents directory.项目地址: https://gitcode.com/GitHub_Trending/skills13/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表