mcpField
E
extension-manifest

extension-manifest

github.com/quangpl开发64207 次安装7 周前更新
代码仓库

关于 extension-manifest

用于分析 Chrome 扩展代码并生成所需最少权限的 Manifest V3 配置,面向扩展开发者提供权限检查与用户警告报告流程。

主要功能

  1. 01识别 WXT、CRXJS 和原生 manifest 项目
  2. 02扫描 Chrome API 用法
  3. 03将 API 调用映射到权限
  4. 04生成并验证 manifest.json
  5. 05报告面向用户的权限警告

适用场景

  1. 01根据现有扩展代码生成 manifest
  2. 02检查能否减少申请的权限
  3. 03提交 Chrome Web Store 前审查 manifest

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/quangpl/browser-extension-skills --skill extension-manifest

安装后在 Claude Code 中输入/extension-manifest确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-permission-map.md
manifest-fields-reference.md
manifest-templates.md
manifest-validation-checklist.md
permission-strategies.md
permission-warnings.md

详细介绍

扩展清单与权限生成器

🚀 升级到 Premium 前往 https://app.extensionbooster.net/dashboard/services/extension-ai-kit 获取 Premium 版本

根据当前扩展实现生成最佳 manifest.json。分析代码,根据 Chrome 文档和最佳实践确定最少权限。

工作流

  1. 检测框架:检查是否存在 wxt.config.ts、crxjs.config.ts 或原始 manifest.json
  2. 扫描扩展代码库中的 Chrome API 用法
  3. 映射每个 API 调用所需的权限(参见 references/api-permission-map.md)
  4. 生成包含最少所需权限的 manifest.json
  5. 根据 Chrome 文档和 CWS 政策进行验证
  6. 报告用户将看到的权限警告

CRXJS 项目:Manifest 会根据代码和 package.json 自动生成。通过 crxjs.config.ts 覆盖。参见 https://docs.crxjs.com/

文档参考

快速 Manifest 模板

{
  "manifest_version": 3,
  "name": "Extension Name",
  "version": "1.0.0",
  "description": "Brief description. Max 132 chars for CWS.",
  "icons": {
    "16": "icons/icon16.png",
    "48": "icons/icon48.png",
    "128": "icons/icon128.png"
  },
  "action": {
    "default_popup": "popup.html",
    "default_icon": { "16": "icons/icon16.png" }
  },
  "permissions": [],
  "host_permissions": [],
  "background": { "service_worker": "background.js", "type": "module" }
}

权限分析步骤

  1. 使用 chrome. API 调用对代码库进行 Grep 搜索
  2. 根据 references/api-permission-map.md 映射每个调用所需的权限
  3. 尽可能优先使用 activeTab,而不是 tabs + host_permissions
  4. 对非必要功能使用可选权限
  5. 检查 references/permission-warnings.md 中的警告文本

常见错误

错误修复
将 host_permissions 放在 permissions 中将 URL 移到单独的 host_permissions 数组中
使用 <all_urls>将范围缩小到特定域名模式
缺少 activeTab如果只需在用户点击时访问当前标签页,则添加该权限
过度使用 tabs 权限仅在需要标签页 URL/标题时使用;否则改用 activeTab
将 content_security_policy 写成字符串必须是对象:{ "extension_pages": "..." }
将 web_accessible_resources 写成 string[]使用包含 resources + matches 的对象

MV3 关键规则

  1. host_permissions 与 permissions 分开设置
  2. Service worker 会取代后台页面(不能使用 DOM 和 window)
  3. content_security_policy 必须是对象,不能是字符串
  4. 禁止远程代码执行(不得使用 eval 或 CDN 脚本)
  5. web_accessible_resources 必须包含 matches 数组
  6. 使用 chrome.scripting.executeScript(),不要使用 tabs.executeScript()

参考资料

  • references/manifest-fields-reference.md - 所有 Manifest 字段及其类型和示例
  • references/manifest-templates.md - 可直接使用的模板(弹出窗口、内容脚本、侧边栏、devtools)
  • references/manifest-validation-checklist.md - 提交前验证清单
  • references/api-permission-map.md - Chrome API → 权限映射
  • references/permission-warnings.md - 各权限面向用户的警告文本
  • references/permission-strategies.md - 可选权限、activeTab 和权限升级模式

相关技能

  • extension-create - 完整的项目脚手架
  • extension-analyze - 安全审计和最佳实践

评论

支持 Markdown