---
name: browser-extension
description: Master specialized skill for building 2025/2026-grade browser extensions. Deep expertise in Manifest v3, Service Worker persistence (Alarms, Offscreen API), Side Panel API, and Cross-Browser compatibility.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
---
# 🌐 BROWSER EXTENSION: THE 2026 MASTERCLASS
> **Philosophy:** Extensions are ephemeral, restricted, yet powerful. Persistence is an Art. Security is a Mandate.
> **Design Constraint:** For UI/UX, Aesthetics, and Layout, YOU MUST REFER TO THE `frontend-design` SKILL.
**PERSISTENCE PARADOX GUARD (CRITICAL):** Never rely on global variables or in-memory state in background scripts. AI-generated code frequently fails by assuming Manifest V3 service workers are persistent. They are NOT; they terminate after 30 seconds of inactivity. You MUST backup every piece of state to `chrome.storage` or `IndexedDB` immediately upon change. This skill aims to eliminate "volatile-state" bugs typical of generic AI implementations. If data is not in durable storage, it does not exist.
## 🏗️ PROTOCOL 1: THE MANIFEST V3 CONSTITUTION
All extensions must be built on Manifest v3. No exceptions.
1. **Manifest Blueprint:**
* **Service Workers:** No persistent background pages. Use `"background": { "service_worker": "background.js" }`.
* **No Remote Code:** All scripts must be local. `unsafe-eval` is forbidden.
* **Permissions:** Principle of Least Privilege. Use `optional_permissions` where possible.
* **Action UI:** Prefer `action` over `browser_action` or `page_action`.
2. **Side Panel Supremacy:**
* Requirement: Use `chrome.sidePanel` for persistent, non-intrusive experiences.
* API: `chrome.sidePanel.setOptions({ path: 'sidepanel.html', enabled: true })`.
## ⚡ PROTOCOL 2: THE PERSISTENCE ENGINE (ANTI-TERMINATION)
Service Workers sleep. You must keep the logic alive.
1. **The Alarm Pulse:**
* Use `chrome.alarms` to wake up the Service Worker every 1-5 minutes for background sync.
2. **The Offscreen Document (When needed):**
* Use the `offscreen` API for tasks like DOM parsing, heavy calculations, or keeping the SW alive via periodic messaging.
3. **State Management Protocol:**
* **NEVER** rely on global variables.
* **Mandatory:** Use `chrome.storage.session` for transient session-only secrets.
* **Mandatory:** Use `IndexedDB` or `chrome.storage.local` for large datasets and persistent user data.
## 🔐 PROTOCOL 3: THE SECURITY FORTRESS
1. **Context Bridge Safety:**
* Content Scripts are "Hostile Territory". Always sanitize data passed to the Service Worker via `chrome.runtime.sendMessage`.
2. **Declarative Net Request:**
* Use `declarativeNetRequest` for blocking/modifying headers. Only use `webRequest` as a fallback for Firefox if dynamic rules are critical.
## 🎨 PROTOCOL 4: DESIGN & UI/UX (INTEGRATED)
> **Direct Instruction:** You are an extension developer, not a designer. You must outsource the "Soul" of the UI.
1. **UI Execution:**
* Popup/SidePanel: Follow the **8-Point Grid** and **Glassmorphism** rules from `frontend-design`.
* Component Atomization: Use Atomic Design 2.0 principles.
* Friction: Ensure the popup interaction is < 400ms (Doherty Threshold).
## 🛠️ PROTOCOL 5: SCRIPT ENFORCEMENT (THE SENTINEL)
Every extension build MUST pass the high-tier audit suite.
1. **[manifest-auditor.js](skills/browser-extension/scripts/js/manifest-auditor.js):**
* **Rule:** MV3 compliance and CSP safety. No broad permissions.
2. **[persistence-check.js](skills/browser-extension/scripts/js/persistence-check.js):**
* **Rule:** Service Worker "Heartbeat" verification and State integrity.
3. **[asset-master.js](skills/browser-extension/scripts/js/asset-master.js):**
* **Rule:** Icon dimensional audit and asset optimization.
---
## 📂 COGNITIVE AUDIT CYCLE
1. Run `node scripts/js/manifest-auditor.js` -> Clean?
2. Run `node scripts/js/persistence-check.js` -> Heartbeat detected?
3. Run `node scripts/js/asset-master.js` -> Assets optimized?
4. **MANDATORY:** Run `playwright test` -> All paths pass?
5. Is it Manifest v3 compliant?
6. Does the Service Worker handle termination gracefully (State stored)?
7. Are permissions minimized?
8. Is the UI justified by a "Narrative-First" screenplay from `frontend-design`?
> **Link:** [frontend-design](skills/frontend-design/SKILL.md)