安全扫描
OpenClaw
安全
medium confidence这是一个仅文档类的 React/Next.js 最佳实践技能,其文件和指令与声明的目的相符,看起来连贯且技术风险较低,但来源(作者/托管)不明确,因此在将其作为权威策略之前需要验证来源。
评估建议
该技能是一个 React/Next.js 最佳实践文档包,与其描述一致。风险较低,因为它只包含文本和示例代码,不请求凭证或安装。使用前有两个实用检查:(1) 验证作者/来源——元数据将 "vercel" 列为作者,但缺少注册表源/主页;确认您信任此副本后再将其作为官方策略,(2) 当您应用操纵 localStorage/cookies 或注入内联脚本的示例时,请在您的应用上下文中审查安全性(避免在 localStorage 中存储机密内容,清理任何注入的内容)。如果您需要官方 Vercel 指南,请从 Vercel 的验证网站或仓库获取,以确保您拥有权威和最新的来源。...详细分析 ▾
✓ 用途与能力
名称/描述承诺提供性能和视觉稳定性指导;该包包含 45 个规则文件和一个带有示例和说明的 SKILL.md,直接实现该目的。没有不相关的环境变量、二进制文件或安装步骤。
✓ 指令范围
SKILL.md 和规则文件仅是文档和代码示例。它们不指示代理读取或窃取主机文件、访问凭证、运行远程端点或执行系统命令。示例在代码片段中引用 localStorage/cookies(作为使用示例),但不指示代理访问运行时环境。
✓ 安装机制
没有安装规范和打包的二进制文件——这是纯指令式的,在安装期间不会向磁盘写入代码或二进制文件,这是最低风险的安装配置。
✓ 凭证需求
没有声明所需的环境变量、凭证或配置路径。示例在应用代码上下文中提及浏览器 API(localStorage、cookies),这符合声明的目的,不是凭证请求。
✓ 持久化与权限
该技能不是强制始终运行的,不请求提升的或持久的权限。允许自主调用(平台默认),但包中没有额外的持久占用或自我修改的安装行为。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv0.1.02026/4/15
从 all-task-skills-dedup 批量发布
● 无害
安装命令
点击复制官方npx clawhub@latest install fix-visual-stability-react-best-practices
镜像加速npx clawhub@latest install fix-visual-stability-react-best-practices --registry https://cn.longxiaskill.com
技能文档
React 和 Next.js 应用的综合性能优化指南,由 Vercel 维护。包含 8 个类别共 45 条规则,按影响程度排序,指导自动化重构和代码生成。
何时应用
在以下情况下参考这些指南:
- 重构现有 React/Next.js 代码
- 编写新的 React 组件或 Next.js 页面
- 修复视觉不稳定或布局偏移(CLS)问题
- 防止从 localStorage 或 cookies 读取时闪烁
- 处理客户端数据的水合不匹配
- 优化字体加载(防止 FOIT/FOUT)
- 为图片和动态内容添加适当的尺寸
按优先级分类的规则
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 消除瀑布流 | 关键 | async- |
| 2 | 包体积优化 | 关键 | bundle- |
| 3 | 服务端性能 | 高 | server- |
| 4 | 客户端数据获取 | 中高 | client- |
| 5 | 重渲染优化 | 中 | rerender- |
| 6 | 渲染性能 | 中 | rendering- |
| 7 | JavaScript 性能 | 中低 | js- |
| 8 | 高级模式 | 低 | advanced- |
快速参考
1. 消除瀑布流(关键)
async-defer-await- 将 await 移到实际使用的分支中async-parallel- 对独立操作使用 Promise.all()async-dependencies- 使用 better-all 处理部分依赖async-api-routes- 在 API 路由中尽早启动 promises,延迟 awaitasync-suspense-boundaries- 使用 Suspense 流式传输内容
2. 包体积优化(关键)
bundle-barrel-imports- 直接导入,避免 barrel 文件bundle-dynamic-imports- 对重型组件使用 next/dynamicbundle-defer-third-party- 在水合后加载分析/日志bundle-conditional- 仅在功能激活时加载模块bundle-preload- 在悬停/焦点时预加载以提升感知速度
3. 服务端性能(高)
server-cache-react- 使用 React.cache() 进行每请求去重server-cache-lru- 使用 LRU 缓存进行跨请求缓存server-serialization- 最小化传递给客户端组件的数据server-parallel-fetching- 重构组件以并行化获取server-after-nonblocking- 使用 after() 进行非阻塞操作
4. 客户端数据获取(中-高)
client-swr-dedup- 使用 SWR 进行自动请求去重client-event-listeners- 去重全局事件监听器
5. 重渲染优化(中)
rerender-defer-reads- 不订阅仅在回调中使用的状态rerender-memo- 将昂贵的工作提取到记忆化组件中rerender-dependencies- 在 effects 中使用原始依赖rerender-derived-state- 订阅派生的布尔值,而非原始值rerender-functional-setstate- 使用函数式 setState 获得稳定的回调rerender-lazy-state-init- 为昂贵值向 useState 传递函数rerender-transitions- 使用 startTransition 进行非紧急更新
6. 渲染性能(中)
rendering-animate-svg-wrapper- 动画化 div 包装器,而非 SVG 元素rendering-content-visibility- 对长列表使用 content-visibilityrendering-hoist-jsx- 将静态 JSX 提取到组件外部rendering-svg-precision- 降低 SVG 坐标精度rendering-hydration-no-flicker- 对客户端数据使用内联脚本rendering-activity- 使用 Activity 组件进行显示/隐藏rendering-conditional-render- 使用三元运算符,而非 && 进行条件渲染
7. JavaScript 性能(中-低)
js-batch-dom-css- 通过 classes 或 cssText 分组 CSS 更改js-index-maps- 为重复查找构建 Mapjs-cache-property-access- 在循环中缓存对象属性js-cache-function-results- 在模块级 Map 中缓存函数结果js-cache-storage- 缓存 localStorage/sessionStorage 读取js-combine-iterations- 将多个 filter/map 合并为一个循环js-length-check-first- 在昂贵比较之前检查数组长度js-early-exit- 从函数提前返回js-hoist-regexp- 将 RegExp 创建提升到循环外部js-min-max-loop- 使用循环求 min/max,而非 sortjs-set-map-lookups- 使用 Set/Map 进行 O(1) 查找js-tosorted-immutable- 使用 toSorted() 保持不可变性
8. 高级模式(低)
advanced-event-handler-refs- 在 refs 中存储事件处理器advanced-use-latest- 使用 useLatest 获得稳定的回调 refs
如何使用
阅读各个规则文件以获取详细说明和代码示例:
rules/async-parallel.md
rules/bundle-barrel-imports.md
rules/_sections.md
每个规则文件包含:
- 简要说明为什么它很重要
- 带说明的错误代码示例
- 带说明的正确代码示例
- 其他上下文和参考