AI that writes your pull requests automatically.
Paste your git diff. Get a professional PR description with Summary, Changes, Testing steps, and Risks — in under two seconds.
No credit card required · GitHub OAuth · Cancel anytime
Features
Everything a good PR description needs.
DiffScribe doesn't just summarise — it produces the structure senior engineers expect from every pull request.
Instant generation
Paste a diff and get a structured PR description in under two seconds. No context switching, no blank page.
Structured output
Every description includes Summary, Changes, Testing steps, and Risks — the four sections reviewers actually need.
Diff-aware
DiffScribe reads the actual changed lines. It names affected files and functions, not generic placeholders.
Auth-gated API
Every request is tied to a GitHub identity. No anonymous abuse, no shared rate limits.
One-click copy
Copy individual sections or the entire description to clipboard. Paste straight into GitHub, Linear, or Jira.
Powered by Gemini
Uses Google Gemini with a carefully engineered prompt that enforces professional, non-hallucinated output.
Demo
Diff in. Description out.
A real example — the diff adds authentication middleware, and DiffScribe writes the full PR description automatically.
diff --git a/src/middleware/auth.ts b/src/middleware/auth.ts new file mode 100644 index 0000000..3fa2b1c --- /dev/null +++ b/src/middleware/auth.ts @@ -0,0 +1,18 @@ +import { getServerSession } from "next-auth"; +import { authOptions } from "@/lib/auth"; +import { NextResponse } from "next/server"; +import type { NextRequest } from "next/server"; + +export async function requireAuth( + req: NextRequest, + handler: (req: NextRequest) => Promise<NextResponse> +): Promise<NextResponse> { + const session = await getServerSession(authOptions); + if (!session) { + return NextResponse.json( + { error: "Unauthorized" }, + { status: 401 } + ); + } + return handler(req); +}
Summary
Introduces a requireAuth middleware that centralises authentication checks for API routes. Previously each handler called getServerSession directly; this extracts the pattern into a reusable utility and returns a consistent 401 response for unauthenticated requests.
Changes
- src/middleware/auth.ts: new requireAuth wrapper function - Imports getServerSession and authOptions from existing auth config - Returns NextResponse.json 401 on missing session
Testing
- Call a protected endpoint without a session cookie — expect 401 - Call the same endpoint with a valid GitHub session — expect 200 - Run existing auth integration tests: npm test src/middleware
Risks
- Routes not yet migrated to requireAuth remain unprotected until updated - Behaviour depends on getServerSession; any authOptions change affects all guarded routes
Pricing
Simple, transparent pricing.
We're currently in beta. All features are free while we refine the experience.
Coming soon
Pricing plans are being finalized. During the beta, enjoy 20 free generations per day with full access to all features.
Try it free →Stop writing PR descriptions manually.
DiffScribe handles the boilerplate so you can focus on the code. Connect your GitHub account and generate your first description in 30 seconds.
Continue with GitHub — it's freeNo credit card · GitHub OAuth · Cancel anytime