chrome-extension-architect

Design Chrome Manifest V3 extension architectures with least-privilege permissions.

Updated Mar 25, 2026
One-click install
npx skills add https://github.com/involvex/skills --skill chrome-extension-architect
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: chrome-extension-architect
Source: https://github.com/involvex/skills/tree/main/skills/chrome-extension-architect
Command: npx skills add https://github.com/involvex/skills --skill chrome-extension-architect

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Provides an expert architecture and debugging playbook for building privacy-first Chrome Manifest V3 extensions that avoid common MV3 pitfalls, minimize permission scope, and ensure reliable state persistence despite service worker termination.

Core Features & Use Cases

  • Side panel architecture: Guidance for chrome.sidePanel integration, per-tab panel paths, layout awareness, and differences versus popups.
  • Service worker lifecycle & debugging: Patterns to avoid lost globals, register listeners top-level, use storage-backed state, and trace wake/suspend cycles.
  • Permissions & privacy audits: Least-privilege permission proposals, host permission minimization, optional permission flows, and privacy warning text for high-impact permissions.
  • Storage & persistence strategy: Decision tree covering chrome.storage.local, sync, session, and IndexedDB with best practices and cleanup policies.
  • Cross-browser compatibility: Feature detection for Chrome, Firefox, and Safari, webextension-polyfill recommendations, and fallback UI approaches.
  • Templates & checklists: Manifest examples, messaging patterns, debugging checklist, and sample code snippets for common extension patterns.

Quick Start

Use the chrome-extension-architect skill to design a privacy-first Chrome MV3 side panel with least-privilege permissions, storage-backed persistence, and a service worker lifecycle plan.

Frequently Asked Questions about chrome-extension-architect

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I keep state persisted when a Chrome MV3 service worker terminates?

To keep state persisted when a Chrome MV3 service worker terminates, use storage-backed state mechanisms like chrome.storage.local or IndexedDB rather than in-memory globals. This ensures data survives wake and suspend cycles.

How do I design a Chrome extension side panel instead of a popup?

Designing a Chrome extension side panel involves integrating chrome.sidePanel, configuring per-tab panel paths, and managing layout awareness. Side panels offer persistent UI compared to transient popups.

What is the best way to minimize permissions for a privacy-first Chrome extension?

The best way to minimize permissions for a privacy-first Chrome extension is applying least-privilege proposals, reducing host_permissions, and implementing optional permission flows to request access only when needed.

Does Chrome Manifest V3 side panel architecture work with Firefox and Safari?

Chrome Manifest V3 side panel architecture supports Firefox and Safari through feature detection, webextension-polyfill recommendations, and fallback UI approaches to ensure cross-browser sidebar compatibility.

Why does my Chrome MV3 service worker lose global variables?

A Chrome MV3 service worker loses global variables because the browser terminates the worker to save resources. Registering listeners at the top level and using chrome.storage.session prevents lost state.

When do I need IndexedDB instead of chrome.storage.local for extension persistence?

You need IndexedDB instead of chrome.storage.local for extension persistence when handling complex structured data or large payloads, while local storage suits simpler key-value state and cleanup policies.