# Ext Scaffold

> Generates a working Manifest V3 browser extension skeleton — manifest.json, background service worker, content script, and popup — valid on first load in Chrome/Edge/Firefox with no npm and no bundler. Refuses to overwrite an existing directory. Use when starting any browser extension instead of writing boilerplate.

- Skill: `trac3r00/ext-scaffold` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add trac3r00/ext-scaffold`
- Raw SKILL.md: https://api.skillmd.com/api/skills/trac3r00/ext-scaffold/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: trac3r00 (https://skillmd.com/u/trac3r00)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/trac3r00/ext-scaffold

---


# Ext Scaffold

A working Manifest V3 extension in one command — no npm, no bundler, no
"why doesn't my service worker register".

## Commands

```bash
python3 scripts/ext_scaffold.py my-extension
python3 scripts/ext_scaffold.py my-extension --dir ~/projects --permissions storage,tabs
```

## Generated

```
my-extension/
├── manifest.json    # MV3, kebab-case name validated, permissions you asked for
├── background.js    # service worker: install hook + message ping/pong
├── content.js       # content script: runs on all pages, pings background
├── popup.html       # action popup with a working button
└── popup.js         # popup logic: queries the active tab
```

Load it: `chrome://extensions` -> Developer mode -> Load unpacked.
It works before you touch a line — message passing, content injection, and
popup all wired.

## Pairs with

`webapp-testing` (drive the browser with your extension loaded),
`code-review` (review what you build on the scaffold).

