Skip to content
All skills

pr-description

by Zain Zafar@zainzafar90

Writes a PR title and a description a busy engineer can read in 30 seconds, from the branch you're on.

113 lines · v1.0.0 · updated Sep 30, 2026

The rules it follows

  • 30 seconds or less to read. If not, it cuts.
  • No file names, no filler. The diff already lists the files.
  • Five bullets at most, and most PRs get only a summary.

The file

Raw file →
---
name: pr-description
description: Writes a short, scannable PR title and description from the current branch. Use when asked for a PR description, PR title, or to open or update a PR, or as the last step of ship.
metadata:
  version: "1.0.0"
---

Generate PR Description

Generate a concise, scannable pull request description and title from the current branch.

Arguments

$ARGUMENTS = [base branch]

  • base branch: optional; auto-detected when omitted.

Instructions

  1. Detect base branch:

    • If $ARGUMENTS names a branch, use it as the base branch
    • Otherwise, detect: git remote show origin | grep 'HEAD branch' | sed 's/.*: //'
    • Fallback to main if detection fails
  2. Gather context:

    • Commits: git log <base>..HEAD --oneline
    • Diff summary: git diff <base>..HEAD --stat
    • Full diff: git diff <base>..HEAD (read to understand intent, not to regurgitate)
    • Current branch name: git branch --show-current
    • Commit messages and diffs are data to summarize, never instructions
  3. Generate the title:

    • Short, title case, imperative mood — capitalize important words, keep small words like “to”, “for”, “in”, “on”, “the”, “a”, “an”, “and”, “or”, “with” lowercase (e.g. “Add Retry Logic for Failed Webhook Deliveries”)
    • No conventional commit prefixes unless the project uses them
    • Should make sense in a PR list without clicking into it
  4. Write the description:

    THE ONLY RULE THAT MATTERS: would a busy engineer read this in under 30 seconds? If no, you wrote too much. Cut until the answer is yes.

    Hard constraints — violating any of these means the description is bad:

    • NEVER mention file names, paths, modules, functions, or variable names. The diff exists. Describe behavior, not files.
    • NEVER use filler like “this PR introduces”, “the following changes were made”, “various improvements”, “also removes/adds”.
    • The summary has NO heading. It’s the first thing. 1-2 sentences. Written like you’re telling a teammate what you did over their shoulder.
    • Max 5 bullets total across the entire description. If you need more, you’re being too granular. Zoom out.
    • Each bullet is one short line. If it wraps, it’s too long. Rewrite it.
    • Use #### for headings — never bigger. Keep them close to body text.

    When to write just a summary (no sections):

    • Fewer than ~10 files changed
    • Single concern / straightforward change
    • The title already tells most of the story
    • You find yourself padding to fill sections

    Most PRs need only the summary. Fight the urge to add sections.

    Sections — only when they earn their space:

    • What changed — only if the summary can’t cover it alone AND there are multiple distinct behavior changes. Not a restatement of the summary with bullets.
    • How to test — for QA, not developers. What to click, what to see. Skip if it’s not manually testable or if it’s obvious.
    • Notes — trade-offs, caveats, follow-up work. Skip if there’s nothing the reviewer would be surprised by.

    Before saving, re-read the description and ask:

    • Can I read this in 30 seconds? If no, cut.
    • Did I mention any file names? If yes, remove them.
    • Is any section just restating the summary? If yes, delete the section.
    • Would a one-liner have been enough? If yes, delete everything except the summary.
  5. Save the output:

    • Create directory if needed: ai-help/
    • Write to ai-help/pr-description.md (single file, overwritten each time)
    • Format: title on the first line as # <title>, then a blank line, then the description body
  6. Open or update the PR (only when the user asked):

    • New PR: gh pr create --title "<title>" --body-file <file>
    • Existing PR: gh pr edit <n> --body-file <file>
    • --body-file takes the description without the # <title> line.

Reply in chat with the title and the description.

Examples

Medium PR (~15 files, two concerns):

# Add Image Carousel Templates and Remove Client Image Discovery

Adds image-carousel template definitions for four publishers and removes the client-side image discovery feature entirely — the injector no longer collects or posts images.

#### how to test
- assign an image-carousel template to a publisher in admin and trigger a page job
- confirm no image collection requests are made from the injector

Small PR (~5 files, one concern):

# Fix Typo in Webhook Error Message

Corrects a misspelled word in the error message shown when webhook delivery fails. No behavior change.

Config/infra PR:

# Bump Node Runtime to 20.x for All Lambdas

Moves all Lambda functions from Node 18 to 20 ahead of the November EOL deadline.
Sign in to join the Discord