← ClaudeAtlas

browser-extensionslisted

Use when building or shipping a browser extension as a fourth kind of client. Cross-browser MV3 baseline, web-to-extension session handoff, isolated worlds and the service worker, per-site adapters, packaging one source for N environments in CI, store submission, self-distribution with release channels, and why there is no mobile extension.
konradcinkusz/architecture-standards · ★ 0 · Web & Frontend · score 72
Install: claude install-skill konradcinkusz/architecture-standards
# Browser extensions: build, session handoff, packaging, stores **Read [`references/BROWSER-EXTENSIONS.md`](references/BROWSER-EXTENSIONS.md) before applying any of this.** That file is the standard; everything below it is a summary to help you decide whether this skill applies and to check your work afterwards. ## What this standard covers - Cross-browser baseline - Session handoff - Isolated worlds and the service worker - Per-site adapters - Packaging: one source, N environments - Store submission - Distributing builds yourself - Mobile: there is no mobile extension ## Failure modes | Symptom | Cause | |---|---| | Session handoff works in Chrome, silently fails in Firefox | No content-script fallback; Firefox lacks `externally_connectable` | | Token expiry nonsense after idle | Stored relative `expiresIn` instead of an absolute timestamp | | Page never sees the extension's result | Isolated-world write to `window`; use DOM dataset + re-fired CustomEvent | | First message after idle returns `undefined` | Service worker asleep; retry with delay | | Extension works for the dev, not for users | Production zip carries dev config, or store build points at localhost hosts | | Reviewer rejects over permissions | Localhost entries left in `host_permissions`, or broad permissions without written justification | | Published extension's API calls fail | Extension id never added to backend CORS allowlist | | One site's integration silently breaks | Third-party DOM changed; no sele