news 2026/9/8 18:04:01

【计算机工具类-开发工具Skills】chrome-extension-developer 技能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【计算机工具类-开发工具Skills】chrome-extension-developer 技能

专注于使用Manifest V3构建Chrome扩展的专家技能。涵盖后台脚本、Service Workers、内容脚本和跨上下文通信。

技能概述

chrome-extension-developer 技能是一个高级Chrome扩展开发专家技能,专注于现代扩展架构,特别是Manifest V3、跨脚本通信和生产级安全实践。该技能帮助开发者构建安全、高效的Chrome扩展程序。

下载地址:agentic-awesome-skills/skills/chrome-extension-developer at main · sickn33/agentic-awesome-skills · GitHub

主要功能

  • Manifest V3架构: 提供现代Chrome扩展的标准架构设计
  • Service Workers: 实现后台服务工作者替代传统后台页面
  • 内容脚本: 开发与网页DOM交互的内容脚本
  • 跨上下文通信: 实现不同脚本上下文之间的消息传递
  • 扩展API集成: 使用存储、权限、闹钟、侧边栏等扩展API

触发条件

在以下情况下应该使用此技能:

  • 从头开始设计和构建新的Chrome扩展
  • 将扩展从Manifest V2迁移到Manifest V3
  • 实现Service Workers、内容脚本或弹出窗口/选项页面
  • 调试跨上下文通信(消息传递)
  • 实现扩展特定的API(存储、权限、闹钟、侧边栏)

不适用场景

以下情况不应使用此技能
  • 开发Safari应用扩展(应使用safari-extension-expert)
  • 在不使用WebExtensions API的情况下开发Firefox扩展
  • 不与扩展API交互的常规Web开发

核心指令

1. Manifest V3优先

始终优先使用Service Workers而不是后台页面。Manifest V3是Chrome扩展的现代标准。

2. 上下文分离

明确区分Service Workers(后台)、内容脚本(可访问DOM)和UI上下文(弹出窗口、选项页面)。

3. 消息传递

使用chrome.runtime.sendMessagechrome.tabs.sendMessage进行可靠的通信。始终使用responseCallback

4. 权限管理

遵循最小权限原则。尽可能使用optional_permissions

5. 存储方案

使用chrome.storage.localchrome.storage.sync进行持久化数据存储,而不是localStorage

6. 声明式API

使用declarativeNetRequest进行网络过滤/修改。

使用示例

示例1: 基本Manifest V3结构

{
"manifest_version": 3,
"name": "My Agentic Extension",
"version": "1.0.0",
"action": {
"default_popup": "popup.html"
},
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"js": ["content.js"]
}
],
"permissions": ["storage", "activeTab"]
}

示例2: 消息传递策略

// background.js (Service Worker)
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.type === "GREET_AGENT") {
console.log("Received message from content script:", message.data);
sendResponse({ status: "ACK", reply: "Hello from Background" });
}
return true; // 保持消息通道开放以进行异步响应
});

最佳实践

应该做的:

  • 使用chrome.runtime.onInstalled进行扩展初始化
  • 如果在manifest中配置,使用现代ES模块
  • 在内容脚本中验证外部输入后再执行操作

不应该做的:

  • 使用innerHTMLeval()- 优先使用textContent和安全的DOM API
  • 在Service Worker中阻塞主线程;它必须保持响应

故障排除

问题: Service Worker变为非活动状态

解决方案:后台Service Workers是临时的。使用chrome.alarms进行计划任务,而不是使用可能被终止的setTimeoutsetInterval

使用限制

仅在任务明确匹配上述范围时使用此技能。不要将输出作为环境特定验证、测试或专家审查的替代品。如果缺少所需的输入、权限、安全边界或成功标准,请停止并寻求澄清。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 18:02:31

国产MCU替代STM32实测:Cortex-M4冷链温湿度记录仪开发经验谈

最近帮朋友做了个冷链运输温湿度记录仪的小项目,需求很简单:定时采集、本地存日志、低功耗跑够七天以上、成本尽量压下来。我原本想都不想就准备上STM32F103,这料我用得最熟,例程一堆,踩过的坑全记在脑子里&#xff0c…

作者头像 李华
网站建设 2026/9/8 18:02:21

从@Component到@Bean:Spring容器管理核心与常见启动报错排查

1. 从“component和bean”这个热搜开始:搜到的问题根本不是同一个圈子如果你最近也搜过 component和bean,我猜大概率不是因为想系统学一遍 Spring,而是因为某个启动日志里抛了一句类似a component required a bean of type...的英文。再往下翻…

作者头像 李华
网站建设 2026/9/8 18:00:49

多模型路由四层架构:工具侧、网关、托管聚合与智能路由实践

1. 为什么模型路由在2026年比单一大模型时代更重要1.1 先从一个让我改观开始我见过太多团队,理论上"接入了多个模型",但实际上只是把 GPT 系、Claude 系和自家微调模型的 SDK 全部装进代码库,再用一个 switch 语句轮流试用。直到有…

作者头像 李华
网站建设 2026/9/8 18:00:21

【单片机课程设计/毕业设计】基于 STM32 的烟雾火焰报警智能垃圾桶硬件系统设计 基于 STM32 的红外满溢检测智能分类垃圾桶设计(013107)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/9/8 18:00:08

2026年山东省【信息学体验营】复赛真题及题解T3:城堡探险

2026年山东省【信息学体验营】复赛真题及题解T3:城堡探险 题目描述 有一座神秘的城堡,里面共有 nnn 间密室,编号为 111 到 nnn。 每间密室的墙壁上都刻着一个符文,符文上写着一个数字 aia_iai​(表示从第 iii 间密室…

作者头像 李华