背景
Agent Skill 是一个可复用的能力单元,通常包含明确的职责边界、触发条件、输入输出约定,且可能封装了提示词、工具调用逻辑、状态 处理和约束规则。在工程化 Agent 系统中,Skill 更接近"函数 / 用例 / 子代理"。相对于提示词(Prompt),提示词只是其中的一部分实现细节,而不是 Skill 本身。从抽象层级看,提示词解决的是"模型怎么想、怎么说",Skill 解决的是这个 Agent 能做什么、在什么条件下做、做到什么程度。
Vercel 刚刚开源了 react-best-practices------一套封装了其 10 余年 React 与 Next.js 优化经验的 Agent Skills(智能体技能包)。不同于传统的性能文档,这个结构化仓库以AI 友好为核心设计目标,能直接集成到编码智能体(如 Claude Code、Cursor、Codex)中,让开发者与 AI 共同遵循统一的性能优化标准,从事后救火转向事前预防。
为什么需要这套 Skills?
React 生态的性能优化长期面临一个痛点:反应式优化(Reactive Optimization) 。多数团队的流程是"版本发布→用户反馈卡顿→排查性能问题",这种模式不仅成本高,还容易陷入优化错重点的误区。比如,花大量时间优化 useMemo 调用(React19 以后已无需手动优化)。却忽略了导致 600ms 等待的请求瀑布流,或每个页面额外加载的 300KB 冗余 JavaScript。
Vercel 团队在 10 余年生产环境实践中发现,90% 以上的 React 性能问题源于三大共性根因:
- 异步操作意外串行:本可并行的请求被写成顺序执行,导致等待时间叠加(即请求瀑布流);
- 客户端 Bundle 膨胀:随项目迭代,未清理的冗余代码、未懒加载的重组件持续增大包体积,拖慢首屏加载;
- 组件不必要重渲染:状态设计不合理或依赖传递不当,导致无关组件频繁触发重渲染,引发界面卡顿。
这些问题不是小事,它们会直接转化为用户可感知的加载缓慢和交互卡顿,并随着版本迭代积累成性能债务,持续影响用户的每次访问体验。而 react-best-practices 的核心目标,正是让这类问题变得可识别、可复现,并能通过自动化方式得到修复。
核心理念:按影响优先级排序,先解决关键问题
传统性能优化常因切入点太低失败,而 react-best-practices 提出了一套颠覆性思路,按优化影响度排序,先抓主要矛盾。其规则体系从"CRITICAL(关键)"到"LOW(增量)"分级,强制优先解决对用户体验影响最大的问题,具体优先级逻辑如下:
| 优先级 | 优化类别 | 影响等级 | 核心价值 |
|---|---|---|---|
| 1 | 消除异步瀑布流 | CRITICAL | 直接减少请求等待时间,提升交互响应速度 |
| 2 | 客户端 Bundle 体积优化 | CRITICAL | 降低首屏加载时间,减少流量消耗 |
| 3 | 服务端性能优化 | HIGH | 提升服务端渲染(SSR)/静态生成(SSG)效率 |
| 4 | 客户端数据获取 | MEDIUM-HIGH | 避免重复请求,减少网络资源浪费 |
| 5-8 | 重渲染优化、渲染性能、JS 性能、高级模式 | MEDIUM-LOW | 逐步优化细节体验,降低长期维护成本 |
以消除异步瀑布流为例,仓库中给出了典型的错误与正确实践对比:
错误写法(串行阻塞):
typescript
async function handleRequest(userId: string, skipProcessing: boolean) {
// 无论是否需要处理,都先等待 userData 请求完成,造成不必要阻塞
const userData = await fetchUserData(userId);
if (skipProcessing) {
return { skipped: true }; // 虽立即返回,但已浪费请求时间
}
return processUserData(userData);
}
正确写法(按需阻塞):
typescript
async function handleRequest(userId: string, skipProcessing: boolean) {
// 先判断是否需要处理,避免不必要的请求
if (skipProcessing) {
return { skipped: true };
}
// 仅在需要时发起请求,减少等待时间
const userData = await fetchUserData(userId);
return processUserData(userData);
}
另一类关键优化是并行化无关请求------若两个请求不依赖彼此,使用 Promise.all() 并行执行可直接将总等待时间减半:
typescript
// ❌ 串行请求(总耗时 = t1 + t2)
const user = await fetchUser(id);
const posts = await fetchPosts(user.id);
const settings = await fetchSettings(user.id);
// ✅ 并行请求(总耗时 = max(t2, t3))
const user = await fetchUser(id);
const [posts, settings] = await Promise.all([
fetchPosts(user.id),
fetchSettings(user.id)
]);
我推荐你试试 better-all, Promise.all 支持自动依赖优化和全类型推理。

