Pr description
Draft a clear pull request description from the branch diff against its base. Use when you have a finished branch and want a reviewer-ready PR body before opening the PR.From its SKILL.md
npx -y skills add imtiazrayhan/agentscamp-library --skill pr-descriptionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.2 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Turn the diff between your branch and its base into a reviewer-ready pull request description. The skill computes the real changeset with git diff --merge-base, reads the touched code and the commit log, and drafts a structured body: a one-line summary, what changed and why, notable implementation notes, how it was tested, and risk/rollout. It is strictly read-only — it produces text for you to paste, it does not open or modify the PR.
When to use this skill
- You have a finished branch and want a clear PR body before opening the pull request.
- An existing PR description is thin ("misc fixes") and a reviewer needs the real story.
- You want the why and the test evidence written down, not just a list of file names.
- You are about to request review and want to front-load the context reviewers always ask for.
[!NOTE] This drafts text only. It never runs
gh pr create, pushes, or edits the PR — copy the output into your PR yourself (or hand it to thecreate-prcommand). The "how it was tested" section reports what the diff and history show; confirm the claims match what you actually ran.
Instructions
- Find the base and the diff. Determine the branch's merge base and capture the full changeset. Prefer the merge-base form so unrelated changes already on
mainare excluded:
Fall back in order if that fails:git diff --merge-base origin/maingit diff --merge-base main, thengit merge-base HEAD origin/main+git diff <base>..HEAD, thengit diff main...HEAD. If you still cannot resolve a base, ask the user which branch to diff against rather than guessing. - Detect the base branch — do not assume
main. Readgit remote show origin | grep "HEAD branch"(orgit symbolic-ref refs/remotes/origin/HEAD) to find the real default branch; many repos usemaster,develop, ortrunk. Use that name everywhere below. - Read the commit narrative. Run
git log $(git merge-base HEAD origin/<base>)..HEAD --onelineandgit diff --merge-base origin/<base> --stat(substituting the real base name from step 2) to see the scope and the author's own framing. Skim the actual hunks of the largest or most behavior-changing files — the summary must describe intent, not just churn. - Detect existing PR conventions. Check for
.github/PULL_REQUEST_TEMPLATE.md(ordocs/) and mirror its headings, checklists, and required sections exactly. If the repo uses a template, fill it in rather than imposing your own structure. - Draft the body with these sections (or the template's equivalents):
- Summary — one imperative line a reviewer could read in the merge log.
- What changed & why — the motivation and the approach, grouped by concern, not a file dump. Explain why this approach over the obvious alternative when it is not self-evident.
- Implementation notes — non-obvious decisions, new dependencies, migrations, follow-ups deliberately left out of scope.
- Testing — what was added or run. Cite real signals: new test files in the diff, a CI config, or commands the user can reproduce. Do not claim a test ran if the diff shows no test.
- Risk & rollout — blast radius, backward-compat or migration steps, feature flags, and how to roll back.
- Verify the draft against the diff. Cross-check every claim: does each "added X" map to a real hunk? Are migration/
.env/breaking changes mentioned if the diff touches schemas, configs, or public signatures? Re-run a focusedgit diff --merge-base origin/<base> -- <path>(using the real base from step 2) to confirm anything you are unsure about. - Report and flag gaps. Output the finished markdown body. Below it, flag what you could not infer — missing test coverage for changed files, an empty "why", or risky changes (deleted migrations, dependency bumps) the author should address before requesting review.
[!WARNING] If the diff is empty, the branch is identical to its base — stop and tell the user (they likely have not committed, or are on the base branch itself). Never invent a changelog for a branch with no changes.
Examples
Given a branch feat/rate-limit diffed with git diff --merge-base origin/main --stat:
src/middleware/rateLimit.ts | 84 +++++++++++++++++++++
src/middleware/rateLimit.test.ts | 52 ++++++++++++
src/server.ts | 6 ++
package.json | 1 +
4 files changed, 142 insertions(+), 1 deletion(-)
The skill drafts this PR body:
## Summary
Add a sliding-window rate limiter to the public API to absorb bursty clients.
## What changed & why
- New `rateLimit` middleware (`src/middleware/rateLimit.ts`) enforces 100 req/min
per API key using a sliding window backed by the existing Redis client.
- Wired into the request pipeline in `src/server.ts`, ahead of route handlers so
rejected requests never hit business logic.
Chosen sliding-window over a fixed-window counter to avoid the double-burst
problem at window boundaries; the Redis sorted-set approach reuses the
connection pool we already provision, so no new infra.
## Implementation notes
- Adds one dependency: `ms` for human-readable window config.
- Limit is read from `RATE_LIMIT_PER_MIN` (defaults to 100) — no migration.
- Per-route overrides are intentionally out of scope; tracked in #421.
## Testing
- `src/middleware/rateLimit.test.ts` covers under-limit, at-limit, over-limit,
and window-expiry cases.
- Run locally: `npx vitest run src/middleware/rateLimit.test.ts`.
## Risk & rollout
- Low blast radius: middleware is fail-open — if Redis is unreachable it logs and
allows the request, so an outage degrades to today's behavior.
- Rollback: revert this PR; no schema or data changes.
- Heads-up: set `RATE_LIMIT_PER_MIN` in prod before merge if 100 is too low.
Then it flags any gaps, e.g.: src/server.ts changed but is not covered by a test — confirm the wiring manually, and document the new RATE_LIMIT_PER_MIN env var in the README.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.