Stop sending mediocre promptsprompts to your AI.
PrePrompt is the open-source MCP server that intercepts your prompts in Claude Code, Cursor, Windsurf and Zed — scores them in under a millisecond, and rewrites the bad ones before they hit the model.
Drops into the IDE you already use
A scoring system, a rewriter, and a dashboard. Nothing you have to think about.
Every prompt gets a score in under a millisecond. Nothing gets sent through the network until you've earned a rewrite.
Every intercept shows the original and the rewrite side by side. Approve, revert, or move on with one keystroke.
~700ms overhead
The Haiku rewrite adds about 0.7 seconds to a complex prompt. Simple prompts pay zero — they never leave your machine.
Watch your accept-rate climb as the classifier learns your project. A real signal that the rewrites are actually working.
Three steps. None of them yours.
Once you install, PrePrompt runs as a sidecar to your IDE. It only speaks up when a prompt is bad enough that a rewrite is the kindest thing to do.
Intercept
PrePrompt hooks into the UserPromptSubmit event your IDE already fires. Every prompt is intercepted locally, before a single byte leaves the machine.
claude-code → preprompt.hook("add tests")Classify
A heuristic classifier scores intent, specificity, and project-context cues in under a millisecond. Simple prompts pass through. Vague ones route to a clarifier. Bad ones route to a rewriter.
score = 64 · route = enrichRewrite
Only complex prompts go to Claude Haiku — and only with the project context PrePrompt has already learned. The rewrite arrives in ~700 ms and goes straight into your IDE chat.
preprompt → claude_code("rewritten prompt …")Four people. Same four-word prompts. Same fix.
You ship features alone all day
The pain · Your prompts are 3 words because you know what you mean. The model doesn't.
The fix · PrePrompt fills in the missing 50 words from the files you're in. You stay in flow.
You jump between four codebases
The pain · Context-switching means re-typing the same setup blurb to Claude five times a day.
The fix · Per-repo memory recalls each project's stack, patterns, and conventions. Automatic.
Your team shares an Anthropic bill
The pain · Half of every Haiku rewrite is wasted because the input prompt was vague.
The fix · Better intercepts mean fewer rewrite round-trips. Bill drops, output quality climbs.
You're newish to Claude Code
The pain · You don't yet know what makes a good prompt vs. a bad one — and the docs don't say.
The fix · Every intercept shows you the rewrite. PrePrompt is the world's quietest mentor.
The fastest way to send a bad prompt is to think you've already fixed it.
Four ways to handle prompt quality. Three of them require you to remember to do something.
PrePrompt open · local | Type carefully discipline-based | Prompt mgr SaaS $$$ · hosted | Vendor sidecar in-platform | |
|---|---|---|---|---|
| Runs inside Claude Code / Cursor | ||||
| Sub-millisecond classifier | ||||
| Zero data leaves your machine by default | ||||
| Per-project memory | ||||
| One-click revert / accept | ||||
| Open source (MIT) | ||||
| Live dashboard with accept-rate | ||||
| Costs $0 to start |
What people stop saying once PrePrompt is on.
Half my prompts to Claude Code were three-word vibes. PrePrompt rewrites them with the files I'm in and the patterns from my last 50 prompts. I haven't said "add tests" in two months.
Anaya, staff engineer
Series B fintech, San Francisco
I thought I was a prompting pro. My own dashboard says my accept-rate doubled after switching on PrePrompt. The "before" version of me was guessing.
Marco, indie dev
Lisbon, ships side-projects
The thing that actually sold the team: it runs locally, no prompts ever hit a third-party log, and the only outbound call is the same Anthropic one our IDE already makes.
Priya, infra lead
200-engineer eng org
An honest dashboard for prompting. PrePrompt Replace your vibes with a real signal. Accept rate, route ratios, per-project memory — all in a local SQLite database you control.
Plug into the IDE you already use. Four supported today. MCP transport everywhere there's MCP. UserPromptSubmit hook where there's a hook.
Claude Code
First-class UserPromptSubmit hook. Zero config.
Cursor
Auto-attaches in Agent mode via MCP.
Windsurf
MCP transport — drop in the JSON, done.
Zed
Lightweight MCP — terminal-fast.
Local-first isn't a tagline. It's the default behaviour.
We built PrePrompt for ourselves first. That means no analytics dashboards we don't own, no third-party log sink, no surprise data trail. If you flip telemetry on, you decide what gets sent and to whom.
Zero telemetry by default
Not a single event leaves your machine unless you flip a switch. The product ships off.
SQLite, on your laptop
Every prompt, every score, every rewrite lives at ~/.preprompt/history.db. You own it.
MIT, fully readable
Every line is on GitHub. Audit it, fork it, vendor it. No closed-source layer.
One outbound call
Only Anthropic — the same API your IDE already uses. We never proxy your code.
Classifier latency
Haiku rewrite p50
Telemetry by default
"An IDE without PrePrompt is an IDE where the most expensive model in your stack is being prompted by someone in a hurry. PrePrompt is the slow-down step that ends up saving everyone time."
Yashdeep TehlanAuthor of PrePrompt · ex-DevTools
What the dashboard actually shows.
A peek at the local SQLite log. Every prompt, scored. Every rewrite, kept or reverted. Your prompts never leave this database — except the one round-trip to the model your IDE already uses.
Recent intercepts
localhost:7777 · last 4 prompts · auto-refreshes every 30s
| Time | Score | Route | Original | Rewrite |
|---|---|---|---|---|
| 12:04 | 64 | enrich | add tests | add pytest unit tests for src/handlers/auth.py covering valid, expired and missing tokens. match tests/test_billing.py style. |
| 12:01 | 8 | pass | fix this typo | — passed through — |
| 11:58 | 71 | enrich | rewrite the auth middleware | refactor the JWT middleware in api/middleware/auth.ts to verify tokens locally via jose's `jwtVerify`, eliminate the per-request supabase RPC, and surface auth errors via the existing AppError type. |
| 11:53 | 24 | clarify | what should we do? | → asked: about what? the failing migration, the open PR, or the perf regression? |
One command. Then keep coding.
PrePrompt picks up your existing Anthropic key. New accounts get $5 free credit at the Anthropic console — enough for thousands of prompts.
pip install preprompt && preprompt installworks on macOS, Linux, Windows · python ≥ 3.10 · MIT licensed
Free forever for one developer. Hosted when you want it.
Hobby
Everything PrePrompt does today. Open source. Bring your own Anthropic key.
- Full classifier + rewriter
- Local SQLite dashboard
- Project-scoped memory
- All 4 IDE integrations
- Community support
Dev
Hosted rewriter endpoint. We hold the Anthropic key. You get one less thing to babysit.
- Everything in Hobby
- Hosted /v1/optimize endpoint
- 30 enrichments / month included
- Cloud dashboard
- Email support
Pro
For developers who live in their IDE. Unmetered, cross-machine memory, priority rewrites.
- Everything in Dev
- Unmetered enrichments
- Cross-machine project memory
- Priority routing — p50 < 400 ms
- Direct founder support
Team tier in private beta. Email us.
The eight we get the most.
Your next prompt could be thebest one this week.
PrePrompt installs in 30 seconds, sits silently in your IDE, and only speaks up when a rewrite would genuinely save you time.
free forever · MIT · pip install preprompt