本期做单个 Skill 的深度拆解,对象是 skills.sh 总榜第 9 名的 vercel-react-best-practices(647.0K 安装),来自 Vercel 官方技能仓库 vercel-labs/agent-skills。选它的理由有三:一,它是榜单头部唯一一个「规则库型」Skill——和 grill-me 的访谈式、tdd 的工作流式、rigorpilot 的编排式完全不同,70 条规则靠 ID 前缀和优先级表组织,是另一种值得学的 SKILL.md 范式;二,它的渐进式披露做得很干净,主文件常驻上下文极小,细节全在按需加载的 rules/ 目录;三,同一个仓库里还有 7 个同范式兄弟技能,其中 web-design-guidelines(557.7K,总榜 37 名)也进了头部,整个仓库是一套完整的「企业规则库」样本。本文逐段拆它的 SKILL.md,并顺手指出一处官方文档自相矛盾的细节。
vercel-labs/agent-skills 是 Vercel 官方维护的 Agent 技能集合,MIT 协议,README 自述「Skills follow the Agent Skills format」。8 个技能全部是「审查/最佳实践」定位:
| 技能 | 定位 | 规模 | skills.sh 排名/安装量 |
|---|---|---|---|
| vercel-react-best-practices | React/Next.js 性能优化规则 | 70 条规则、8 类 | #9 / 647.0K |
| web-design-guidelines | Web 界面审查(可访问性/UX) | 100+ 条规则、11 类 | #37 / 557.7K |
| writing-guidelines | 文档与文案写作规范 | 80+ 条规则 | 榜内 |
| react-native-guidelines | React Native/Expo 最佳实践 | 16 条规则、7 节 | 榜内 |
| vercel-optimize | Vercel 项目成本/性能审计 | 指标驱动 | 榜内 |
| vercel-deploy-claimable | 一键部署到 Vercel | 自动识别 40+ 框架 | 榜内 |
| composition-patterns | React 组合模式 | 4 类模式 | 榜内 |
| react-view-transitions | View Transition API | 组件+CSS 配方 | 榜内 |
一个有意思的生态位观察:总榜第 1 的 find-skills(3.0M)同样来自 vercel-labs——Vercel 既 owns 技能分发的 CLI 入口,又 owns 头部内容技能,这在整个生态里是独一份的卡位。
以下评分基于本次实际抓取的仓库 README 与 SKILL.md 原文,实战效果以 skills.sh 安装量为主要佐证:
| 技能 | 功能完整度(25%) | 设计质量(25%) | 实战效果(20%) | 上手难度(15%) | 社区活跃度(15%) | 加权总分 |
|---|---|---|---|---|---|---|
| vercel-react-best-practices | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★ | 4.80 |
| web-design-guidelines | ★★★★★ | ★★★★☆ | ★★★★★ | ★★★★★ | ★★★★ | 4.65 |
| writing-guidelines | ★★★★ | ★★★★★ | ★★★★ | ★★★★ | ★★★★ | 4.20 |
| vercel-optimize | ★★★★ | ★★★★ | ★★★★ | ★★★ | ★★★★ | 3.95 |
| vercel-deploy-claimable | ★★★★ | ★★★★ | ★★★★ | ★★★★★ | ★★★ | 3.90 |
| composition-patterns | ★★★★ | ★★★★ | ★★★ | ★★★★★ | ★★★ | 3.80 |
先看原文:
name: vercel-react-best-practices
description: React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
license: MIT
metadata:
author: vercel
version: "1.0.0"
description 是标准的三段式,值得逐句抄:
这三句分别对应技能路由的三个问题:你是谁、什么场景选你、用户说了什么词该想到你。很多 Skill 的 description 只写了第一句,等于把路由决策全丢给了模型自由发挥。
名字本身也是个设计点:目录名是 react-best-practices,但 frontmatter 的 name 是 vercel-react-best-practices——目录名与技能名不一致。原因不难猜:「react-best-practices」这种通用名在 2300+ 技能的市场里必然撞车,加上厂商前缀才能保证全局唯一和搜索直达。给 Skill 起名时用「厂商前缀 + 通用名」,是官方仓库示范的命名纪律。
SKILL.md 正文第一个实质内容,是一张把 8 个类别按影响力排序的表:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Eliminating Waterfalls | CRITICAL | async- |
| 2 | Bundle Size Optimization | CRITICAL | bundle- |
| 3 | Server-Side Performance | HIGH | server- |
| 4 | Client-Side Data Fetching | MEDIUM-HIGH | client- |
| 5 | Re-render Optimization | MEDIUM | rerender- |
| 6 | Rendering Performance | MEDIUM | rendering- |
| 7 | JavaScript Performance | LOW-MEDIUM | js- |
| 8 | Advanced Patterns | LOW | advanced- |
这张表是整个技能的灵魂,它做了三件事:
其一,给每条规则一个可引用的 ID。 后文 70 条规则全部是 async-parallel、bundle-barrel-imports 这样的「前缀 + 短横线名词」格式。有了 ID,Agent 输出审查报告时可以写「违反 rerender-no-inline-components」,用户拿 ID 就能反查规则文件——规则从「一段提示词」升级成了「可索引的知识条目」。这也是多技能协作的基础:另一个技能想引用 React 性能规则时,指个 ID 就够。
其二,前缀即分类。 Agent 在具体任务里只需要扫一遍前缀就能锁定相关子集:做数据获取看 async-/server-,调包体积看 bundle-,处理卡顿看 rerender-。不需要每次都把 70 条全部过一遍。
其三,优先级即降级策略。 SKILL.md 开头明确写了规则「prioritized by impact to guide automated refactoring and code generation」——这句话是写给 Agent 而非人看的:上下文预算紧张或改动范围受限时,先执行 CRITICAL 级的水梯消除和包体优化。人类写的规范文档很少敢做这种「哪些规则可以牺牲」的排序,而 Agent 场景里这才是关键信息。
优先级表之后是 8 个小节,每节用一行一条的格式列规则:
- `async-parallel` - Use Promise.all() for independent operations
- `bundle-barrel-imports` - Import directly, avoid barrel files
- `rerender-no-inline-components` - Don't define components inside components
我按 SKILL.md 实际列出的条目数了一遍:async 6 条、bundle 6 条、server 10 条、client 4 条、rerender 15 条、rendering 11 条、js 14 条、advanced 4 条,合计恰好 70 条,与正文自称的「70 rules across 8 categories」吻合。注意这个信息密度控制:每条规则只给「ID + 一句祈使句」,不解释、不举例。整个 Quick Reference 部分大约只有 2000 token,却覆盖了完整规则面——SKILL.md 是常驻上下文,它的每一行都要在每次会话里付租金,这里的克制就是成本设计。
规则内容本身也反映官方工程的最新偏好:bundle-analyzable-paths(偏好静态可分析的导入路径)、server-after-nonblocking(用 after() 做非阻塞操作)、rendering-activity(用 Activity 组件做显隐)、advanced-effect-event-deps(useEffectEvent 的依赖处理)——这些是博客文章还没写烂的新模式,规则库先行。
「How to Use」一节只有寥寥数行,但结构上是关键一跳:
Read individual rule files for detailed explanations and code examples:
rules/async-parallel.md
rules/bundle-barrel-imports.md
每个规则文件内部固定四件套:为什么重要(why)、错误示例及解释、正确示例及解释、补充上下文与参考。SKILL.md 明示了路径格式,Agent 就能对任何 ID 机械地拼出文件路径去按需读取——不需要每次会话加载全部 70 个示例。这是 Agent Skills 官方推崇的渐进式披露(progressive disclosure)在规则库场景的标准落地:常驻层放索引,细节层放磁盘,用路径约定连接两者。
末尾还有一条兜底:「For the complete guide with all rules expanded: AGENTS.md」——需要完整展开版时读编译产物。三层结构(SKILL.md 索引 → rules/*.md 单条 → AGENTS.md 全量)分别对应「扫一眼」「查一条」「读全部」三种粒度的需求。
有个值得玩味的细节:仓库 README 里 react-best-practices 一节写的是「Contains 40+ rules across 8 categories」,而 SKILL.md 正文写的是「Contains 70 rules across 8 categories」,且实际条目数就是 70。也就是说 README 的「40+」是旧数字没跟上——这发生在 Vercel 官方仓库里,说明一个普遍问题:一个技能有 README、SKILL.md、rules/、AGENTS.md 四个界面,同步成本是真实存在的。对技能作者的启示是:凡是会随版本增长的数字(规则数、类别数),要么只在一处声明,要么用构建脚本从规则文件数量自动生成,手写两遍迟早打架。
这个仓库还有一个多数技能仓库没有的机制。README 写明:技能在 main 分支上的每次变更,都会发布一个 immutable 的 GitHub Release,附上 Agent Skills discovery index 和每个技能单独的 artifact,并提供了本地复现命令:
npm ci --ignore-scripts
node scripts/build-discovery-index.mjs https://example.com/skills
这是把技能当软件包发版的思路:每个版本不可变、可追溯、可被聚合站索引。skills.sh 这类目录站能够稳定收录和计数,前提正是上游有这样的规范化发布。个人开发者写 Skill 用不到这套,但企业内部建技能库时,「技能变更走 Release、索引自动生成」是值得直接抄的工程化模板。
easy/simple/quick 形容用户任务,禁止用 em dash 做标点,要求弯引号而非直引号。这是把 Vercel 写作手册整个规则化成 Agent 可执行清单的产物。把本期主角放回设计模式的坐标系里,四种主流范式各有适用场景:
| 范式 | 代表 | SKILL.md 主体 | 适用场景 |
|---|---|---|---|
| 规则库型 | vercel-react-best-practices | ID 索引 + 优先级表 | 领域知识多而稳定,任务是「审/改」 |
| 工作流型 | tdd | 阶段闸门 + 循环 | 过程纪律重于知识 |
| 访谈型 | grilling | 提问策略 + 终止条件 | 需求模糊,对齐成本高 |
| 编排型 | rigorpilot 入口技能 | 路由到子技能 + 证据包 | 多阶段长流程,要审计 |
规则库型的三个成立条件:知识可以拆成独立条目;条目之间有可比较的重要性排序;使用方式以「检查/应用」为主而非「执行流程」为主。如果你的领域知识是「遇到 X 就做 Y」的映射(性能规则、无障碍检查、文案禁词都是),规则库型是上下文成本最低的选择。反过来,如果知识之间有强时序依赖(先做 A 才能做 B),硬拆成规则条目反而会丢失流程语义,那是工作流型的地盘。
flowchart TD
A[用户请求: 写/审/重构 React 代码] --> B{description 常驻匹配}
B -- 命中 --> C[加载 SKILL.md 索引层<br/>约2000 token]
C --> D[查8类优先级表<br/>CRITICAL 规则优先]
D --> E[按前缀锁定子集<br/>async- / bundle- / rerender-]
E --> F{需要细节?}
F -- 查一条 --> G[读 rules/async-parallel.md<br/>why + 错例 + 正例]
F -- 读全部 --> H[读编译版 AGENTS.md]
G --> I[带规则 ID 输出审查/重构]
H --> I
B -- 不命中 --> J[技能不触发<br/>零常驻成本]
mindmap
root((vercel-labs/agent-skills))
React主战场
react-best-practices 70条规则
composition-patterns
view-transitions
跨栈审查
web-design-guidelines 100+条
writing-guidelines 80+条
react-native-guidelines
产品自举
vercel-optimize 指标驱动
deploy-claimable 认领制部署
发布工程
immutable release
discovery index 自动构建
# 整仓库安装(安装器会让你挑选技能和目标 Agent)
npx skills add vercel-labs/agent-skills
# 或锁定最新版
npx skills@latest add vercel-labs/agent-skills
装好后无需配置,Agent 在写/审/重构 React 代码时会自动触发;也可以显式说「Review this React component for performance issues」来唤起。
[!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 等场景全覆盖。
