Underground Extension Generator
Describe your extension, generate the code, refine it with AI, then export for Chrome, Edge, Firefox, Opera, or Safari.
Support the free forge by keeping this space available for sponsors.
Extension brief
Generate with AI
Optional. Use the built-in models, priced from free up to 999 credits per message, or bring your own OpenRouter key.
Free on any plan needs no credits. Free with Pro is included with a Pro plan and costs the listed price otherwise.
Every built-in model is listed with its exact price and the limits that come with it. No API key needed.This text is exactly what the plan is built from — change anything in it.
Confirm it and Forge adds boilerplate, features, and browser-specific details.
Built-in models run through this app with your plan. No key needed.
Your starter kit
extension.spec.yaml describes the extension and PROMPT.md can rebuild it from scratch. Both ship inside every export.
Bun · React · Vite · Tailwind · shadcn/ui
The same repo with an empty src/App.tsx — nothing generated to delete first.
App.tsx studio
A chatbot for one file. Ask for a change, read the new src/App.tsx, then apply it.
App.tsx chat
Clear chatsrc/App.tsx
Every applied change is kept here, newest first.
Refine with AI
Ask for changes. Every answer can update the plan and rebuild the code.
Chat
Clear chatBuild plan
DraftYour plan appears here once you generate or ask for a change.
Rebuild code from this planExtension icon
Generate a square icon with the Gemini image model, then ship it inside your export.
Icons come from the platform's Gemini image model, so this needs a signed-in account with credits.
Prompt sent to the modelA kept icon is added to every browser export as icons/icon-16.png, icon-48.png and icon-128.png.
Versions & git
Every commit saves a full snapshot of the extension: history, branches, diffs and tagged releases you can rebuild in real git.
Working tree
Each commit stores every file as it looks now, together with the build plan.
History
Your versions appear here after the first commit.
Restore puts an older version back into the editor. Commit afterwards to keep it.
The repository export carries the working tree, .gitignore, CHANGELOG, every tagged version and a script that rebuilds this history in git.
Injection console
Type the 99-combo codex into a target automatically. Pick a range, set the keystroke speed, then run it macro line by macro line.
Run control
This console drives the sandbox below. It cannot attach a debugger to other tabs — a sandboxed page has no access to them, and this tool does not try.
Terminal
Press START and every macro line lands here as it runs.
Payload script
Sandbox target
Key events received
Every dispatched keydown, keypress and keyup shows up here.
Test in Chrome
Run the extension in a copy of the browser here, then download a kit that opens a throwaway Chrome with it loaded.
Simulated browser
The popup runs for real — React, Tailwind and your compiled src/App.tsx — with the browser APIs answered here instead of by Chrome. It cannot test what only a browser can: real permission prompts, your real tabs, and other sites.
Extension internals
The extension has not saved anything yet.
Open the popup and every browser call it makes lands here.
This kit has no background worker yet. Ask the chat to add one — it is what handles alarms, badges and messages when the popup is closed.
No scheduled alarms.
A real browser, untouched
The kit carries the unpacked extension and launch scripts for Chrome, Edge, Opera and Firefox. They open the browser on a temporary profile, so your own browser, logins and extensions are never involved.
