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.

Input — git diff HEAD
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);
+}
Generated PR description
1.4s

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.

BetaFree

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 free

No credit card · GitHub OAuth · Cancel anytime