Ext Scaffold
A working Manifest V3 extension in one command — no npm, no bundler, no "why doesn't my service worker register".
Commands
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).