Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
Writes the body of a pull request - the summary, the repository template sections, and reviewer guidance such as a recommended reading order and focus areas.
$ npx skills add warpdotdev/common-skills --skill write-pr-description -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install warpdotdev/common-skills write-pr-description --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/write-pr-description .claude/skills/write-pr-description && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "write-pr-description" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-pr-description into .claude/skills/write-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-pr-description", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-pr-descriptionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add warpdotdev/common-skills --skill write-pr-description -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install warpdotdev/common-skills write-pr-description --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/write-pr-description .agents/skills/write-pr-description && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-pr-description" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-pr-description into .agents/skills/write-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-pr-description", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/common-skills --skill write-pr-description -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install warpdotdev/common-skills write-pr-description --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/write-pr-description .cursor/skills/write-pr-description && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "write-pr-description" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-pr-description into .cursor/skills/write-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-pr-description", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/warpdotdev/common-skills.git --path .agents/skills/write-pr-description--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add warpdotdev/common-skills --skill write-pr-description -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install warpdotdev/common-skills write-pr-description --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/write-pr-description .gemini/skills/write-pr-description && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "write-pr-description" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-pr-description into .gemini/skills/write-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-pr-description", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install warpdotdev/common-skills write-pr-descriptionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add warpdotdev/common-skills --skill write-pr-description -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/write-pr-description .github/skills/write-pr-description && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "write-pr-description" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-pr-description into .github/skills/write-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-pr-description", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/common-skills --skill write-pr-description -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install warpdotdev/common-skills write-pr-description --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/write-pr-description .opencode/skills/write-pr-description && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "write-pr-description" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-pr-description into .opencode/skills/write-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-pr-description", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
write-pr-descriptionWrites the body of a pull request - the summary, the repository template sections, and reviewer guidance such as a recommended reading order and focus areas.
Write PR Description is an agent skill from warpdotdev/common-skills. Writes the body of a pull request - the summary, the repository template sections, and reviewer guidance such as a recommended reading order and focus areas. Use whenever drafting or revising a PR description, filling in a repository's PR template, refreshing a description that no longer matches the branch, or preparing a branch for review. Use it even when the user only says "open a PR", "put this up for review", or "write this up" without naming the description.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/evals.json`, `references/plain-language.md` and `references/review-guide.md`).
It sits in Development, covering Pull requests. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 69b4753. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Write PR Description loads about 3.7k tokens when it runs, and up to ~6.8k if it reads all its reference files. Until then it costs about 122 tokens; SKILL.md has 2,356 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from warpdotdev/common-skills at commit 69b4753, republished under its MIT licence (© warpdotdev). 2,356 words, ~3,746 tokens.
.claude/skills/write-pr-description/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.A pull request description has one job: give the reviewer what the diff cannot.
The diff already states what changed. The description states why it changed, what it affects, which decisions were made along the way, and where the author wants attention. Everything below follows from that. When a rule here conflicts with what a specific reviewer needs, serve the reviewer.
create-pr covers the mechanics of opening the PR. This skill covers what goes in the body.
Usually you did the work and already know most of this. When you are describing a branch you did not write, or a PR you have just been handed, start here.
# From a checkout of the branch
git --no-pager log <base>..HEAD # commit bodies first, they carry the why
git --no-pager diff <base>...HEAD --stat
# From a PR number, with no local branch
gh pr view <n> --repo <owner/repo> --json title,commits,files,baseRefName
gh pr diff <n> --repo <owner/repo>Read the commit bodies before the diff. They are usually the richest source of motivation. Then verify what they claim: a commit message saying "matches the existing pattern in this file" is an assertion about code, and it is often wrong. Do not forward a claim you have not checked.
Verify by looking, not by reasoning. The checks worth making are cheap and specific:
gcloud iam roles describe for a role's permission set, the provider or API schema for a resource's
fields, the parser for what a marker does.One check of this kind usually produces the best sentence in the description.
Gather what the diff cannot tell the reviewer:
Check the repository for a PR template. Where there are several, pick the one matching the change. Templates differ per repository, so check every time rather than reusing the shape from your last PR.
The template's own instructions outrank this skill. A template that says "remove this section if it is not relevant" is telling you what this repository's reviewers want. Follow it. The guidance below applies where the template is silent.
When no template exists, use this shape, which is the same shape a template would give you:
Why section.## Review guide, when step 4 calls for one.## What changed## ValidationThis shape collapses on a small change. A heading over a single line is the same ceremony step 4 warns about, so drop any section that would hold one and let the opening carry it.
Open with one to three sentences covering what the change does and why. A reviewer who reads only the first paragraph should be able to tell whether they are the right reviewer.
Where the repository has a template, this paragraph goes inside its first content section, whatever that section is called. Do not add a lead above the template's first heading, and do not repeat it once inside.
Then give the substance:
You normally ran the work, so report it: the command and what it showed.
Where you did not, or only partly did, these are the honest shapes. More than one can apply at once: you may have verified a fact yourself and still be waiting on CI for the rest.
Whichever apply, state each once. Repeating "this was not run" in three sections reads as hedging, and buries the one line that says what to run instead.
Never write intent as though it were a result.
Use ASD-STE100 as the baseline: active voice, one topic per sentence, sentences under about 25 words, simple tenses, one term per concept for the whole description. Code identifiers, command lines, and established repository jargon are technical names; leave them alone. See references/plain-language.md for the rules and the exemptions.
Add a review guide when the reading order is not obvious, when you have a specific place you want attention, or when the change can break things well beyond the files it touches. Skip it when a competent reviewer will know where to look without being told.
Put it high, directly after the summary. A reviewer should not have to scroll past
compliance checklists to find where to start. ## Review guide is a reasonable default
heading when the template does not supply one.
On a small PR, guidance is a sentence or two, not a section. Fold it into the opening rather than raising a heading over it. A heading on two paragraphs is ceremony, and so is a reading order for six files.
A review guide contains some or all of:
Write it for a competent engineer. Point at the code and the open question; never explain how to review code. See references/review-guide.md, which opens with a short map of which of its sections you need.
Drafts run long, and the excess is almost never in the thinking. It collects in the parts that feel obligatory: the checklist answers, the inventory of tests, the second statement of something you already said. Those parts are also the easiest to delete, which makes this pass cheap and worth doing every time.
Rough anchors for the whole body, before you start cutting:
These are anchors, not limits. Being over one means look harder at the list below; it never means cut a decision.
Then take each paragraph and name the decision it helps the reviewer make. If you cannot name one, delete it. The usual finds:
Co-Authored-By belongs in the commit, not in the PR body.Keep, even when cutting hard: the motivation, the behavior changes, the decisions and their rejected alternatives, the open questions, and the blast radius. These are the reason the description exists. When something has to go, cut mechanism before you cut a decision.
Narrating the branch's own history. The most common failure. Sentences like "this PR previously included unit tests, which were removed after review feedback", or "the description above overstated this and has been corrected", describe a transition that does not exist in the diff the reviewer is reading. The reviewer sees one state against the base. Describe that state.
Note what survives the rule: the reasoning usually still matters, only the transition goes. "The tests were removed because they only reasserted the match arms" becomes "there are no unit tests here, because a test at this layer would only reassert the match arms".
This holds however long the branch is. A branch with thirty commits still reaches the reviewer as one state against the base.
Restating the diff. A file-by-file inventory is the standard way to write something long that carries no information.
Unverified claims, about anything. Inflated test claims are the familiar case ("fully tested", "no regressions"), but a confident wrong claim about mechanism is more dangerous, because a reviewer is less likely to check it. Before asserting what a role permits, what a flag gates, or what a function guarantees, verify it.
Grading your own work. "Comprehensive", "robust", "clean", "properly". Padding that costs credibility.
Lecturing the reviewer. "Please check for edge cases and make sure the error handling is correct." A competent reviewer already does this, and it displaces the specific pointers only you can give.
Leaving a stale description. After a rework or a force-push, rewrite the body to describe the current branch. Do not append a revision log to the bottom.
© warpdotdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .agents/skills/write-pr-description of warpdotdev/common-skills.
Open the folder on GitHubat commit 69b4753
Write PR Description next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Write PR Description this skillwarpdotdev/common-skills | 606 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Check PRonyx-dot-app/onyx | 32k | 2 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Understand Diff AnalysisEgonex-AI/Understand-Anything | 85k | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| PR Design DocOpenHands/OpenHands | 90k | — | ~2.4k | Automated safety check: Pass | MIT |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
onyx-dot-app/onyx
Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.
Egonex-AI/Understand-Anything
Reads your git changes or a pull request against a prebuilt knowledge graph of the project to explain what changed, which components are affected and what is risky.
OpenHands/OpenHands
For a non-trivial pull request, write a self-contained HTML design doc under the temporary .pr/ directory and link a visibility-appropriate preview in the PR description, so maintainers grasp the…
woocommerce/woocommerce
Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.
warpdotdev/common-skills
Grades agent skills by scoring agent conversations for efficiency, code quality, procedure compliance, and verbosity, then drafts concrete skill edits and a shareable report.
warpdotdev/common-skills
Produce a polished, self-contained HTML "readout" document under ~/.readouts (with an auto-maintained index page), either by snapshotting the findings accumulated in the current conversation or —…
warpdotdev/common-skills
Resolve Git merge conflicts by extracting only unresolved paths, conflict hunks, and compact diffs instead of loading whole files into context.
warpdotdev/common-skills
Review a pull request diff and write structured feedback to review.json for the workflow to publish.
warpdotdev/common-skills
Run an autonomous, spec-driven development "saga" for medium-to-large features using an orchestrator agent and a fleet of worker subagents.
warpdotdev/common-skills
Generate a static interactive D3 walkthrough of a pull request.
Categories
Writes the body of a pull request - the summary, the repository template sections, and reviewer guidance such as a recommended reading order and focus areas. Write PR Description is an agent skill from warpdotdev/common-skills. Writes the body of a pull request - the summary, the repository template sections, and reviewer guidance such as a recommended reading order and focus areas.
Write PR Description fits situations like: revising a PR description; filling in a repositorys PR template; refreshing a description that no longer matches the branch; preparing a branch for review.
Run `npx skills add warpdotdev/common-skills --skill write-pr-description -a claude-code`. Or copy the skill folder (.agents/skills/write-pr-description in warpdotdev/common-skills) into .claude/skills/write-pr-description in your project. Claude Code loads it when a task matches its description.
Run `npx skills add warpdotdev/common-skills --skill write-pr-description -a codex`. Or copy the skill folder (.agents/skills/write-pr-description in warpdotdev/common-skills) into .agents/skills/write-pr-description in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add warpdotdev/common-skills --skill write-pr-description -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-pr-description, .gemini/skills/write-pr-description, .github/skills/write-pr-description and .opencode/skills/write-pr-description in your project.
Going by SKILL.md and its folder, Write PR Description needs the command-line tools its instructions call (git and gh).
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Write PR Description is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Write PR Description: Finishing a Development Branch (obra/superpowers, 296k stars), PR Babysitter (openinterpreter/openinterpreter, 69k stars), Check PR (onyx-dot-app/onyx, 32k stars) and Understand Diff Analysis (Egonex-AI/Understand-Anything, 85k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
warpdotdev (a GitHub organization) maintains it in warpdotdev/common-skills, which has 606 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on September 30, 2026.
Source: warpdotdev/common-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.