关于 chrome-ext
chrome-ext 是 Chrome Developer Relations 维护的 Manifest V3 扩展开发指南,面向编写、迁移和优化 Chrome 扩展的开发者。它按影响优先级组织 8 类规则,覆盖服务工作线程、内容脚本、消息传递、存储及性能。
主要功能
- 01按优先级组织 8 类规则
- 02涵盖服务工作线程生命周期
- 03优化内容脚本与 DOM 操作
- 04指导消息传递和存储操作
- 05覆盖网络权限与内存管理
- 06提供 UI 性能和 API 使用建议
适用场景
- 01编写新的 Manifest V3 扩展
- 02将扩展从 Manifest V2 迁移到 V3
- 03优化服务工作线程状态管理
- 04排查扩展性能问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill chrome-ext安装后在 Claude Code 中输入/chrome-ext确认已加载。
详细介绍
Chrome Developer Relations Chrome 扩展最佳实践
Chrome 扩展(Manifest V3)的全面性能优化指南,由 Chrome Developer Relations 维护。包含 8 个类别中的 40 多条规则,并按影响程度排序,旨在指导自动重构和代码生成。
适用场景
在以下情况下,请参考这些指南:
- 编写新的 Chrome 扩展代码
- 从 Manifest V2 迁移到 Manifest V3
- 优化服务工作线程的生命周期和状态管理
- 实现用于与网页交互的内容脚本
- 调试扩展程序的性能问题
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 服务工作线程生命周期 | 严重 | sw- |
| 2 | 内容脚本优化 | 严重 | content- |
| 3 | 消息传递效率 | 高 | msg- |
| 4 | 存储操作 | 高 | storage- |
| 5 | 网络与权限 | 中高 | net- |
| 6 | 内存管理 | 中 | mem- |
| 7 | UI 性能 | 中 | ui- |
| 8 | API 使用模式 | 中低 | api- |
快速参考
1. 服务工作线程生命周期(严重)
sw-persist-state-storage- 使用 chrome.storage 持久化状态,而不是使用全局变量sw-avoid-keepalive- 避免人为维持服务工作线程活动的模式sw-use-alarms-api- 使用 chrome.alarms,而不是 setTimeout/setIntervalsw-return-true-async- 为异步响应从消息监听器返回 truesw-register-listeners-toplevel- 在顶层注册事件监听器sw-use-offscreen-for-dom- 使用离屏文档调用 DOM API
2. 内容脚本优化(严重)
content-use-specific-matches- 使用具体的 URL 匹配模式content-use-document-idle- 使用 document_idle 注入内容脚本content-programmatic-injection- 优先采用编程方式注入,而不是在清单中声明content-minimize-script-size- 尽量减小内容脚本包的大小content-batch-dom-operations- 批量执行 DOM 操作,尽量减少重排content-use-mutation-observer- 使用 MutationObserver,而不是轮询
3. 消息传递效率(高)
msg-use-ports-for-frequent- 频繁交换消息时使用端口连接msg-minimize-payload-size- 尽量减小消息负载msg-debounce-frequent-events- 发送消息前对高频事件进行防抖msg-check-lasterror- 始终检查 chrome.runtime.lastErrormsg-avoid-broadcast-to-all-tabs- 避免向所有标签页广播消息
4. 存储操作(高)
storage-batch-operations- 批量执行存储操作,而不是逐个调用storage-choose-correct-type- 根据使用场景选择合适的存储类型storage-cache-frequently-accessed- 缓存频繁访问的存储值storage-use-session-for-temp- 使用 storage.session 存储临时运行时数据storage-avoid-storing-large-blobs- 避免存储大型二进制数据块
5. 网络与权限(中高)
net-use-declarativenetrequest- 使用 declarativeNetRequest 代替 webRequestnet-request-minimal-permissions- 仅请求所需的最低权限net-use-activetab- 使用 activeTab 权限代替宽泛的主机权限net-limit-csp-modifications- 避免修改内容安全策略标头
6. 内存管理(中)
mem-cleanup-event-listeners- 内容脚本卸载时清理事件监听器mem-avoid-detached-dom- 避免持有已脱离 DOM 的节点引用mem-avoid-closure-leaks- 避免意外的闭包内存泄漏mem-clear-intervals-timeouts- 清理时清除间隔和超时mem-use-weak-collections- 使用 WeakMap 和 WeakSet 保存 DOM 元素引用
7. UI 性能(中)
ui-minimize-popup-bundle- 尽量减小弹出窗口的包体积,以加快启动速度ui-render-with-cached-data- 先使用缓存数据渲染弹出窗口 UIui-batch-badge-updates- 批量更新徽章,避免闪烁ui-use-options-page-lazy- 延迟加载选项页面的各个部分
8. API 使用模式(低至中)
api-use-promises-over-callbacks- 使用基于 Promise 的 API 调用,而非回调api-query-tabs-efficiently- 使用特定筛选条件查询标签页api-avoid-redundant-api-calls- 避免在循环中重复调用 APIapi-use-alarms-minperiod- 遵守 alarms API 的最短周期要求api-handle-context-invalidated- 处理扩展上下文失效错误api-use-declarative-content- 使用声明式内容 API 执行页面操作
使用方法
阅读各个参考文件,了解详细说明和代码示例:
完整汇编文档
如需查看包含所有规则的完整指南,请参阅 AGENTS.md。
参考文件
| 文件 | 说明 |
|---|---|
| AGENTS.md | 包含所有规则的完整汇编指南 |
| references/_sections.md | 分类定义和顺序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown