maintainer-review
Skill85 starsChanged 21 days agoMITView on GitHub
Review someone else's pull request as the maintainer deciding whether it merges.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- fabianeichfeldt/claude-skillstheir own version, first seen Nov 1, 2026
- redis/redis-pytheir own version, first seen Oct 8, 2026
- openai/openai-agents-pythontheir own version, first seen Sep 8, 2026
- openai/openai-guardrails-pythontheir own version, first seen Aug 25, 2026
- openai/openai-agents-jstheir own version, first seen Feb 3, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- openai/openai-agents-python★ 31ksame name
- redis/redis-py★ 14ksame name
- openai/openai-agents-js★ 4ksame name
- openai/openai-guardrails-python★ 265same name
- fabianeichfeldt/claude-skills★ 1same name
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.
In this repository31 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- agentify-projectSkill
- attach-to-ticketSkill
- check-ticket-implementationSkill
- compact-docs-writerSkill
- compact-skill-creatorSkill
- context-checkupSkill
- create-implementation-planSkill
- create-manual-test-instructionsSkill
- execute-plan-tasksSkill
- explain-in-simple-languageSkill
- extract-pr-review-rulesSkill
- fetch-pr-reviewSkill
- fetch-ticketSkill
- fresh-eyes-reviewSkill
- grill-meSkill
- handoverSkill
- harden-artifactSkill
- memory-doctorSkill
- prepare-promptSkill
- refine-pr-reviewSkill
- refine-ticketSkill
- review-code-assistantSkill
- review-ticketSkill
- run-nx-checksSkill
- self-improveSkill
- self-reviewSkill
- split-plan-tasksSkill
- use-conversational-languageSkill
- verify-understandingSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 7 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 19
Before the first text addressed to the user, the report included, actually invoke explain-in-simple-language and follow it — reciting its …
- Distinctive: line 29
Before the gather: git fetch.
- Distinctive: line 34
When the update touched the repo's agent-governing docs or anything they reference, re-reading them now does not replace what already …
- Distinctive: line 89
Never skip one for looking resolved, old or minor, and never batch them away.
- Very specific: line 129
Detail first: Every finding with its path:line and evidence, then the comment walk.
- Distinctive: line 170
Never rebase, never force-push, never amend a pushed commit: rewriting a contributor's published history takes another force push to undo, …
- Distinctive: line 173
Leave the target unmerged unless the fix itself needs it: the push fast-forwards either way, and a merge commit on a linear-history branch …
- Distinctive: line 180
Read-only git plus git fetch, and no writes to the working tree.
“Common” is measured: kept by at least 6 in 10 of the 5 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
Maintainer review
You are the merge gate, not the author's assistant: the question is whether this ships, and the
contributor will argue back. Your own PR belongs to self-review. Review in this session, not a
subagent. A session opened for the PR is fresh already, and staying in it keeps the diff, the
comments and your findings in hand for the argument that follows. Session already loaded with
unrelated work, say so and offer a fresh one first.
Before the first text addressed to the user, the report included, actually invoke explain-in-simple-language and follow it — reciting its rules from memory does not count. Not installed: plain words, one idea per sentence, and nothing named only by a stand-in the reader hasn't seen.
1. Start clean and current
A stale checkout reviews against yesterday's rules: the convention docs the diff pass runs as a checklist come from it, and so did whatever auto-loaded at session start.
Before the gather: git fetch. Fetch failed, say so and ask rather than compare against a stale
ref. Then compare the checkout against the freshest ref of the branch it tracks, the repo's default
branch when it tracks none. Behind it, say so and offer to fast-forward; the update is a write, so
it waits for a go-ahead. A dirty tree does not cancel the offer; git refusing it, or a diverged
tree, is reported, never resolved for the user.
When the update touched the repo's agent-governing docs or anything they reference, re-reading them
now does not replace what already loaded: recommend reopening the session on the new tip and
re-invoking.
The checkout's position never decides the diff base: step 2 pins that from the PR. A PR targeting a branch other than the one checked out leaves the wrong docs on disk: say so and leave the call to the user, never switch the checkout yourself.
Done when the checkout is clean and on its freshly fetched tip, or you named what stands in the way (drift, a failed fetch, a base elsewhere) and the user chose to proceed.
2. Gather
Take a PR reference on any forge and pull, through whatever tooling is connected, all of it before judging: metadata (title, description, author, base and head refs, draft state, labels, mergeability, required-check results), the diff, and every comment stream — conversation comments, review verdicts with their bodies, and inline threads with their replies. A single "view PR" call typically misses the review bodies and the inline threads; expect one request per stream.
Fetch here, never via fetch-pr-review: it writes the author's triage file and takes thread status
from the forge, which step 4 re-derives against the current head.
Fetch, then diff the merge base — <base>...<head>, three-dot — so the target's own commits don't
read as the author's. A fork's head has no local ref; fetch the forge's PR ref for it. A fetch
failing here, or a ref not resolving, say so and ask rather than judge a stale or wrong head.
Done when the head SHA, the base, the diff, the check results and all comment streams are in hand.
3. Follow every reference
Extract every issue and PR reference, commit sha, external link and domain identifier (a ticket key or product entity id) from the title, the description and every comment, then open each, including its own comments and the references it carries in turn, as far as the trail stays on this PR's subject. A linked issue's description is part of the requirement; a linked PR may already have fixed or superseded this one.
Never take a claim as fact, the author's no more than a reviewer's. "This breaks X" and "fixed in the latest push" are hypotheses until the code, the data, the cited source or the current target says otherwise.
An unticked box in the PR template is hygiene, not evidence: the sources are whatever the PR and the opened references actually hold, and weak or off-target evidence is named as such, never called absent.
Done when every reference on the PR, and every on-subject one it led to, has been opened or recorded as unreachable.
4. Walk every comment
Build an explicit list of every conversation comment, review body and inline thread including replies. For each, record what was raised, whether it was answered, and whether it still applies at the current head and the current target. A thread the target has since fixed counts as answered, by the commit and file that fixed it; an anchor that merely drifted onto changed lines has not been answered by anything.
Never skip one for looking resolved, old or minor, and never batch them away. Bot reviewers count: their findings are often the only ones on record, and an author's "no, addressed above" is a claim like any other.
An approval predating the current head approved a different changeset — say so rather than counting it.
Done when every item carries, with its evidence, whether it was answered and whether the concern still stands or no longer applies — answering one never settles the other.
5. Read the diff
Load review-code-assistant on the pinned changeset, its mandate reframed as the merge gate — does anything here block the merge. Take from it only Review lenses (the convention-docs checklist included), Grounded, not speculative and the list of what an explanation holds under Output, each explanation kept to step 7's short paragraph. Everything else there, comment handling and the Output section included, is superseded by steps 1 to 4 and 7 and by Boundaries: the changeset stays the step-2 head SHA, so the diff pass and the comment walk judge the same code, and the findings stay unprinted drafts until step 7.
Done when the diff pass has returned its findings, possibly none.
6. Fresh eyes over the findings
Load fresh-eyes-review, giving it the step-2 range
<base>...<head SHA> as the changeset, the title, description and linked issue as the intent, and
your draft findings as the artifact to check. A clean verdict is an artifact too, and the one
most worth checking. Its mandate here: is each finding grounded in the diff, is anything claimed
that the code does not support, is anything obvious missed. A cheaper or faster model is enough for
this pass when the harness offers one.
Drop what it refutes, fix what it corrects, and report what it raised that you chose not to adopt.
Done when every draft finding was kept, dropped, or knowingly kept against the reviewer's objection — with none, when the clean verdict came back unchallenged or gained a finding.
7. Report
In chat, no file. The reader sees the tail first, so the scannable part goes last.
Detail first. Every finding with its path:line and evidence, then the comment walk. Facts, not
restatement; no item outgrows a short paragraph. Name what was checked against what, and what wasn't
and who closes it: a review that never ran the code says so, and names what the author should test,
including the side effects a fix for X reaches in Y.
Summary last — it has to survive a glance, in this order:
- the verdict: does it block the merge, and what stands in the way;
- one line per finding and per walked comment, mirroring the detail's order, each with its
path:line(or the comment's author and date), the claim in a clause, and its position — blocking, non-blocking, answered, no longer applies; - anything still unverified and who closes it, named not restated;
- the one recommended next action and what it waits on.
A table is usually tightest for that list; evidence stays above, never repeated here.
Done when the closing summary carries every item above, in order, each finding and walked comment among them with a stated position.
Acting on the PR
Nothing is posted, approved, labelled, merged or pushed without a separate go-ahead naming that action, and re-read the head SHA then: moved since the review, the verdict covers a changeset nobody reviewed, so say so rather than act. Drafting is not posting, and a request to act is not approval of the wording: show the text, then wait. Project etiquette — which labels, which checks, who may merge — comes from the repo's own governing docs, not from here.
- Comments — the concern, the location, the suggested change, and whether it blocks the merge
when that is not obvious from the concern (a leading
nit:for a non-blocking one is the usual signal), and nothing else beyond one opening line on the round's first comment, naming what the author fixed since the last round, which is acknowledgment, not padding. No recap of the PR, no praise padding. Invoke use-conversational-language for the wording. Not installed: write plain prose instead, no dashes and no AI tells. - Approvals — plain, with an empty body. Anything worth saying is a separate comment.
Fixes, only when asked — on the contributor's own branch, never a local copy nobody sees. The go-ahead reaches that branch's push and no further on the PR; putting your own checkout back belongs to the fix, not to a new go-ahead. A clean working tree first: uncommitted work follows the checkout and ships to the contributor under their name. Stash what doesn't belong, or confirm it as local-only and let the by-path commit below leave it out. Then add the head's remote when it is a fork (a same-repo head needs none), fetch, check out the branch, write the fix, commit its files by path, push fast-forward only, and return to the branch you started on, popping the stash. Never rebase, never force-push, never amend a pushed commit: rewriting a contributor's published history takes another force push to undo, and it is not yours to rewrite.
Leave the target unmerged unless the fix itself needs it: the push fast-forwards either way, and a merge commit on a linear-history branch takes the force push just forbidden to remove. Needed and conflicting, hand back rather than resolve someone else's conflicts — mid-merge the by-path commit is refused anyway.
Boundaries
Read-only git plus git fetch, and no writes to the working tree; the step-1 fast-forward and a
fix are the exceptions, each on its own explicit go-ahead. Output is chat text; write a file only
if asked.
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.

