Marco Hergi
MadeIndexOpen source
Claude Code · free & open source

PromptForge

A Claude Code hook that sharpens every prompt before Claude acts on it. It rewrites vague prompts into testable briefs, routes to the right capability, and learns your own commands. No API keys, no latency.

zero dependencies·zero API calls·MIT
Try it — type anything

This is the real classifier from the hook, running in your browser. Watch a vague prompt turn into a brief.

You type
PromptForge injects ↓
fullvague — gets the full restate-block before Claude acts
RAWyour prompt, verbatim
READS AStypos + shorthand resolved, every “it / that” bound to a real referent
GAPSwhat’s missing — audience · goal · success criteria — named and filled
SHARPENEDthe tightened, testable version Claude actually acts on
ROUTEthe execution path that fits + the proof it worked

Three ways to use it

1The drop-in hook

Always-on

The product. Install once and every prompt you send Claude Code gets sharpened automatically — before Claude reads it. No keys, no latency.

install in 30 seconds
git clone https://github.com/MARCCHERGGI/promptforge.git
cd promptforge
node install.mjs

Backs up your settings, appends without clobbering existing hooks. Restart Claude Code and you’re done.

2The open-source repo

MIT · zero deps

One readable file, no dependencies. Read it, fork it, tune the depth thresholds and capability patterns to your own workflow. Includes the installer, the MCP server, the skill, and the learning-loop distiller.

View on GitHub

3The Claude Code prompt

No install

Want it without a hook? Paste this prompt to sharpen a single request, or save it as a slash command (~/.claude/commands/enhance.md) and call /enhance any time.

copy the prompt
Before you act on my next request, sharpen it. Open your reply
with this block, then act on SHARPENED — never the raw text:

RAW       | my request, verbatim
READS AS  | resolve typos + shorthand; bind every "it / that / the
            thing" to a concrete referent
GAPS      | what's missing — audience · goal · success criteria —
            fill the obvious, ask only if truly blocked
SHARPENED | the tightened, testable version of the request — act on THIS
ROUTE     | the best way to execute it + the check that proves it worked

Scale to ambiguity, not length: if my request is already crisp, just say
"SHARPENED ≈ <one-line restatement>" and get to work. Then complete it in
one pass — don't hand back a half-step that needs another prompt.

How it works

You type on the left. PromptForge has Claude act on the right — before the first guess.

make the dashboard better

Full restate-block: binds “the dashboard” to your recent files, names the gaps (which metric? whose view?), proposes plan→implement→verify.

fix the login bug

Routes to root-cause → verify the fix runs — not a guess-and-check patch.

add a rate limiter to src/api.ts, 100/min

Already crisp → one-line confirmation + “complete it in one pass, then verify.” No nagging block.

git push --force to main

⚠ Danger reminder: force-push rewrites history — confirm the branch and that no one else is on it.

What’s inside

Adaptive depth

Trivial → nothing. Crisp → one line. Vague → full restate-block. Scaled to ambiguity, not word count, so it never becomes wallpaper.

Capability routing

Detects when a prompt warrants planning, parallel subagents, root-cause debugging, or extended thinking — and names it.

Learns your commands

Reads your own ~/.claude/commands and surfaces the slash commands that fit. Nothing hardcoded — it adapts to your setup.

Learning loop

Logs when a prompt corrects the last turn, then distills recurring misreads into avoid-this lessons it injects automatically.

Danger reminders

Flags hard-to-reverse ops — force-push, rm -rf, prod deploys, plaintext secrets. A heads-up, never a block.

If it saves you a round-trip, star it.

PromptForge on GitHub