the spec-first IDE companion

Stop chatting with agents.
Start shipping with specs.

SpecBuddy turns vague prompts into structured execution workflows. No more infinite prompt loops, "almost-correct" code, or losing control of what you're building.

  • 01 No more prompt loops. A spec is approved once, then executed.
  • 02 No more "almost-correct" code. Every step is traceable to a requirement.
  • 03 No more losing control. Accept, reject, zoom, or rollback — step by step.
$ curl -fsSL specbuddy.dev/install | sh
~/project/broken_loop.log
CHAOS
SPEC
RUN
01
WATCH: typical session chaos → spec → control
the problem

AI coding, today, is broken.

§ 01 / 03

You write a prompt.
Agent generates code.
You iterate. You regenerate.
You regenerate again.
→ repeat.

It feels powerful — but:
agents misunderstand requirements
context is lost between turns
output drifts from your goal
you are doing the work of steering

It's a rocket without guidance. Fast launch. No control. Expensive corrections.

INFINITEPROMPT LOOP~$ while true; do regenerate; donepromptgeneratecompile/runregretredo
NEW PARADIGM

SpecBuddy turns AI coding into a controlled engineering process — across any IDE and any agent.

§ 02 / 03
THE THESIS
specs define truth.
plans drive execution.
reviews ensure correctness.
Specdefine truthPlansteps + toolsExecuteany agentReviewprovable
how it works

Four steps from vague idea to verified code.

§ 03 / 03
01BUILD A SPECIFICATION

Help the agent describe what you want to build.

Start with a short description. The agent turns it into a structured spec using your request, your codebase, and your constraints. You review, edit what matters, approve. Nothing runs until you sign off.

IntelliJ IDEA — auth.spec.md○ awaiting input
ASK
PROJECT
src
specs
auth.spec.md
billing.spec.md
search.spec.md
db
tests
— empty spec —
your prompt will generate a draft here
02GENERATE A PLAN

The agent defines how to get there.

From the approved spec, the agent produces a step-by-step execution plan — what to build, what to modify, what tools to use, in what order. Every step cites a spec requirement. You skim, nudge, or go deeper.

Plan — auth → magic-link / 9 steps executing 03/09
01 add migration: magic_links table drizzle-kit
02 write createMagicLink(email): Link typescript
03 wire rate-limit (upstash) ratelimit
04 POST /api/auth/request route
05 GET /api/auth/consume route
06 add email template resend
07 unit tests: token expiry vitest
08 e2e: login flow playwright
09 update README auth section docs
03EXECUTE WITH CONTROL

Agent runs the plan. You review and correct as you go.

The agent executes step by step. You catch missing details, accept, reject, or rollback — no "big bang" generation, no silent drift. Your job is intent and control. The typing is the agent's.

Run — step 03 / 09 ● awaiting review
STEP 03 · EDIT
src/auth/ratelimit.ts
+ export const authLimiter = new Ratelimit({
+ redis: kv,
+ limiter: Ratelimit.slidingWindow(5, '1 h'),
+ });
 
+ export async function checkAuthLimit(email: string) {
+ const { success } = await authLimiter.limit(email);
+ if (!success) throw new RateLimitError(email);
+ }
STEP 03 · CONTROLS
Accept this step
⇥ tab
Reject & regenerate
⌘R
Zoom in
break into sub-steps
⌘↓
Edit manually
⌘E
Rollback
revert files touched
⌘Z
spec ref → rate-limit: 5/email/hour
result matches constraint.
04ZOOM INTO ANY STEP

Stay high-level. Zoom only where it matters.

You don't want to fully specify every step. A high-level plan is enough most of the time. When a step feels vague or risky — zoom in and make it explicit.

Zoom — step 03 › rate-limit depth 2
HIGH-LEVEL
◆ 03  wire rate-limit (upstash)
↓ ZOOMED
03.1 provision KV namespace / upstash
03.2 create authLimiter (5/hour sliding) / ts
03.3 checkAuthLimit(email) wrapper
03.4 unit: rejects on 6th call
03.5 wire into /api/auth/request
 EARLY ACCESS · SHIPPING Q2 '26 · LIMITED WAITLIST

Stop babysitting the agent.

SpecBuddy is in closed beta for IntelliJ IDEA. VS Code and Cursor plugins ship next. Drop your email — we'll send an invite as seats open.

TWEAKS
Theme
Accent