skills/pr-self-review/SKILL.md
Draft short, plainspoken notes in the author's voice that help reviewers understand non-obvious choices, boundaries, and preserved behavior in the author's own pull request or local diff. Use when the user asks to self-review, annotate, or add reviewer context to their PR or changes. Draft locally when no PR exists, and post approved notes as one GitHub review when a PR does exist. Do not use for reviewing someone else's PR, writing code comments, explaining code generally, or drafting a PR description. Never post without explicit approval.
npx skillsauth add petekp/claude-skills pr-self-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read the diff as a reviewer and answer the few questions the code cannot answer for itself. Zero notes is a good result when the change is already clear. Most PRs need zero to three; larger or unusually subtle changes may need more.
These are quick asides to a teammate, not documentation or a defense of the change.
Default to the PR for the current branch. If the user names a PR number or URL, use that target and its repository for every command.
gh pr view \
--json number,title,body,author,headRefName,headRefOid,state,url
gh api user --jq .login
Add the PR number or URL after view when the user names a target. Pass
--repo <owner/repo> when a numbered target belongs to a repository other than
the current one. A full PR URL can be used directly.
Record the PR URL, owner/repo, number, author, and headRefOid. Only write
self-review notes when the signed-in account is the PR author and the PR is
open. If the identities differ, stop rather than speaking as someone else.
If no PR exists, continue in draft-only mode. Read the local branch diff against its intended base plus any staged and unstaged changes. Ask for the base only if it cannot be discovered safely. Explain that the notes cannot be posted until a PR exists.
Read, in this order:
gh pr diff <target> --repo <owner/repo>
gh api --paginate "repos/<owner>/<repo>/pulls/<number>/comments?per_page=100"
gh api --paginate "repos/<owner>/<repo>/pulls/<number>/reviews?per_page=100"
gh api --paginate "repos/<owner>/<repo>/issues/<number>/comments?per_page=100"
Check recent comments the author wrote or approved in the same repository when you need a voice sample:
gh api "repos/<owner>/<repo>/pulls/comments?sort=created&direction=desc&per_page=100" \
--jq '.[] | select(.user.login == "<author-login>") | {body,path,created_at}'
Copy the texture, never the wording. Prefer current user context over older examples.
Draft a note only when all of these are true:
Good candidates include a surprising but verified choice, a deletion that may look like lost behavior, a narrow scope boundary, behavior that deliberately stays unchanged, or a known limitation the reviewer needs to judge now.
Skip obvious edits, formatting, routine renames, and explanations that only repeat the diff. Never invent the author's intent. If the reason is unclear, state the visible effect without claiming intent, ask the user, or skip the note.
A constraint that will still matter after merge may need a code comment. A PR note can help the current review, but it must not be the only place durable knowledge lives. Flag that separately; do not edit the code unless asked.
Use recent same-repo comments as the strongest style evidence. For Pete, use
this dedicated PR-comment register rather than importing the broader
write-as-pete tics:
we only for a documented shared
decision. Use I only when Pete explicitly stated a personal choice.Read every draft together before presenting it. Remove repeated openings and sentence shapes. Delete anything that sounds like PR-body copy, a changelog, or a bot explaining the code.
Never copy these sentences into a real review. Use them only to calibrate the level of detail, after verifying every claim.
panel. we ignore it here
and clear it on the next navigation."Present the proposed review summary and every inline note. For each inline note, show the path, side, line, and body. If a claim needed investigation, show its basis outside the quoted comment so the user can verify it without making the public note denser.
Review summary
"left one note inline."
src/components/table.tsx:84 (RIGHT)
"this size only applies to table selection. existing checkboxes keep their current size."
Basis: the other checkbox callers still use the default size.
Wait for explicit approval before posting. Exact comment text paired with a clear instruction to post already counts as approval; do not ask twice. Post only the approved wording and anchors. If either changes, show the change and get approval again.
After approval, read references/github-posting.md and follow it exactly. Post one review, then compare what GitHub stored with the approved summary and comments.
tools
Design and build pure-CSS (zero-JavaScript) Tailwind CSS v4 plugins of unusual depth and craft. Use when the user wants to create, architect, or refine a Tailwind utility plugin or CSS effect — e.g. "make a tailwind plugin", "build a tw-* plugin", "a CSS-only shimmer/fade/glow/grain/noise utility", "tailwind v4 @utility", "package this effect as a plugin", or wants an effect with surprising visual depth (gradients, masks, filters, SVG filter tricks, scroll-driven animation). Pairs deep CSS/SVG technique research with a bespoke tuning workbench for dialing the effect in. Inspired by tw-fade and tw-shimmer.
content-media
Create clear, polished before-and-after screenshots for a GitHub pull request. Use when a UI change needs visual proof: capture matching states, crop to the relevant UI, stitch and caption one comparison image, attach it natively to the PR, and keep the image out of the repository.
testing
--- name: latent-potential description: First-principles, team-of-experts assessment of a software project that surfaces latent potential; underexploited assets, a sharper north star, missing high-leverage capabilities, better framing and messaging. Produces a prioritized, evidence-grounded report with cheap probes, a reframe candidate, a stop-doing list, and an honest skeptic's case. Use whenever the user wants fresh eyes on a project they have built: "what am I sitting on", "what could this be
development
Audit and fix animation performance issues including layout thrashing, compositor properties, scroll-linked motion, and blur effects. Use when animations stutter, transitions jank, or reviewing CSS/JS animation performance.