← ClaudeAtlas

devlab-web-extension-bootstraplisted

Use when building a browser/web extension from scratch, especially one that extracts, downloads, or enhances data from an existing web app. Covers feasibility, reverse-engineering the target site's data channels, tech-stack selection (WXT + framework + Manifest V3), content/background/popup architecture, and a real-browser e2e testing strategy. Hand off open-source packaging and release to devlab-github-oss-ops.
seed-forge/harness-ai-kit · ★ 22 · Web & Frontend · score 74
Install: claude install-skill seed-forge/harness-ai-kit
# DevLab Web Extension Bootstrap ## 用途 从零构建一个浏览器扩展(WebExtension / Manifest V3)的团队标准工作流,尤其适用于"**从某个已有 Web 应用里提取、下载或增强内容**"这类扩展。 核心原则:**这类扩展的成败取决于检测层(detection layer),而不是 UI。** 按钮谁都会写;难的是在多种页面形态(应用页 / SSR 分享页 / 未登录页)和登录态下都能稳定定位到目标资产。所以**先逆向、验证能拿到资产,再写 UI**。 把扩展当作有生命周期的产品来做:可行性 → 逆向工程 → 技术选型 → 架构 → 测试。代码验证通过后,开源与发布交给 `devlab-github-oss-ops`。 ## 适用场景 - 新建浏览器扩展(Chrome/Edge/Firefox,MV3) - 需要从特定 Web 应用读取 / 下载 / 增强内容的扩展 - 必须兼容多种页面类型(应用页、SSR 分享页、登出态)的扩展 - 把"网站能加载但不给我保存"变成一个可用工具 **不适用**: - 纯 Web 应用或无需打包的 userscript - 一次性的 DevTools console 片段 - 开源打包 / GitHub 发布阶段(用 `devlab-github-oss-ops`) ## 输入 | 输入项 | 是否必须 | 来源 | |--------|----------|------| | 目标 Web 应用 URL + 要提取的内容 | 是 | 用户描述 | | 需覆盖的页面类型清单 | 是 | 逆向阶段枚举(应用页/分享页/登出页) | | 目标浏览器 | 交互确认 | 默认 Chrome MV3 | ## 输出 - 一个可加载的 MV3 扩展(content script + background + popup) - 一个纯函数、可注入、可单测的检测层 - 单元测试 + 真实浏览器 e2e 闭环 - 交接给 `devlab-github-oss-ops` 的就绪代码 ## 工作流 调用本技能时的标准顺序: 1. 判定是否真的需要扩展(§1) 2. 逆向目标站点的数据通道(§2)—— 成败关键 3. 选型并脚手架(§3) 4. 搭建三面架构(§4) 5. 单测 + 真实浏览器 e2e 证明(§5) 6. 过验收门禁,交接 `devlab-github-oss-ops` 做开源与发布 配合 `brainstorming`(§1 前,新点子)、`writing-plans`(§4 前,多步实现)、`test-driven-development`(§5)、`verification-before-completion`(宣称就绪前)。 ### §1 可行性与范围 动手前确认: - 你要的内容在你浏览查看时**已经**被加载进浏览器(扩展只能保存页���在你会话下已能访问的内容) - 你提取的是**你自己的**内容、走平台**自己的**端点(不破解/绕过付费墙——这既是合规红线也是维护陷阱) - 目标有可识别的数据通道(见 §2),而非纯 canvas/WebGL 不可解析渲染 - **提前枚举必须支持的页面类型**:应用/��辑器页、公开分享页、登出页。每种暴露数据的方式可能不同。 产出:一句话问题陈述 + 需覆盖的页面类型清单。 ### §2 逆向目标站点(关键阶段) 目标:找出页面暴露资产 URL / 标识符的**所有**途