关于 chrome-extension
面向 Chrome Extension 开发者的 Manifest V3 性能与代码质量指南,包含按影响优先级组织的规则,适用于编写、迁移、优化和排错。
主要功能
- 01涵盖 12 类开发主题
- 02提供 67 条优先级规则
- 03指导 Service Worker 生命周期管理
- 04涵盖内容脚本与消息传递
- 05提供错误处理和测试建议
适用场景
- 01编写新的 Chrome Extension
- 02将 Manifest V2 迁移至 V3
- 03排查扩展性能问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill chrome-extension安装后在 Claude Code 中输入/chrome-extension确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdapi-avoid-redundant-api-calls.mdapi-handle-context-invalidated.mdapi-query-tabs-efficiently.mdapi-use-alarms-minperiod.mdapi-use-declarative-content.mdapi-use-promises-over-callbacks.mdcomp-adapter-interface.mdcomp-content-script-structure.mdcomp-css-class-patterns.mdcomp-manager-class.mdcomp-type-guards.mdcomp-ui-components.mdcontent-batch-dom-operations.mdcontent-minimize-script-size.mdcontent-programmatic-injection.mdcontent-use-document-idle.mdcontent-use-mutation-observer.mdcontent-use-specific-matches.mderr-context-invalidation.mderr-early-return.mderr-null-coalescing.mderr-promise-barrier.mderr-storage-operations.mderr-url-parsing.mderr-validation-pattern.md详细介绍
Chrome 扩展最佳实践
Chrome 扩展(Manifest V3)的全面性能与代码质量指南。包含 12 个类别中的 67 条规则,并按影响程度排序,以指导自动重构和代码生成。
适用场景
在以下情况下参考这些指南:
- 编写新的 Chrome 扩展代码
- 从 Manifest V2 迁移到 Manifest V3
- 优化服务工作线程的生命周期和状态管理
- 实现用于与页面交互的内容脚本
- 调试扩展中的性能问题
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 服务工作线程生命周期 | 严重 | sw- |
| 2 | 内容脚本优化 | 严重 | content- |
| 3 | 消息传递效率 | 高 | msg- |
| 4 | 存储操作 | 高 | storage- |
| 5 | 网络与权限 | 中高 | net- |
| 6 | 内存管理 | 中 | mem- |
| 7 | UI 性能 | 中 | ui- |
| 8 | API 使用模式 | 低至中 | api- |
| 9 | 代码风格与命名 | 中 | style- |
| 10 | 组件模式 | 中 | comp- |
| 11 | 错误处理 | 高 | err- |
| 12 | 测试模式 | 中 | test- |
快速参考
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- 避免修改内容安全策略(CSP)标头
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- 避免在循环中进行冗余 API 调用api-use-alarms-minperiod- 遵守 alarms API 的最短间隔要求api-handle-context-invalidated- 处理扩展上下文失效错误api-use-declarative-content- 使用声明式内容 API 执行页面操作
9. 代码风格与命名(MEDIUM)
style-boolean-naming- 布尔变量使用 is/has/should 前缀style-cache-naming- 统一缓存变量命名style-constants- 为魔法值定义常量style-directory-structure- 按功能/层组织代码style-file-naming- 统一文件命名约定style-function-naming- 使用描述性函数名称style-import-type- 类型使用仅导入类型的方式style-index-entry-points- 使用 index 文件作为模块入口点style-message-enums- 使用枚举表示消息类型style-type-naming- 类型和接口使用 PascalCase
10. 组件模式(MEDIUM)
comp-adapter-interface- 浏览器 API 使用适配器模式comp-content-script-structure- 统一内容脚本的结构comp-css-class-patterns- 使用 BEM 或带前缀的 CSS 类comp-manager-class- 复杂状态使用管理器类comp-type-guards- 使用类型守卫进行运行时验证comp-ui-components- 创建可复用的 UI 组件
11. 错误处理(HIGH)
err-context-invalidation- 处理扩展上下文失效err-early-return- 使用提前返回处理错误err-null-coalescing- 使用空值合并设置默认值err-promise-barrier- 使用 Promise 屏障进行协调err-storage-operations- 处理存储操作失败err-url-parsing- 使用 try/catch 安全解析 URLerr-validation-pattern- 在边界处验证输入
12. 测试模式(MEDIUM)
test-browser-api-mocking- 在测试中模拟 chrome APItest-organization- 按功能组织测试test-validation-functions- 全面测试验证函数
使用方法
阅读各个参考文件,了解详细说明和代码示例:
完整汇编文档
如需查看包含所有规则的完整指南,请参阅 AGENTS.md。
参考文件
| 文件 | 描述 |
|---|---|
| AGENTS.md | 包含所有规则的完整汇编指南 |
| references/_sections.md | 分类定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown