Underground Extension Generator
Loading...
Underground Extension Generator
Ready to forge ↺

Underground Extension Generator

Describe your extension, generate the code, refine it with AI, then export for Chrome, Edge, Firefox, Opera, or Safari.

Sponsored

Support the free forge by keeping this space available for sponsors.

01

Extension brief

* Required
Extension name *
What should it do? *
No limit — describe it in as much detail as you like.
Made by
Permissions
✓storageSave settings locally ✓activeTabRead the current tab ✓tabsManage browser tabs

Generate with AI

Optional. Use the built-in models, priced from free up to 999 credits per message, or bring your own OpenRouter key.

0–999 CREDITS
AI engine
Built-in models0–999 credits per message OpenRouter keyBring your own key
Built-in model 1 credit/msg
Show free models only

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.

OpenRouter API key
Show
Model Pick any OpenRouter model ID, or choose Custom.

Standardized brief
Reset to AI version
Edit the standardized brief

This text is exactly what the plan is built from — change anything in it.

Does this brief look right?

Confirm it and Forge adds boilerplate, features, and browser-specific details.

Edit promptExpand & build→
Generate with AI↗ Discuss & plan

Built-in models run through this app with your plan. No key needed.

Generate starter kit→
02

Your starter kit

□Copy file
⌘
Tab TidyReact + Vite · MV3
Generated
Generated Revert file
Edit file contents

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

Download for

Download file↓ Download for Chrome↓ All 5 browsers (.zip)↓
Blank Chrome repo (.zip)↓

The same repo with an empty src/App.tsx — nothing generated to delete first.

03

App.tsx studio

A chatbot for one file. Ask for a change, read the new src/App.tsx, then apply it.

— No versions yet App.tsx benchmark · not run yet

App.tsx chat

Clear chat
Message about App.tsx
Enter to send Send→

App.tsx benchmark


              
            

src/App.tsx

Code Live preview

                

Restore previous Copy Download .tsx
Popup 360px Fill width
Reload Open in new tab
index.html

App.tsx versions

Every applied change is kept here, newest first.

    04

    Refine with AI

    Ask for changes. Every answer can update the plan and rebuild the code.

    — No plan yet

    Chat

    Clear chat
    Message
    Enter to send Send→

    Build plan

    Draft

    Your plan appears here once you generate or ask for a change.

    
                Rebuild code from this plan
              
    05

    Extension icon

    Generate a square icon with the Gemini image model, then ship it inside your export.

    Nano Banana · Gemini 2.5 Flash Image Not in export
    Look
    Extra direction (optional)
    Generate icon↗

    Icons come from the platform's Gemini image model, so this needs a signed-in account with credits.

    Prompt sent to the model
    
                  
                
                
    Use in export Download PNG Remove icon

    A kept icon is added to every browser export as icons/icon-16.png, icon-48.png and icon-128.png.

    06

    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

      Commit message
      Version tag
      patch minor major
      A tag becomes a release in the changelog and sets the version in manifest.json.
      Commit version→

      Each commit stores every file as it looks now, together with the build plan.

      History

      Branch New branch
      Branch Create branch Cancel

      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.

        Copy diff□ Export git repo (.zip)↓
        Clear history
        07

        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.

        Idle

        Run control

        DuckyScript
        Keystroke speed
        0 ms injects at hardware speed. Higher values type like a person.
        Combos to inject
        →
        1 to 99 covers the whole codex. Chapters run 9 moves deep across 11 pages.
        Delivery A synthetic key event is untrusted, so a browser will not insert text for it on its own. Value + key events writes the text and dispatches keydown, keypress and keyup.
        START PAUSE STEP STOP
        Injection progress
        Combo0 / 99
        Characters0
        Typing time0.0s

        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

        Clear

          Press START and every macro line lands here as it runs.

          Payload script

            Copy script□ Download .txt↓

            Sandbox target

            textarea
            Injection target

            Key events received

              Every dispatched keydown, keypress and keyup shows up here.

              08

              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

              Reload popup Reload extension
              + about:blank ×
              ×

                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

                Storage API calls Worker

                The extension has not saved anything yet.

                Storage
                Clear extension storage

                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.

                      Copy test steps□ Download browser test kit (.zip)↓
                      What to check in the real browser