chrome-extension

chrome-extension is a skill for Claude Code, Codex from OutlineDriven/outline-driven-development. It costs 33 tokens per session (1,414 once invoked), scanned A, original, Apache-2.0.

A workflow for building or changing a Manifest V3 Chrome extension, a browser add-on format using files such as a manifest, service worker, and content scripts.

In plain words
What is it for?
Use it to create or modify extensions that act on web pages, show browser interfaces, exchange messages, store data, or prepare a store submission.
Why use it?
It structures the extension and keeps its permissions and browser security policy within the stated scope.

Skill for Claude CodeCodex

Written for Claude Code and Codex: disable-model-invocation in frontmatter, but also agents/openai.yaml present.

Good fit Use it to create or modify extensions that act on web pages, show browser interfaces, exchange messages, store data, or prepare a store submission.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/outlinedriven/outline-driven-development/chrome-extension
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add OutlineDriven/outline-driven-development --skill chrome-extension
Clone the repo
git clone --depth 1 https://github.com/OutlineDriven/outline-driven-development

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for chrome-extension

README.md
[![agentmods](https://agentmods.dev/badge/skills/outlinedriven/outline-driven-development/chrome-extension.svg)](https://agentmods.dev/skills/outlinedriven/outline-driven-development/chrome-extension)
Your own site
<a href="https://agentmods.dev/skills/outlinedriven/outline-driven-development/chrome-extension"><img src="https://agentmods.dev/badge/skills/outlinedriven/outline-driven-development/chrome-extension.svg" alt="Measured on agentmods" height="20"></a>
Per session 33 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,414 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00033 $0.01414
Opus 5 $0.00016 $0.00707
Sonnet 5 $0.00007 $0.00283
Haiku 4.5 $0.00003 $0.00141

Measured 2d ago against content hash 8341f4d0a8b9, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

chrome-extension scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.devin/skills/chrome-extension/SKILL.md · 53 lines

How it starts

The opening of the file, as written. The whole thing — 53 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Chrome extension

Contract

Field Bound contract
Trigger User works on a Chrome extension: manifest, service worker, content scripts, messaging, or publishing.
Authority Human-gated: asks before store submission or publication; otherwise reversible local: writes only extension project files under the working directory; rollback is version control. Store submission requires explicit human invocation and human-supplied credentials; never initiated autonomously.
Side effect Writes extension project files under the working directory. Only on explicit human invocation, may submit or publish the extension to a browser store.
Done A loadable MV3 extension exists with manifest, service worker, content scripts, messaging, storage, permissions, CSP, and UI surfaces verified, or a store submission is initiated with human-supplied credentials.

Inputs

  • Required: the extension's purpose and target surfaces (which pages it acts on, which UI it shows).
  • Required for publishing: store account credentials and listing assets, supplied by the human; never inferred, generated, or stored by the skill.
  • Optional: existing manifest or source to extend; TypeScript/build preference; target Chrome version.

Procedure

  1. Bound scope: confirm with the human whether this is a new extension, an edit to an existing one, or a store submission. Do not begin store submission unless explicitly invoked for it. Done when: the scope is confirmed as new, edit, or submission.
  2. Validate inputs at their trust boundary: the required purpose and surfaces are present; any publishing credentials are human-supplied and never inferred. Stop rather than widen scope or invent evidence. Done when: required inputs are present and validated, or the missing ones are named and the run stopped.
  3. Author or edit manifest.json to Manifest V3: set manifest_version: 3, name, version, and the minimal permissions for the declared surfaces. Manifest V2 is not produced. Done when: manifest.json is valid MV3 with minimal permissions.
  4. Add a service worker via background.service_worker for lifecycle and event handling. Keep it stateless across suspension: persist durable state in chrome.storage, never in module-level variables. Done when: the service worker is stateless and durable state is in chrome.storage.
  5. Add content scripts scoped to the declared page matches via content_scripts.matches; inject only the CSS and JS each surface needs. Done when: content scripts are scoped to declared matches with minimal injected assets.
  6. Add UI surfaces as needed: action popup (action.default_popup), options page (options_ui), side panel, or devtools panel. Each surface is a separate HTML document with its own script. Done when: each needed UI surface is a separate HTML document with its own script.
  7. Wire messaging with chrome.runtime.sendMessage / chrome.runtime.onMessage for popup-to-service-worker and chrome.tabs.sendMessage for service-worker-to-content-script. Treat every message as untrusted: validate shape and origin before acting. Done when: messaging is wired and every message is validated for shape and origin.
  8. Choose storage by durability: chrome.storage.local for extension data, chrome.storage.session for service-worker runtime state, chrome.storage.sync for user settings. Never store secrets in chrome.storage. Done when: storage is chosen by durability and no secrets are stored.
  9. Request the narrowest permissions that satisfy the surfaces; prefer optional permissions requested via chrome.permissions.request at the point of use over broad manifest-time grants. Done when: permissions are minimal, with optional permissions preferred over broad grants.
  10. Enforce network and CSP: remote code is banned under MV3, so all scripts must be packaged. Declare host_permissions only for the origins the extension actually fetches. Done when: all scripts are packaged and host_permissions are scoped to actual fetch origins.
  11. Mark resources the page or web context must reach (injected images, frames, or assets) under web_accessible_resources, scoped to the matching origins. Done when: web-accessible resources are declared and scoped.
  12. Respect execution contexts: the service worker, the content script (page-isolated), and the page DOM are separate. Never share live objects across them; serialize through messages. Done when: execution contexts are separated and objects are serialized through messages.
  13. If TypeScript is preferred, configure a build (tsc or a bundler) that emits the JS paths the manifest references; the manifest always points at built output, not source. Done when: the build emits JS paths the manifest references.
  14. Debug with chrome://extensions load-unpacked and the service-worker DevTools. Check chrome.runtime.lastError after every async API call; surface lastError rather than swallowing it. Done when: the extension loads unpacked and lastError is surfaced after every async call.
  15. To publish, only on explicit human invocation, package the extension by zipping the built output. Then submit it through the Chrome Web Store developer dashboard using human-supplied credentials and listing assets. The model never enters credentials or triggers the upload autonomously. Done when: the extension is packaged and submitted with human-supplied credentials, or the run stops for lack of explicit invocation.

Read the full file on GitHub · 53 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago Changed · -27 tokens per session 8341f4d0a8b9
  2. 4d ago First seen · 53 lines · 60 tokens per session scan A d5315865ae5d

Subscribe to this mod's changes

chrome-extension is a skill published in the GitHub repository OutlineDriven/outline-driven-development (52 stars, last pushed 2d ago), licensed Apache-2.0. It adds 33 tokens to every session and 1,414 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

browser-testing

Test and debug browser code with Chrome DevTools MCP. Use when building or debugging browser UI, inspecting the DOM, capturing console errors, analyzing network requests, or verifying visual output.

OutlineDriven/odin-claude-plugin · 39 tokens

web-browser

Automate and interact with web pages through Chrome or Chromium using the Chrome DevTools Protocol (CDP): navigate, click, fill forms, inspect content, take screenshots, and debug console or network activity. Use when an agent needs a real browser. Prefer headless Chrome unless visible browser interaction is required.

mitsuhiko/agent-stuff · 64 tokens

playwright-cli

Automates browser interactions for testing and validating your own web applications using playwright-cli. Use when you need terminal-first browser control for navigation, form filling, screenshots, tracing, bound browser sessions, debugging, or generating Playwright test code. Only use against applications you own or…

testdino-hq/playwright-skill · 64 tokens

rudder-worktree-preview-maintainer

Use when starting the current Rudder checkout as a temporary managed local preview with a stable URL, readiness check, logs, stop command, and cleanup path for manual inspection of the current branch or worktree.

Undertone0809/rudder · 49 tokens

prohibit-bad-habits

Use when a user wants to define patterns the agent should not do. Don't use for remote, credential, publish, deploy, or irreversible changes.

OutlineDriven/odin-claude-plugin · 37 tokens

daytona-chrome-cdp

Launch and control standalone Chrome in a Daytona sandbox via CDP. Use for web sign-in, OAuth, Den Web setup, browser-only flows, or when the app should not be driven through Electron CDP.

Devin-AXIS/iPolloWork · 49 tokens