원클릭으로
chrome-extension
Chrome extension development, Web Store submission, and review process.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Chrome extension development, Web Store submission, and review process.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
GitHub CLI (gh) — the official command-line interface to GitHub. Use when the user needs to create or manage pull requests, issues, repositories, GitHub Actions, gists, API calls, authentication, or any other GitHub workflow from the terminal. Also use for scripting GitHub automation, querying the GraphQL/REST API, managing forks/clones, and viewing workflow run logs. Prefer gh over web browsing or the raw REST API.
CLI for Gmail via Google's REST API — list, search, read, send, draft, label, delete. Use for all Gmail email operations.
Draft, post, and review Dan's LinkedIn posts (handle saattrupdan) via the `linkedin` CLI, which drives the real LinkedIn web UI with agent-browser. Use when the user wants to write/post a LinkedIn post, save or view a draft, or fetch their recent posts with engagement stats. Also use whenever drafting LinkedIn content, to match Dan's voice and formatting.
Edit Microsoft Excel .xlsx files in place while preserving all formatting — surgical raw-OOXML cell editing that keeps styles, charts, data validations, formulas and named ranges intact. Use when filling in or revising .xlsx workbooks (bid sheets, budgets, forms, trackers) rather than regenerating them.
Edit Microsoft Word .docx files in place while preserving all formatting — surgical raw-OOXML editing, Word comments, page breaks, character-limit fields. Use when filling in or revising .docx documents (grant applications, forms, reports) rather than regenerating them.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
| name | chrome-extension |
| description | Chrome extension development, Web Store submission, and review process. |
| tagline | Chrome extension development and Web Store submission |
| last-updated | "2026-06-06T00:00:00.000Z" |
This skill covers Manifest V3 Chrome extension development, Web Store submission requirements, and the review process.
Use this skill when:
{
"manifest_version": 3,
"name": "Your Extension",
"version": "1.0.0",
"description": "Clear, concise description (≤132 characters for short description)",
"permissions": ["storage", "..."],
"host_permissions": ["https://example.com/*"],
"action": { ... },
"background": {
"service_worker": "background.js"
}
}
Your extension must have a single, narrow, easy-to-understand purpose.
Example:
This extension adds English subtitles to Danish TV content on DR's streaming platform (dr.dk/drtv). It hijacks DR's native subtitle button to inject a three-way toggle (Off / Dansk / English). When "English" is selected, the extension captures the Danish subtitle stream, sends it to a user-configured LLM provider, and displays the translated English cues as a native TextTrack on the video player. Works only on dr.dk/drtv/* URLs. No ads, no tracking, no unrelated features.
Tips:
For each permission, explain why it's needed for your single purpose:
| Permission | What to explain |
|---|---|
storage | What user settings/data you persist locally |
webNavigation | Why you need to detect page navigation (e.g., SPA handling) |
declarativeNetRequest | CORS/API call requirements for MV3 service workers |
host_permissions | Which hosts you access and why |
Example (storage):
Stores the user's LLM provider selection, API key, and custom endpoint URL in chrome.storage.local. This data persists across browser sessions so users don't need to re-enter credentials. The API key never leaves the user's machine except when sent directly to their chosen LLM provider. No other data is stored.
Example (webNavigation):
Detects when the user navigates to episode pages. Required because the site is a single-page application (SPA) that dynamically loads content without full page reloads. Without webNavigation, the extension wouldn't know when to activate on new episodes within the same browsing session.
Example (declarativeNetRequest):
Dynamically registers CORS rules to allow the background service worker to fetch responses from external APIs. When translation starts, the extension adds a temporary rule permitting cross-origin responses from the LLM endpoint. Required because Chrome MV3 service workers cannot use XMLHttpRequest with loose CORS.
Example (host_permissions):
https://www.dr.dk/*— Inject subtitle toggle and fetch subtitle files from DR's playerhttps://inference.alexandra.dk/*— Default LLM endpoint for translation- Optional
https://*/*— Allow custom LLM endpoints if user configures them
Question: Are you using remote code?
Answer: No (if all JS is bundled)
Explanation:
All JavaScript is bundled at build time using esbuild. No remote code is loaded at runtime. The extension is fully self-contained in the submitted package. No
<script>tags pointing to external URLs, no dynamiceval(), no remote WASM, no CDN-loaded modules.
If you DO use remote code, you must disclose it and may face additional scrutiny.
You must declare what user data you collect (if any):
Categories to consider:
If you collect nothing:
This extension collects zero user data. All data stays on the user's machine or flows directly to their chosen LLM provider:
- API key stored locally in chrome.storage.local, never transmitted to the developer
- Subtitle text sent directly from user's browser to their LLM provider — developer does not intercept or store
- Cache stored locally in IndexedDB, not synced or transmitted
- No telemetry, no analytics, no tracking
Leave all data collection checkboxes unchecked if none apply.
Required if you collect any user data. Recommended even if you don't.
Host it on:
Must include:
| Requirement | Specification |
|---|---|
| Count | 1–5 screenshots (at least 1 required) |
| Size | Exactly 1280×800 OR 640×400 pixels |
| Format | JPEG or 24-bit PNG (no alpha channel) |
| Content | Show actual extension UI in action |
Tips:
Common rejection reasons:
Build the extension:
npm run build
Package for submission:
npm run package
Upload the zip file to Chrome Web Store Dashboard
$5 fee paid (if first-time developer)npm run package produces clean zip| Chrome Web Store | Firefox AMO |
|---|---|
No data_collection_permissions | Requires data_collection_permissions |
Uses key for extension ID | Uses browser_specific_settings.gecko.id |
| Validates during review | Validates on upload |
| Manual review always | Auto-approval possible |
| $5 one-time fee | No fee |
| Screenshots: 1280×800 or 640×400 exactly | Screenshots: 2400×1800 max |
| Source review on request | Source submission required |