Token导航 LogoToken导航TokenDH.com
前端设计操作浏览器github未标认证来源可访问许可证需确认审计提醒

chrome-extension-architectChrome 扩展架构师

Agent Skill

chrome-extension-architect 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

214

周安装

9

GitHub Stars

1

下载量

75
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:chrome-extension-architect(Chrome 扩展架构师)
来源仓库:https://github.com/alcyone-labs/agent-skills
仓库路径:skills/chrome-extension-architect
安装命令:
npx skills add https://github.com/alcyone-labs/agent-skills --skill chrome-extension-architect
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/alcyone-labs/agent-skills --skill chrome-extension-architect

简介

专精 Chrome 扩展 MV3 架构设计与隐私优先实现方案。

  • 覆盖侧边栏 UX、权限最小化、存储策略等关键议题。
  • 提供调试工作流与跨脚本通信解决方案。
  • 适合复杂扩展开发与生产级安全加固需求。
  • chrome-extension-architect 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Chrome Extension Manifest Version 3 Privacy-First Architect

Elite-level Chrome extension architecture and debugging workflow with privacy-first defaults and least-privilege permissions.

Overview / When to Apply

Use this skill when the user asks about browser extensions (especially Chrome MV3) including:

  • Side panel / sidebar UX (Chrome chrome.sidePanel, Firefox sidebar_action, Safari constraints)
  • MV3 background service worker lifecycle bugs (lost globals, listeners, wakeups)
  • Permission review, host permission minimization, privacy posture
  • Storage / persistence choices (what survives popup close, SW termination, browser restart)
  • Cross-browser strategy (Chrome/Edge vs Firefox vs Safari)

Default target: Chrome MV3. If the user doesn’t specify browser(s), assume Chrome stable.

Non-Negotiable Rules (must follow)

  1. Start every major answer with target + scope.

- Format: Target: <Chrome MV3 | Firefox MV3 | Safari> | Scope: <side panel | permissions | lifecycle | storage | compat | debugging>

  1. Privacy-first default.

- Prefer designs that keep data on-device. - Avoid collecting page content, browsing history, or host-wide access unless explicitly required.

  1. Least privilege, always.

- Request only the minimal permissions + minimal host_permissions. - Prefer: activeTab, scripting (targeted injection), declarativeNetRequest (when network rules are needed). - Avoid: <all_urls>, *://*/*, broad tabs, unbounded host permissions.

  1. Every permission/API must be justified + privacy-risk tagged.

- For each permission you mention, include: - Why it’s needed - What data access it enables - Safer alternatives (if any)

  1. MV3 service worker reality check (single biggest bug source).

- Service worker is non-persistent; globals can disappear at any time. - Never rely on in-memory state for correctness. - Register listeners at top-level synchronously.

  1. Side panel architecture must be modern.

- Chrome: chrome.sidePanel + setPanelBehavior({openPanelOnActionClick: true}). - Use setOptions() to vary panel path per-tab / conditionally. - Use layout awareness for LTR/RTL.

  1. Cross-browser: feature-detect, don’t UA-sniff.

- Use conditional code paths (Chrome chrome.sidePanel vs Firefox browser.sidebarAction). - State what won’t work on a given browser and why.

How to Use This Skill (workflow)

Step 0 — Confirm target environment

Ask (or infer) these quickly:

  • Browser(s): Chrome / Edge / Firefox / Safari
  • Manifest version: default to MV3
  • UI mode: side panel, action popup, overlay in-page, options page
  • Data sensitivity: what data is touched? (page content? URLs? credentials?)

Step 1 — Pick the correct architecture (decision tree)

Need a persistent/reusable UI?
├─ Chrome/Edge -> sidepanel (chrome.sidePanel)
├─ Firefox -> sidebar_action / browser.sidebarAction
└─ Safari -> expect limitations; consider alternative UI (popup/options) or separate Safari strategy

Need to interact with the current tab?
├─ One-off user action -> activeTab + scripting
└─ Always-on per-site -> narrow host_permissions only for required domains

Need DOM / rendering in background?
└─ Use offscreen document (Chrome) or move work into panel/page context

Then read the matching references:

  • Side panel design/API -> references/sidepanel/README.md
  • Permission review -> references/permissions/README.md
  • SW lifecycle -> references/service-worker-lifecycle/README.md
  • Storage strategy -> references/storage-state/README.md
  • Cross-browser -> references/cross-browser/README.md
  • Debugging playbook -> references/debugging/README.md
  • Copy/paste templates -> references/templates/README.md

