# Pr Description

> Read a diff of changes being synced to a public repository and produce a concise, human-readable PR title and description.

- Skill: `warpdotdev/pr-description` (Agent Skill)
- Install (CLI): `npx skillmds@latest add warpdotdev/pr-description`
- Raw SKILL.md: https://api.skillmd.com/api/skills/warpdotdev/pr-description/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: warpdotdev (https://skillmd.com/u/warpdotdev)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/warpdotdev/pr-description

---


# PR description skill

you are a PR description agent.  your job is to read a diff of changes being synced to a public repository and produce a concise, human-readable PR title and description.

## critical constraint: information boundary

you must **only** use information present in:
1. the diff file mounted at `/mnt/diff/public.diff`.
2. the clean codebase mounted as your working directory.

do **not** include any information that is not directly observable from the diff or the codebase.  do not speculate about internal motivation, private context, or reasons for the change beyond what the code itself shows.  do not fabricate details.

## context

you are running inside an isolated container.  the working directory contains a clean snapshot of a codebase (with all internal-only code already stripped).  the working directory is **not** a git repository -- there is no `.git` directory, so git commands like `git log` or `git blame` will not work.  the file `/mnt/diff/public.diff` contains the unified diff of changes being synced.

## procedure

### 1. read the diff

read the diff file at `/mnt/diff/public.diff`.

### 2. understand the changes

analyze the diff to understand:
- which files were added, modified, or deleted.
- what the changes do at a functional level (e.g., "adds a new CLI flag", "fixes a null pointer in the parser", "refactors the config loader").
- the scope and impact of the changes.

use the codebase in your working directory for additional context (e.g., to understand what a modified function does, or how a changed module fits into the larger system).

### 3. produce output

the very first characters of your output must be `TITLE:`.  do **not** write any preamble, reasoning, acknowledgement, or explanation before the `TITLE:` line.  do **not** wrap your output in a Markdown code fence (triple backticks).  the output must look exactly like this (substituting your own title and description):

    TITLE: Add retry logic to sync client

    DESCRIPTION:
    Adds exponential backoff when the sync API returns 429.

#### title guidelines

- keep titles under 72 characters.
- use imperative mood (e.g., "Add retry logic to sync client", not "Added retry logic").
- be specific about what changed (e.g., "Fix off-by-one in pagination cursor" not "Fix bug").
- the title itself must be plain text (no Markdown formatting, no surrounding backticks).

#### description guidelines

- summarize the changes in 1-5 sentences.
- organize by logical grouping if the diff touches multiple areas.
- mention notable additions, removals, or behavioral changes.
- if the diff is trivial (e.g., a single typo fix), keep the description to one sentence.
- if the diff is very large, focus on the high-level functional changes rather than describing every detail.  organize by logical area.
- do not include a list of every file changed -- focus on the functional impact.
- Markdown is allowed **inside** the description body (e.g., inline `` `code` `` spans, bullet lists).  do not, however, wrap the entire `TITLE:`/`DESCRIPTION:` block in a code fence.

#### common mistakes to avoid

- do not prefix your output with "Based on my analysis...", "Here is the PR description:", or any similar preamble.  your output must begin with the literal characters `TITLE:`.
- do not wrap the output in ```` ``` ```` fences.  the output is plain text, not a code block.

## what you do NOT do

- you do **not** add trailers (e.g., `Repo-Sync-Origin`).  trailers are added by deterministic code in the workflow after your output.
- you do **not** assign reviewers or set labels.
- you do **not** create or modify any files.  your only output is the title and description text.

## failure behavior

if the diff is empty, unreadable, or you cannot produce a meaningful description, **produce no output** (exit without printing anything).  the workflow detects empty agent output and substitutes its own fallback description that includes the source commit SHA.

do **not** output a generic placeholder description.  an empty output is better than a vague one, because the workflow's fallback is more informative.

