当大多数开发者还在写「一个 SKILL.md 解决一个问题」时,TypeScript 社区最有影响力的教育者 Matt Pocock(Total TypeScript 作者)已经把 Skill 做成了套件。他的 mattpocock/skills 仓库在 skills.sh 全站排行榜上霸榜:tdd 以 72.2 万安装排第 6,grill-with-docs(77.5 万)第 4,improve-codebase-architecture(74.7 万)第 5,handoff、triage、prototype 全部进入前 12。本期不重复拆已经写过的 grill-me,而是把镜头对准它的工程侧:tdd、diagnosing-bugs、code-review、codebase-design 这组「真实工程」Skill。通过 GitHub API 拉取的完整文件树可以看到,这套 Skill 的价值不在单个文件,而在三层系统设计——双层调用架构、瘦封装厚原语、附属文件懒加载。看完本文,你会明白为什么「套件化」正在成为 Skill 设计的下一个分水岭。
| Skill | 功能完整度(25%) | 设计质量(25%) | 实战效果(20%) | 上手难度(15%) | 社区活跃度(15%) | 综合 |
|---|---|---|---|---|---|---|
| tdd | ★★★★☆ | ★★★★★ | ★★★★☆ | ★★★★☆ | ★★★★★ | 4.5 |
| diagnosing-bugs | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★☆☆ | ★★★★☆ | 4.2 |
| code-review | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★☆☆ | ★★★★☆ | 4.1 |
| improve-codebase-architecture | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★☆☆ | ★★★★☆ | 4.1 |
| codebase-design | ★★★☆☆ | ★★★★☆ | ★★★☆☆ | ★★★☆☆ | ★★★★☆ | 3.6 |
| domain-modeling | ★★★☆☆ | ★★★★☆ | ★★★☆☆ | ★★★☆☆ | ★★★★☆ | 3.5 |
| vercel-react-best-practices(对照组) | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★★ | ★★★★☆ | 4.3 |
评分说明:安装数据取自 skills.sh 全站排行榜(2026-08-28 实时抓取);vercel-react-best-practices 作为「规则库」范式的对照组纳入,与 Pocock 的「流程纪律」范式形成对比。
mattpocock/skills 的 README 开宗明义:这套 Skill 不是功能集合,而是对 coding agent 四种典型失败模式的逐一回应。这个「问题驱动」的组织方式本身就值得抄:
| 失败模式 | 出处 | 对应 Skill |
|---|---|---|
| #1 Agent 没做我想要的 | 《程序员修炼之道》「没人确切知道自己要什么」 | grill-me / grill-with-docs |
| #2 Agent 太啰嗦 | Eric Evans《领域驱动设计》共同语言 | domain-modeling / CONTEXT.md |
| #3 代码跑不起来 | 《程序员修炼之道》「反馈速率是你的速度上限」 | tdd / diagnosing-bugs |
| #4 我们造了一团泥球 | Kent Beck「每天投资系统设计」 | codebase-design / improve-codebase-architecture |
每条失败模式都引用一本经典工程书籍作理论背书——这是 Skill 写作的高级技巧:用公认权威降低用户对新流程的信任成本。
从 GitHub API 拉取的文件树看,仓库把 Skill 分为四个目录:skills/engineering(18 个,日常代码工作)、skills/productivity(7 个,通用工作流)、skills/misc(4 个)、skills/in-progress(6 个,孵化中)。仓库根目录还有一份 44KB 的 CHANGELOG.md,说明迭代频率相当高。
这是整个仓库最值得学的设计。README 的 Reference 一节明确写道,所有 Skill 按一个轴切分——谁能调用它:
flowchart TD
subgraph UserInvoked["用户调用层(编排件)"]
IMPL["/implement<br/>按票据实现,在约定接缝驱动tdd"]
ICA["/improve-codebase-architecture<br/>扫描深化机会→HTML报告→追问"]
GWD["/grill-with-docs<br/>拷问+共建领域模型"]
TRI["/triage<br/>issue分流状态机"]
end
subgraph ModelInvoked["模型调用层(纪律件)"]
TDD["tdd<br/>红-绿-重构循环"]
CR["code-review<br/>双轴审查"]
DB["diagnosing-bugs<br/>诊断循环"]
CBD["codebase-design<br/>深模块设计规范"]
DM["domain-modeling<br/>术语与ADR维护"]
GR["grilling<br/> Interview原语"]
end
IMPL -->|"在预定接缝调用"| TDD
IMPL -->|"提交前收尾"| CR
ICA -->|"选中候选项后追问"| GR
GWD --> GR
TRI --> GR
TDD -.-> CBD
GWD -.-> DM
规则有三条:用户调用件(user-invoked)只能通过手动输入触发,职责是编排;模型调用件(model-invoked)既可手动触发,也会被 agent 在任务匹配时自动调用,承载可复用的纪律;用户调用件可以调用模型调用件,反之不行。翻译成软件工程语言:这是一套禁止向上依赖的分层架构,把「流程控制」和「领域纪律」解耦了。
这个设计的直接收益是组合自由度:你可以单独用 /tdd 改一个 bug,也可以让 /implement 在多票据开发中自动在「预定接缝」插入 tdd 循环、收尾时自动跑 code-review——同一个纪律件,两种消费方式。
skills/engineering/tdd/ 目录下只有四个文件(字节数来自 GitHub Git Trees API 实测):
skills/engineering/tdd/
├── SKILL.md 3,568 字节 ← 主文件,红-绿-重构循环
├── mocking.md 1,481 字节 ← 何时 mock、何时不 mock
├── tests.md 2,214 字节 ← 好测试/坏测试的判据
└── agents/openai.yaml 87 字节 ← 跨 agent 适配声明
第一处设计:主文件刻意保持小。 3.5KB 大约是 800 token 出头,加载成本可以忽略。对比仓库里的其他 Skill:wayfinder 的 SKILL.md 有 11.9KB,ask-matt 有 11.5KB——编排件需要完整流程图所以大,纪律件只写核心循环所以小。文件大小本身就编码了架构意图。
第二处设计:附属文件懒加载。 tests.md 和 mocking.md 不会在 Skill 触发时就进入上下文,而是 SKILL.md 在循环推进到「写测试断言」或「遇到依赖需要隔离」的对应步骤时才指引 agent 去读。这正是 Agent Skills 规范设计的渐进式披露(progressive disclosure)能力——Pocock 把它用成了「按需加载的方法论章节」。同样的模式出现在 codebase-design(附 DEEPENING.md、DESIGN-IT-TWICE.md,均取自 Ousterhout《软件设计哲学》的概念)和 domain-modeling(附 ADR-FORMAT.md、CONTEXT-FORMAT.md)。
第三处设计:不绑定测试框架。 SKILL.md 的循环描述是框架无关的——红(先写失败测试)、绿(最小实现让其通过)、重构(在测试保护下整理)。具体跑什么命令由仓库自身的测试设施决定,Skill 只负责「流程纪律」。这让它可以零配置插入任何项目,也是 72 万安装的重要前提:通用纪律 + 项目自带的反馈环,而非自建脚手架。
第四处设计:跨 agent 适配文件。 每个 Skill 目录里都有一个约 100 字节的 agents/openai.yaml。这个细节说明作者从一开始就按「多 agent 通用」设计,而不是 Claude Code 专属——配合 skills.sh 的安装器(支持 Claude Code、Cursor、Codex、Copilot、Windsurf 等 21 个 agent),同一个 Skill 文件可以在不同宿主间迁移。
skills/engineering/code-review/SKILL.md(6,634 字节)的设计点是把一次审查拆成两个互不污染的并行子 agent:
为什么要拆?单 agent 同时戴两顶帽子时,规范类意见会淹没需求类意见(或反之),而两个并行子 agent 各自只看一个轴,结论再合并。这是把「关注点分离」直接做进了 Skill 的执行拓扑里——不是写在提示词里的软约束,而是结构上的硬隔离。
与之配套的是 diagnosing-bugs(SKILL.md 8,969 字节):把调试封装成带门禁的阶段循环——构建一个能在此 bug 上变红的反馈环 → 最小化复现 → 提出假设 → 插桩验证 → 修复 → 回归测试。它是 skills/engineering/ 下少数带脚本的 Skill:scripts/hitl-loop.template.sh(1,319 字节)提供了一个 human-in-the-loop 循环模板,把「每阶段暂停等人确认」做成了可执行文件而非纯提示词。
把 vercel-labs/agent-skills(64.7 万安装的 vercel-react-best-practices 所在仓库)放进来对比,能看到 Skill 设计的两种范式:
| 维度 | Pocock 流程纪律范式 | Vercel 规则库范式 |
|---|---|---|
| 内容形态 | 循环、阶段、门禁 | 40+ 条规则,8 个分类,按影响优先级 |
| 知识来源 | 经典工程书籍 + 个人实践 | Vercel 工程部内部评审标准 |
| 生效方式 | 改变 agent 的工作节奏 | 改变 agent 写代码时的检查清单 |
| 代表触发 | 「实现这个功能」→ 进入红绿循环 | 「审查这个组件」→ 逐条比对规则 |
| 可裁剪性 | 高(纪律可部分采纳) | 中(规则可挑选但彼此独立) |
Vercel 仓库的 web-design-guidelines 走得更极端:100+ 条规则覆盖可访问性、表单、动画、排版等 11 类,本质是一份机器可执行的评审手册。两种范式没有高下——流程纪律适合「怎么工作」,规则库适合「什么是好」,成熟的个人配置往往是两者混装。
# 方式一:Claude Code 官方插件市场(托管式,自动更新)
claude plugins install mattpocock-skills
# 或会话内:/plugin install mattpocock-skills
# 方式二:skills.sh 安装器(文件落盘式,可自行魔改)
npx skills@latest add mattpocock/skills
# 安装时记得勾选 setup-matt-pocock-skills
# 只要 tdd 单件:
npx skills add mattpocock/tdd
# 安装后每仓库跑一次配置(选 issue 跟踪器:GitHub/Linear/本地文件)
/setup-matt-pocock-skills
README 特别提醒:两种方式二选一,都装会得到两份重复 Skill。托管式适合「订阅」,落盘式适合「fork 后改造」——这个双通道发布策略本身也值得国内 Skill 作者参考。
tdd — 框架无关、零配置、立刻改变 agent 产出质量code-review — 子 agent 双轴隔离,Skill 执行拓扑设计的教科书improve-codebase-architecture — 输出可视化 HTML 报告再逐项追问,定位是「普查而非抢救」grill-with-docs — 顺手把 CONTEXT.md 和 ADR 沉淀下来,属 Pocock 自评「整个仓库最酷的技术」handoff(62.8 万安装)— 会话压缩成交接文档,多 session 长任务的刚需件grill-me 的 SKILL.md 只有 147 字节、grill-with-docs 245 字节——它们只是指向 1.9KB 的 grilling 原语的指针。同一个 Interview 引擎被 grill-me、grill-with-docs、triage、wayfinder、improve-codebase-architecture 五个入口复用。写 Skill 先问:这个逻辑是否该下沉为一个可复用原语?[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
