pr-description
Skill5.9k starsChanged yesterdayMITView on GitHub
Use when writing the description of a vimeo/psalm pull request (gh pr create / gh pr edit), or when asked to reformat, tidy or shorten an existing PR description, including PRs opened by other people. Defines the house format (one-line bug + Before/After code blocks taken from PR test cases that assert the fix) and how to verify them.
- Commits and pushes
We split this skill into the rules it gives an agent
8 rules. 0 are common, 3 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 85 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 46
Keep closing keywords for issues the PR fixes (Fixes #1234) on their own last line, so GitHub links and closes them.
- Distinctive: line 48
Leave out: background and motivation, design notes, "stacked on / combines / merged
- Very specific: line 61
If no test case makes a short, clear example, add one to the PR first.
- Very specific: line 73
Only when asked, and only for PRs in repos you may edit (vimeo/psalm and the psalm org: editing someone else's PR body needs maintainer …
- Very specific: line 76
Read the current body, title and diff: gh pr view <n> --repo vimeo/psalm --json title,body,author,files and gh pr diff <n> --repo …
- Distinctive: line 84
Keep everything the author wrote that matters to reviewers in the new format: the bug summary, issue links / closing keywords, and any …
- Very specific: line 87
Verify the examples by running each one's test case on master and on the PR head (gh pr checkout <n> in a separate worktree, or git fetch …
- Distinctive: line 92
Don't touch the code, labels or reviews of the PR as part of this.
“Common” is measured: kept by at least 6 in 10 of the 85 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
PR descriptions
Format
As brief as possible: the reader only cares which bug is fixed, shown with code. The shape (the bug below is made up, only the layout matters):
Psalm reports a false `PossiblyNullReference` after `assert($x !== null)` inside a closure.
**Before**
```php
<?php
function f(?Foo $x): void {
$g = function () use ($x): void {
assert($x !== null);
$x->bar(); // PossiblyNullReference
};
}
```
**After**
```php
$x->bar(); // no issue
```- One sentence naming the bug, as the user sees it (wrong issue, missed issue, crash, wrong inferred type), not the implementation.
- A Before block: the code of a test case of the PR that asserts the fix (see
below), plus what master reports, written as trailing
// IssueName(or// IssueName: short messagewhen the message matters) comments on the lines where the issue appears. - An After block with only the lines whose result changes, commented with the
new result (
// no issue,// TaintedHtml,// InvalidReturnType, or the new inferred type). - Several bugs in one PR: one short
###heading per bug, each with its own one-line summary and Before/After pair. - No PHP example possible (CI, memory, performance, crash in tooling): one plain line, e.g. "Self-analysis no longer hangs in taint resolution." Numbers only if they are the fix ("cuts self-analysis memory from 20 GB to 3 GB").
- Keep closing keywords for issues the PR fixes (
Fixes #1234) on their own last line, so GitHub links and closes them. - Leave out: background and motivation, design notes, "stacked on / combines / merged #…", measurements that aren't the point, review follow-ups, checklists, test lists, changelog prose, and any AI attribution.
Every example is a test case that asserts the fix
- Each Before/After example must correspond to a test case of the PR, and that test case must assert the fix: it fails on master and passes on the branch, because it checks exactly the result the After block shows (see "Tests must assert the change" in CLAUDE.md for how tests silently fail to do that).
- The example is that test's code. If the test is long, the description may show only the lines that matter, as long as the test asserts what they show. Never show a snippet no test covers.
- If no test case makes a short, clear example, add one to the PR first. Specific,
easy-to-follow examples beat abstract ones (
Foo/baris fine;T1/T2chains are not). - Verify by running that single test case (
--filter 'testValidCode@caseName', ortests/Taint --filter '@caseName'; see CLAUDE.md) on master (must fail) and on the branch (must pass). Copy the issue names in the Before comments from master's actual output. Never write invented or "illustrative" output. - Taint PRs: the test case should show source and sink in a few lines
(
echo $_GET['x'];→// TaintedHtml).
Reformatting an existing description (including other people's PRs)
Only when asked, and only for PRs in repos you may edit (vimeo/psalm and the psalm org: editing someone else's PR body needs maintainer rights).
- Read the current body, title and diff:
gh pr view <n> --repo vimeo/psalm --json title,body,author,filesandgh pr diff <n> --repo vimeo/psalm. - Work out the bug(s) actually fixed from the diff and the tests it adds, not only from the prose. Pick the examples from the PR's test cases, and check that those tests assert the fix. If none does, or none makes a usable example, tell the user and suggest a test case to add; don't push tests to someone else's PR unless asked.
- Keep everything the author wrote that matters to reviewers in the new format: the bug summary, issue links / closing keywords, and any explicit note about a BC break or a behaviour change users must know about (one line at the end). Drop the rest.
- Verify the examples by running each one's test case on master and on the PR head
(
gh pr checkout <n>in a separate worktree, orgit fetch origin pull/<n>/head). - Show the new body to the user before replacing someone else's. Then:
gh pr edit <n> --repo vimeo/psalm --body-file <file>. Don't change the title unless asked; if it's misleading, suggest a new one. - Don't touch the code, labels or reviews of the PR as part of this.
Other versions90 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 90
- jdx/mise★ 36ksame name
- zulip/zulip★ 26ksame name
- Nagi-ovo/gemini-voyager★ 21ksame name
- pipecat-ai/pipecat★ 17ksame name
- AgentWrapper/agent-orchestrator★ 14ksame name
- ComposioHQ/agent-orchestrator★ 14ksame name
- OrchestratorInc/agent-orchestrator★ 14ksame name
- Untrivial-ai/agent-orchestrator★ 14ksame name
- sanity-io/sanity★ 6.4ksame name
- pytorch/torchtitan★ 5.9ksame name
80 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use ao-desktop-dev, bug-triage and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
agentlab-inSkillao-desktop-dev
Launch, restart, or troubleshoot the real AO Electron desktop app from this repository; run a checkout against isolated or real local AO data; combine PR branches for local UI review; and diagnose stale Electron processes, port conflicts, or preload bridge mismatches. Use whenever asked to run, open, show, or visually verify AO frontend changes in the actual desktop app rather than ao preview, dev:web, or mock data.
Also in 4 projects that use this
jMertaSkillbug-triage
Use when the user reports a bug, regression, runtime error, failing build, or broken test and wants reproduction, diagnosis, root-cause analysis, or an authorized fix. Isolates the shared cause and verifies the smallest relevant change.
Also in 4 projects that use this
GitHubSkillcommit-message
Generate conventional commit messages - use when creating commits, writing commit messages, or asking for git commit help
Also in 8 projects that use this
francogalfreSkilldependency-audit
Audits package.json dependencies for outdated packages, security vulnerabilities, unnecessary deps, and version issues. Use when the user says "audit my dependencies", "check my packages", "what deps should I update", "clean up package.json", "are there security issues in my deps", or pastes a package.json.
Also in 3 projects that use this
PydanticSkilli-have-adhd
Shape every response for an ADHD reader who reviews the work but does not do the coding — the agent does. Use whenever responding to ANY message — coding, debugging, planning, casual. Lead with the result or the decision. Surface anything needing the user's input as a structured question, never buried in prose they'll skim past. No preamble, no recap, no closers. State errors matter-of-factly. Make finished work visible. Trigger even on casual messages and even when brevity wasn't requested.
Also in 3 projects that use this
HashiCorpSkillchangelog
Add a `.changelog/<PR_NUMBER>.txt` entry for a GitHub Pull Request, commit, and push.
Also in 5 projects that use this
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- hack-conformanceSkill
- merge-6x-into-masterSkill
- plugin-api-bcSkill
- psalm-reproSkill
- purity-capabilitiesSkill
- taint-analysisSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