Step 2 — Produce an answer in a strict structure

Use this response skeleton for most user questions:

  1. Target + assumptions (1–3 lines)
  2. Recommended architecture (what runs where)
  3. Permissions proposal (minimal set) + privacy warnings
  4. State & persistence plan (storage choice) + lifecycle gotchas
  5. Code snippets (manifest + SW + UI + messaging)
  6. Debug checklist (what to check when it breaks)

Examples (input → expected output)

Example 1: “I want a persistent sidebar note-taker”

Input: “Build a MV3 extension with a sidebar that saves notes per tab. Minimal permissions.”

Expected output (high level):

  • Target: Chrome MV3
  • Recommend chrome.sidePanel with panel path + per-tab context
  • Permissions: sidePanel, storage, optional activeTab if reading title/url on demand
  • Storage: chrome.storage.local keyed by tabId (ephemeral) + url (stable) with explicit privacy warning about storing URLs
  • Provide manifest + SW setPanelBehavior + message passing between panel and SW

Example 2: “Why does my background state reset?”

Input: “My service worker forgets auth after a minute. I store it in a global variable.”

Expected output (high level):

  • Target: Chrome MV3
  • Explain SW termination; globals lost
  • Move auth to chrome.storage.local (or session for ephemeral) with encryption guidance
  • Add reconnect logic; register listeners top-level
  • Provide code for a storage-backed session and messaging

Example 3: “Make it work in Firefox too”

Input: “I use sidePanel in Chrome. How do I support Firefox?”

Expected output (high level):

  • Target: Chrome MV3 + Firefox
  • Explain Firefox sidebar_action differences (no programmatic open; UX expectations)
  • Provide feature-detection wrapper and separate manifest keys
  • Recommend webextension-polyfill for promise-based APIs where appropriate

Best Practices / Pitfalls

  • Don’t request tabs unless you truly need cross-tab enumeration. It’s a high-privacy-impact permission.
  • Don’t store full URLs/content unless necessary. If you must, be explicit about retention and user controls.
  • Don’t rely on “keep-alive hacks”. Use real MV3 primitives (alarms, message triggers, offscreen documents).
  • Side panel ≠ popup. Side panel is long-lived UI; treat it as an app surface with explicit user action flows.

Testing with Playwright

This skill includes comprehensive headless testing support via Playwright (Chrome 128+).

When to Use Playwright Testing

  • End-to-end extension testing in CI/CD
  • Automated popup/side panel UI testing
  • Content script injection verification
  • Service worker behavior validation
  • Cross-context messaging tests

Key Testing Capabilities

ComponentTest Approach
PopupLoad chrome-extension://ID/popup.html, interact with elements
Side PanelNavigate to panel URL, test UI state
Content ScriptInject into test page, verify DOM changes
Service WorkerSend messages, check storage, test alarms
Full FlowsMulti-step user journeys across all contexts

Headless Mode (New in Chrome 128+)

const context = await chromium.launchPersistentContext('', {
  headless: true,  // Now works with extensions!
  args: [
    `--load-extension=${EXTENSION_PATH}`,
    '--headless=new',  // Required flag
  ],
});

Quick Test Example

import { test, expect } from '@playwright/test';
import path from 'path';

const EXTENSION_PATH = path.join(__dirname, '../dist');

test('popup displays correctly', async ({ browser }) => {
  const context = await browser.newContext({
    args: [
      `--load-extension=${EXTENSION_PATH}`,
      `--disable-extensions-except=${EXTENSION_PATH}`,
    ],
  });

  // Get extension ID from service worker
  let [serviceWorker] = context.serviceWorkers();
  if (!serviceWorker) {
    serviceWorker = await context.waitForEvent('serviceworker');
  }
  const extensionId = serviceWorker.url().split('/')[2];

  // Test popup
  const popup = await context.newPage();
  await popup.goto(`chrome-extension://${extensionId}/popup.html`);
  await expect(popup.locator('h1')).toHaveText('My Extension');
});

Reference Files

  • references/playwright-testing/README.md - Overview and decision tree
  • references/playwright-testing/api.md - Complete API reference
  • references/playwright-testing/configuration.md - Setup and fixtures
  • references/playwright-testing/patterns.md - Testing scenarios
  • references/playwright-testing/gotchas.md - Pitfalls and workarounds

Resources

Install helpers are in resources/install.sh.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.64%
按下载量换算26

Claude

30.17%
按下载量换算23

Cursor

21.79%
按下载量换算16

Gemini CLI

9.3%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills