Matt Pocock 的 21 个 skill:把软件工程基本功装进 Claude Code
> 原始仓库:mattpocock/skills · Shell · MIT · 2026-09-02 单日 +1272 stars
一个 TypeScript 教育者为什么去写 agent skill
Matt Pocock 这个名字在 TypeScript 圈子里有分量。他是 Total TypeScript 的作者,这个课程在 TS 开发者里的渗透率很高。2026 年他做了一件看起来不太搭的事:把自己的 .agents 目录开源了,21 个 Claude Code skill,MIT 协议。
mattpocock/skills 在 2026-09-02 单日涨了 1272 stars,是当天 GitHub Trending 增长最高的项目之一。一个 Shell 语言的项目能涨成这样,说明它踩中的不是技术新颖度,而是工程实践的痛点。
四种失败模式,四个 skill
Matt 的 README 没有按功能分类 skill,而是按失败模式分类。这是一个很聪明的叙事结构——不是”我有什么工具”,而是”你遇到什么问题”。
失败模式 1:Agent 没做我想要的
> “The most common failure mode in software development is misalignment. You think the dev knows what you want. Then you see what they’ve built – and you realize it didn’t understand you at all.”
解法是 grilling session(拷问式对齐)。在开始写代码之前,让 agent 反过来拷问你:你到底要什么?边界条件是什么?异常情况怎么处理?
两个 skill 对应这个模式:
– /grill-me:非代码场景的对齐
– /grill-with-docs:代码场景的对齐,同时构建项目的领域模型
失败模式 2:Agent 太啰嗦
这个问题的根源不是 agent 话多,而是没有共享语言。Eric Evans 在《领域驱动设计》里说的 ubiquitous language——开发者和领域专家应该用同一套词汇。agent 也一样:如果你管”课程里的一个 lesson 被分配到文件系统”叫”materialization cascade”,agent 就不需要每次都用 20 个词来描述这件事。
/grill-with-docs 在拷问过程中同时构建 CONTEXT.md——一个项目的共享词典。Matt 说这可能是整个仓库里最强大的技术:
> “It’s hard to explain how powerful this is. It might be the single coolest technique in this repo.”
效果示例: – 之前:”There’s a problem when a lesson inside a section of a course is made ‘real’ (i.e. given a spot in the file system)” – 之后:”There’s a problem with the materialization cascade”
失败模式 3:代码不工作
对齐了,但代码还是坏的。问题出在反馈回路。agent 在没有反馈的情况下写代码,等于盲飞。
解法是 TDD(测试驱动开发)的红-绿-重构循环: – 红:先写一个失败的测试 – 绿:用最简单的方式让测试通过 – 重构:改善代码结构,保持测试绿色
/tdd skill 把这个循环固化成 agent 的默认行为。/diagnosing-bugs 则是一个分阶段的调试循环:构建能复现 bug 的反馈回路 → 最小化 → 假设 → 插桩 → 修复 → 回归测试。
失败模式 4:代码变成泥球
> “Agents can radically speed up coding, they also accelerate software entropy.”
这句话精准。agent 让你写代码快 10 倍,也让你的代码变烂快 10 倍。因为 agent 不在乎架构——你让它加功能,它就加功能,不会主动说”等等,这里应该先抽象一个接口”。
解法是每天投资设计(Kent Beck 的话)。几个 skill 对应:
– /to-spec:把当前对话变成规格说明,发布到 issue tracker
– /to-tickets:把计划拆成 tracer-bullet tickets,每个声明自己的阻塞依赖
– /improve-codebase-architecture:扫描代码库,找出”可以加深”的模块,生成 HTML 报告,然后拷问式地走完你选的那个
User-invoked vs Model-invoked:一个关键区分
Matt 的 skill 分两类:
User-invoked(用户触发):只有你输入 /grill-me 才会触发。它们的职责是编排——组织一次对齐、一次规划、一次架构审查。
Model-invoked(模型触发):你或者 agent 都可以触发。当任务匹配时,agent 自动调用。它们承载可复用的纪律——TDD、code review、调试流程。
规则是:user-invoked skill 可以调用 model-invoked skill,但不能调用另一个 user-invoked skill。这避免了 skill 之间的递归调用导致的失控。
这个分类对应了一个深刻的认知:有些决策应该由人做,有些执行可以由 agent 自主。规划和对齐是人做的,执行和检查可以交给 agent。把两者混在一起,要么人被 agent 带着跑,要么 agent 被人卡死。
和 GSD/BMAD/Spec-Kit 的区别
README 里有一段对比,值得原文引用:
> “GSD, BMAD, Spec-Kit: They own the process. They take away your control. These skills give control back.”
这是一个重要的立场。大多数 agent 框架的设计哲学是”把流程固化进系统”——你按我的流程走,我保证结果。Matt 的哲学相反:skill 是工具,不是流程。你可以用 /grill-me 做对齐,也可以不用;你可以用 /tdd 写测试,也可以不用。skill 不会强制你做任何事。
这个区别在实践中的意义:GSD 类框架适合不熟悉软件工程的团队(流程帮他们避免错误),Matt 的 skill 适合有经验的工程师(工具帮他们加速,但不替代判断)。
安装方式:订阅 vs fork
两种安装路径:
1. Claude Code plugin:作为 managed read-only bundle 安装,Matt 更新时你自动同步。你”订阅”而不是”fork”。
2. skills.sh:把 skill 文件复制到你的 .agents 目录,你可以随意修改。
这个设计很聪明。大多数用户不需要改 skill——他们需要的是”Matt 更新了 /tdd 的 best practice,我自动拿到”。少数用户需要定制——他们用 skills.sh 拿到源文件自己改。
为什么涨 1272 stars/day
这个数字背后的逻辑:
1. Matt Pocock 的个人品牌:Total TypeScript 的受众和 Claude Code 的受众高度重叠——都是认真对待代码质量的开发者。 2. 痛点真实:四个失败模式是每个用 Claude Code 的人都遇到过的。不是”这个工具很酷”,是”这个问题我终于有解了”。 3. 门槛低:Shell 脚本 + Markdown,不需要装任何运行时。一条命令安装。 4. 不和现有工具冲突:skill 是叠加层,不替代 Claude Code 本身的功能。
限制
– Claude Code 专属:skill 格式是 Claude Code 的 SKILL.md,不直接兼容其他 agent 框架。 – 强依赖个人判断:21 个 skill 是 Matt 的个人最佳实践。你的项目可能需要不同的实践——但你可以 fork 后修改。 – 没有自动化验证:skill 的效果取决于 agent 是否正确执行。没有”这个 skill 被正确执行了”的验证机制。
一句话总结
Matt Pocock 的 21 个 skill 不是什么革命性的新框架,而是把软件工程的基本功——对齐、共享语言、TDD、架构投资——固化成 Claude Code 可以调用的 skill。它的价值不在技术新颖度,在于把老生常谈的好实践做成了可以一键安装的工具。1272 stars/day 说明很多人需要这个。
