By mahuebel
Visual workspace for iterating on UI with Claude Code — point, comment, react, and refine in real time instead of describing changes in prose
npx claudepluginhub mahuebel/forge --plugin forgeGenerate distinct UI design variations, collect feedback, synthesize the best elements, and produce implementation plans
Open-source, skills-based version of Claude Design (claude.ai/design) for Claude Code. HTML pages, slide decks, interactive prototypes, UI kits, and brand systems — with taste, context-matching, and anti-slop discipline.
Web development tools including frontend design workflows
Design-focused skill for Claude integrating SuperDesign capabilities for visual asset creation and design automation.
StitchFlow turns product briefs into Stitch UI screens, variants, Tailwind-friendly HTML, and screenshots. Works across Codex, Claude Code, and OpenClaw.
High-fidelity HTML design skill — Iron Law enforcement, auto update check, design context preservation, and temp cleanup via hooks
Admin access level
Server config contains admin-level keywords
Uses power tools
Uses Bash, Write, or Edit tools
Share bugs, ideas, or general feedback.
A visual workspace for iterating on UI with Claude Code — point, comment, react, and refine in real time instead of describing changes in prose.
Forge turns the usual Claude loop — "make it more compact… no, less… actually move the sidebar… wait, I meant the other sidebar…" — into something direct. Claude generates variations, you open them in a browser, click what you like, drop pins on what needs fixing, reject what doesn't work. Your clicks stream back to Claude, and the next round lands with your feedback already baked in.
Traditional Claude iteration on UI designs looks like this:
You: Can you make 3 variations of a settings page?
Claude: [outputs three HTML files]
You: I like the second one, but the toggle section is cramped,
and the first one's sidebar is better. Can you combine them
and also make the buttons bigger... wait, not those buttons,
the save/cancel buttons...
Claude: [regenerates, mostly guesses what you meant]
You: Close, but now the spacing is weird between...
It works, but you're constantly translating visual intent into prose. Forge skips the translation:
You: /forge 3 variations of a settings page
Claude: Ready — open http://localhost:4546
[you open the browser, look at three designs side by side]
[you click "Like" on variation A's sidebar]
[you drop a pin on B's toggle section: "too cramped, more spacing"]
[you click "Reject" on variation C]
You: /forge refine
Claude: You liked A's sidebar and flagged B's toggle spacing.
Here's Round 2 combining both — open the browser again.
The difference: Claude gets structured feedback (selectors, positions, verdicts) instead of imprecise prose. You stay in visual flow.
curl -fsSL https://bun.sh/install | bash
Add the marketplace, then install the plugin:
/plugin marketplace add mahuebel/forge
/plugin install forge@forge-marketplace
Both commands run inside Claude Code. The first pulls the marketplace manifest from github.com/mahuebel/forge; the second installs the plugin from it. No cloning required.
For real-time feedback (recommended), start Claude Code with the channel flag:
claude --dangerously-load-development-channels plugin:forge@forge-marketplace
This enables Claude Code Channels so your browser clicks arrive in Claude's session as <channel source="forge"> events the moment they happen. The --dangerously-load-development-channels flag is only needed until forge is approved for the official channel allowlist.
Without --channels, forge still works — a UserPromptSubmit hook picks up your pending browser feedback whenever you send any message in your Claude session.
git clone https://github.com/mahuebel/forge.git
# In Claude Code:
/plugin marketplace add ./forge
/plugin install forge@forge-marketplace
In any Claude Code session:
/forge 3 variations of a pricing page with monthly/yearly toggle
Claude starts the workspace server, writes three HTML files, and tells you the URL. Open it in your browser — the rest is clicking.
That's the whole setup. You never run the Bun server yourself.
Three panels side by side. Each loads a variation in an iframe for full style isolation. Hover to highlight, click the header buttons to like or reject the whole variation.
┌──────────────────────────────────────────────────────────────┐
│ ⚒ forge "3 variations of a pricing page..." ● Live │
├──────────────────────────────────────────────────────────────┤
│ Select Annotate 👍 👎 | Grid | Full │
├──────────────┬──────────────┬──────────────────────────────┤
│ A — Basic │ B — Featured │ C — Side-by-side │
│ [ iframe ] │ [ iframe ] │ [ iframe ] │
│ ✓ ✗ │ ✓ ✗ │ ✓ ✗ │
└──────────────┴──────────────┴──────────────────────────────┘
│ Selected: 1 Annotations: 0 Rejected: 1 [ Refine ] │
└──────────────────────────────────────────────────────────────┘
One variation takes the full viewport; a chip bar lets you switch between them; a notes sidebar collects every pin you've dropped.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claim