仓库结构:AI 友好的结构化设计
react-best-practices 并非简单的文档集合,而是为 AI 智能体设计的可查询、可集成技能包。其 GitHub 仓库(vercel-labs/agent-skills)采用高度结构化的目录设计,核心文件与功能如下:
| 目录/文件 | 作用说明 |
|---|---|
rules/ |
单个优化规则文件,按"类别前缀 + 描述"命名(如 async-parallel.md),含错误/正确代码示例 |
rules/_template.md |
新建规则的模板,强制包含"标题、影响等级、标签、代码示例"等 AI 可识别字段 |
AGENTS.md |
自动编译生成的单文件文档,优化了 LLM 上下文读取效率,供 AI 智能体查询 |
metadata.json |
仓库元数据(版本、组织、摘要),方便工具识别与集成 |
src/ |
构建脚本与工具,支持编译规则、验证格式、提取测试用例 |
若开发者需要贡献新规则,只需遵循简单流程:
- 复制
rules/_template.md为rules/[类别前缀]-[描述].md(如bundle-dynamic-import.md); - 按模板填写"影响等级(如 MEDIUM)""规则说明""错误/正确代码示例";
- 运行
pnpm build重新编译AGENTS.md与测试用例; - 提交 PR 即可。
这种结构化设计确保了所有规则格式统一、信息完整,AI 智能体可快速提取关键信息,避免因文档格式混乱导致的理解偏差。
如何用?:AI 集成与团队落地
react-best-practices 的最大亮点是即插即用的 AI 集成能力------开发者无需手动阅读所有规则,只需将其安装为编码智能体的技能,即可让 AI 在写代码、做 Code Review 时自动应用这些优化经验。
1. 集成到编码智能体
通过一行命令,即可将技能包安装到 Opencode、Claude Code、Cursor 等主流编码工具中:
bash
npx add-skill vercel-labs/agent-skills

另一种集成方式,shadcn registry 可能非常适合创建和分发技能与代理,包括扩展第三方代理。

如何使用呢?以 Cursor 为例,Cursor 启动时会自动从技能目录中发现技能,并将它们提供给 Agent。Agent 会查看可用的技能,并根据上下文决定何时使用。也可以在 Agent 对话中输入 /,通过搜索技能名称手动调用技能。

2. 团队内部标准化
对于团队而言,react-best-practices 可作为统一的性能优化标准:
- 新人无需记忆复杂的优化规则,通过 AI 辅助即可写出高性能代码;
- Code Review 时,团队可直接参考仓库中的规则编号(如async-parallel 规则),避免主观争议;
- 定期运行
pnpm validate验证项目代码是否符合规则,提前发现性能隐患。
实际价值:从人治到AI 辅助的标准化
Vercel 开源这套技能包,本质上是推动 React 性能优化从依赖个人经验的人治模式,转向AI 辅助的标准化模式。其实际价值体现在三点:
- 降低门槛:初级开发者无需成为性能专家,借助 AI 即可应用 Vercel 10 年的优化经验;
- 避免债务:通过事前预防替代事后救火,减少因小问题积累的长期性能债务;
- 统一决策:大型团队可通过这套规则统一性能标准,避免不同开发者因理解差异导致的优化混乱。
结语
react-best-practices 的开源,标志着 React 生态的性能优化进入了AI 协同的新阶段------它不再是一份需要手动翻阅的文档,而是能嵌入开发流程的智能技能。对于开发者而言,这意味着更少的性能调试时间、更稳定的用户体验;对于 React 生态而言,这是一次性能优化标准的重要统一。
若你正在维护 React 或 Next.js 项目,不妨立即将其集成到你的编码工具中------让 AI 帮你守住性能底线,把精力集中在更有创造性的功能开发上。
最后,不得不感叹,前端工程师更难打造自身的护城河了,甚至不会有。