年薪百万的 React 功底怎么“装进”AI?Vercel 的这个 Skill 给了标准答案

"用这个 Skill 相当于雇佣了一个 mini 版的 10 年经验 React 开发者。" ------ Guillermo Rauch, Vercel CEO

这句话成功引起了我的好奇。

最近刚逛 GitHub 的时候,还真发现了这个东西:Vercel 把他们内部的 React 最佳实践整理成了一个 Agent Skill

说白了,就是一份给 AI 编程助手看的"内部培训手册"。

这份 Skill 里有什么?

我下载下来看了一眼,还挺扎实的。一共 40 多条规则,按影响程度分了 8 个等级:

优先级 类别 影响程度
1 消除请求瀑布流 CRITICAL
2 Bundle 大小优化 CRITICAL
3 服务端性能 HIGH
4 客户端数据获取 MEDIUM-HIGH
5 重新渲染优化 MEDIUM
6 渲染性能 MEDIUM
7 JavaScript 性能 LOW-MEDIUM
8 高级模式 LOW

不是那种泛泛而谈的"要写好代码",每条规则都有错误示例和正确示例。

随便挑几个印象深刻的

barrel 文件的隐藏成本

这个我之前真没注意过。你写 import { Check, X, Menu } from 'lucide-react' 的时候,实际上加载了 1583 个模块,开发环境下要多花 2.8 秒。

正确的做法是直接 import 路径:

tsx 复制代码
// 错误:加载整个库
import { Check, X } from 'lucide-react'

// 正确:只加载需要的
import Check from 'lucide-react/dist/esm/icons/check'
import X from 'lucide-react/dist/esm/icons/x'

或者用 Next.js 13.5+ 的 optimizePackageImports 配置,让构建工具自动处理。

useState 的惰性初始化

这个坑我踩过。你写 useState(expensiveCalc()) 的时候,每次渲染都会执行 expensiveCalc(),虽然结果只用一次。

tsx 复制代码
// 错误:每次渲染都执行
const [data] = useState(buildSearchIndex(items))

// 正确:只执行一次
const [data] = useState(() => buildSearchIndex(items))

加个箭头函数就行,但不知道的话根本不会往这方面想。

RSC 边界序列化

这个是 Server Components 特有的问题。你从服务端传一个 50 个字段的 user 对象给客户端组件,50 个字段都会被序列化传输,哪怕客户端只用了一个 name。

tsx 复制代码
// 错误:序列化 50 个字段
async function Page() {
  const user = await fetchUser()  // 50 字段
  return <Profile user={user} />
}

// 正确:只传需要的
async function Page() {
  const user = await fetchUser()
  return <Profile name={user.name} />
}

这份 Skill 的真正价值

技术细节其实网上都能搜到,但 Vercel 这份东西的价值在于结构化优先级排序

你让一个新人去优化 React 性能,他可能会从"少用 useMemo"开始研究,因为网上这类文章最多。但实际上,消除请求瀑布流的收益是 useMemo 优化的 10 倍不止。

Vercel 把"什么最重要"这件事想清楚了,然后写下来了。

所有团队都应该做这件事

我觉得这个思路值得借鉴:把团队的内部最佳实践做成 Skill

想一想,你们团队有没有这样的场景:

  • 新人来了,要花两周熟悉代码规范
  • Code Review 的时候,同样的问题反复指出
  • 老员工离职,带走了一脑袋的"暗知识"

这些东西本来就应该文档化。现在有了 AI 编程助手,文档化的收益更大了------不只是给人看,还能让 AI 自动执行。

Skill 的格式其实很简单

看了一下 Vercel 这个 Skill 的结构:

csharp 复制代码
react-best-practices/
├── SKILL.md                # 入口文件,概述和快速参考
└── references/
    ├── react-performance-guidelines.md  # 完整指南
    └── rules/              # 每条规则一个文件
        ├── async-defer-await.md
        ├── bundle-barrel-imports.md
        └── ...

核心就是一个 SKILL.md,里面写清楚:

  • 这个 Skill 是干什么的
  • 什么时候应该用
  • 具体规则的概述

复杂的内容放 references 目录,按需加载,不浪费 token。

怎么安装这个 Skill

如果你也想用,很简单:

bash 复制代码
# 克隆到全局 skills 目录
cd ~/.gemini/antigravity/skills
git clone --branch react-best-practices --single-branch --depth 1 \
  https://github.com/vercel-labs/agent-skills.git temp
mv temp/skills/react-best-practices .
rm -rf temp

之后 AI 写 React 代码的时候就会自动参考这些规则了。

一点感想

Vercel CEO Guillermo Rauch 说过一句话,大意是"AI 代理正在成为软件的主要消费者"。我觉得这个趋势会继续下去。

以前写文档是给人看的,现在写 Skill 是给 AI 看的。本质上是同一件事:把知识结构化,让它能被复用

只不过 AI 的"阅读速度"比人快得多,格式要求也更严格。但好处是,一旦写好了,AI 真的会"照做"------不像人,看完文档转头就忘。


如果你觉得这篇文章有帮助,欢迎关注我的 GitHub,下面是我的一些开源项目:

Claude Code Skills (按需加载,意图自动识别,不浪费 token,介绍文章):

VS Code 扩展

  • vscode-ai-commit - 帮你写 Commit Message 的插件。读取 staged diff,一键生成符合 Conventional Commits 规范的提交信息;支持自定义模型(OpenAI 格式)和 Prompt。

qwen/gemini/claude - cli 原理学习网站

全栈项目(适合学习现代技术栈):

  • prompt-vault - Prompt 管理器,用的都是最新的技术栈,适合用来学习了解最新的前端全栈开发范式:Next.js 15 + React 19 + tRPC 11 + Supabase 全栈示例,clone 下来配个免费 Supabase 就能跑
  • chat_edit - 双模式 AI 应用(聊天+富文本编辑),Vue 3.5 + TypeScript + Vite 5 + Quill 2.0 + IndexedDB
相关推荐
网安蟹佬霸10 分钟前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源
单线程_0129 分钟前
【源码阅读】Vue3 Tokenizer 词法分析器完整状态机流转深度梳理(3.4+ 新版架构)
前端
PBitW1 小时前
PM 丢来 3 个 Excel、12 个功能、4 种情形?用 TRAE Work 30 分钟整理成前端开发文档
前端·trae
咖啡星人k2 小时前
2025 AI编程进入“自动驾驶“时代:我用MonkeyCode把Agent、MCP和AI原生工作流跑通了
人工智能·自动驾驶·prompt·aigc·ai编程·ai-native
粥里有勺糖2 小时前
分享一下最近做的AI记账 App | 欢迎体验
app·agent·ai编程
小博测试成长之路3 小时前
55分钟能用飞算JavaAI搭完JWT REST API吗?
springboot·ai编程·java开发·飞算javaai·ai coding·java代码生成
风骏时光牛马3 小时前
AIAgent高可用架构:弹性容错与故障自愈的落地实践
前端
IT_陈寒3 小时前
Vue的响应式什么时候会失灵?这个坑我踩了
前端·人工智能·后端
烟锁池塘柳03 小时前
解决 Firefox 浏览器网页文本选中高亮不明显问题(含仅修改特定网站高亮显示的方案)
前端·firefox
Patrick_Wilson3 小时前
Web 认证方案技术指南
前端·后端·面试