See exactly where your delivery flow is waiting
Preview the phase-by-phase report for review pickup, active review, and merge time. Connect in about five minutes; the initial analysis runs after sync.
Preview the Sample Report·Analyze My GitHub DataRead-only GitHub · Your code stays yours · Team-level by default · No credit card
Most pull requests don't fail review because the code is wrong. They stall because the author forgot the tests, the description says nothing, or the change is so big that the reviewer skims it and approves. A shared checklist fixes all three, and it takes an afternoon to set up. Here are the author and reviewer lists you can copy today, plus how to make them stick across a whole team.
What should be on a pull request checklist?
A pull request checklist has two halves. The author list confirms the PR is ready for a human: it's small and focused, it has a clear description and linked issue, tests are added and passing, and there is no debug code or committed secret. The reviewer list confirms the change is safe to merge: it does what it claims, it's readable, it has real test coverage, and it handles errors and edge cases. Keep each side short enough that people actually use it.
A checklist isn't bureaucracy. It's the difference between review as a habit and review as a coin flip. The best teams write theirs down once, put it in a pull_request_template.md, and let it quietly raise the floor on every PR. This guide gives you both lists, the research behind them, and the part almost no one gets right: how to roll it out without your team feeling policed.
🔥 Our Take
The single most valuable line on any PR checklist is "is this PR small enough to review properly?" Everything else is downstream of size.
A 600-line PR gets a thumbs-up because no human can hold 600 lines in their head. Get the size right and the rest of the checklist actually gets used. Get it wrong and you're just adding ceremony to a rubber stamp.
Why Does Your Team Need a PR Checklist?
Review quality is wildly inconsistent when it lives only in people's heads. One reviewer digs into edge cases, another approves after a glance, and the same author writes a detailed description on Monday and a one-word title on Friday. That variance is what a checklist removes. It sets a shared floor so every PR gets the same baseline attention, no matter who opened it or who happened to be free to review.
The data on why this matters is strong, and most guides skip it. In a 10-month study of around 2,500 reviews at Cisco, SmartBear found that reviewers catch the most defects when they look at 200 to 400 lines of code over 60 to 90 minutes, and that defect-finding drops off sharply beyond that. Review effectiveness also falls after about an hour of continuous reviewing. So most missed bugs trace back to oversized PRs and marathon review sessions, not to lazy engineers. A checklist that keeps changes small is doing more for quality than any amount of reviewer diligence.
We see the same pattern in our own data. When we looked at millions of merged pull requests for our study on rubber-stamp reviews, large PRs received far fewer comments per line of code than small ones. The bigger the change, the less real scrutiny it got. A checklist is how you interrupt that slide.
"A checklist doesn't slow reviews down. It stops the back-and-forth that does."
What Should Be on the Author Checklist?
The author checklist runs before you ask anyone to review. Its job is to make sure the PR arrives review-ready, so the reviewer spends their time on judgment instead of chasing missing tests or decoding what the change is for. Here is a version you can copy straight into your template:
## Author checklist
- [ ] This PR does one thing (under ~400 lines changed)
- [ ] Title and description explain what changed and why
- [ ] Linked the issue or ticket this closes
- [ ] Added or updated tests for the change
- [ ] Ran the tests locally and they pass
- [ ] Reviewed my own diff line by line
- [ ] No debug code, commented-out blocks, or committed secrets
- [ ] Updated docs or comments if behaviour changed
- [ ] Added screenshots or a clip for any UI changeThe most important item is the first one. Keeping a PR to one focused change, ideally under 400 lines, is what makes the rest of review work. The self-review line matters more than it looks too: reading your own diff before others do catches an enormous share of small mistakes, and it's free. If you want to go deeper on either, we have dedicated guides on keeping pull requests small and on cutting PR cycle time.
What Should Reviewers Check Before Approving?
The reviewer checklist is a different job. You are not re-writing the code, you're deciding whether it's correct, clear, and safe to ship. A short, explicit list keeps reviews focused on the things that actually matter and stops them drifting into style nitpicks a formatter should own. Copy this one for the reviewer side:
## Reviewer checklist
- [ ] The change does what the description claims
- [ ] I understand the code without asking the author
- [ ] Tests cover the new behaviour and the edge cases
- [ ] Errors and failure paths are handled, not swallowed
- [ ] No security-sensitive gaps (input handling, auth, secrets)
- [ ] No unrelated changes snuck into this PR
- [ ] Comments are specific and kind, not just "looks good"Two habits make reviewers far more effective. First, read at the pace the research supports: slow down under 500 lines per hour and take a break after an hour, because that's where defect-finding holds up. Second, review against the PR's stated intent. If you can't tell what the change is supposed to do, that's a finding in itself, not a reason to approve and move on. For the softer side of this, our guide on code reviewer best practices covers how to give feedback that gets PRs approved faster.
"The best reviewers read slowly. Under 500 lines an hour is where the bugs actually surface."
What Extra Checks Do High-Risk PRs Need?
Not every PR carries the same risk, and your checklist should say so. A copy tweak and a change to the authentication flow should not clear the same bar. For high-risk changes, touching shared infrastructure, security, data migrations, or code that many people depend on, add a short second gate on top of the normal reviewer list.
High-risk PRs deserve a real second reviewer rather than a courtesy approval, a rollback or migration plan written into the description, and extra attention on files that carry a lot of history or ownership risk. This is exactly where a single approval is most dangerous: our data on self-merged pull requests found that a large share of PRs merge with no independent review at all, and the risk is highest exactly on the changes that can break production. Knowing which files are fragile is its own skill, and our guide on how many reviewers a PR needs helps you decide when one is plenty and when you want two.
| PR size (lines changed) | What usually happens | What the checklist should push for |
|---|---|---|
| Under 200 | Fast, thorough review; easy to reason about | Keep doing this; it's the target |
| 200 to 400 | Still reviewable; peak defect-finding range | Fine for a single cohesive change |
| 400 to 1,000 | Scrutiny drops, comments per line fall | Split into smaller PRs where you can |
| Over 1,000 | Effectively rubber-stamped | Break it up before requesting review |
💡See which PRs are getting real review
CodePulse surfaces review coverage, PR size, and rubber-stamp rate across your teams, so you can tell whether the checklist is actually being followed. Explore it in your Review Network.
How Do You Automate the Checklist?
The best checklist item is one a human never has to check, because a machine already did. Formatting, linting, test runs, and basic security scans belong in CI, not on a person's list. That keeps the human checklist focused on judgment: correctness, design, and risk. Reserve the written list for the things a machine can't decide.
For the items that do stay with people, put them where they can't be missed. On GitHub, that means a pull request template. Add a pull_request_template.md file to your repository (GitHub reads it from the repository root, a docs folder, or a .github folder), commit it to the default branch, and it pre-fills every new PR's description. Here is a starter template that pairs the author checklist with a description prompt:
<!-- .github/pull_request_template.md -->
## What does this PR do?
## Why?
Closes #
## Author checklist
- [ ] Small and focused (under ~400 lines)
- [ ] Tests added and passing
- [ ] Self-reviewed the diff
- [ ] No debug code or secrets
- [ ] Docs updated if behaviour changedYou can go further with branch protection rules that require passing checks and at least one approval before merge. That turns the most important checklist items into rules the tooling enforces, so they never depend on anyone remembering.
How Do You Make the Checklist Stick?
This is the part that separates a checklist that works from a template everyone ignores within a month. A checklist is a team agreement, not a rule handed down from above, so the team has to own it. If you're an engineering manager or team lead, treat the rollout as a change to how the team works together, not a compliance exercise.
Start small. Write the shortest version that would catch your team's actual recurring problems, agree on it together in a retro or team meeting, and ship it as the template. Resist the urge to make it long. A 20-item checklist gets skimmed and ignored; a 6-item one gets used. Revisit it every quarter, drop the items that never catch anything, and add ones for the mistakes that keep slipping through. The checklist should evolve with the team, not gather dust.
Keep it developmental, never a scoreboard. The goal is better shared habits, so measure and talk about it at the team level. Never turn checklist compliance into an individual metric, because the moment people feel watched they optimise for looking good rather than doing good work. If you want the reasoning behind that, it's the same principle we apply across all of CodePulse: engineering data is for helping teams improve, not for grading people.
"A short checklist the team wrote together beats a long one handed down from above, every time."
How Do You Measure If the Checklist Works?
A checklist you can't measure is a checklist you can't improve. The signals you need are already sitting in your Git history. You don't need everyone to tick boxes honestly; you can watch the outcomes the checklist is supposed to change.
Three signals tell you most of the story. Watch review coverage, the share of PRs that get a genuine independent review rather than a self-merge or a one-second approval, and expect it to climb. Watch PR size, since a working checklist pulls the average change size down toward that reviewable range. And watch review turnaround and PR cycle time, which should fall as fewer PRs bounce back for missing tests or unclear descriptions. If those three move in the right direction, the checklist is doing its job. If review coverage is flat, the checklist exists on paper but not in practice.
This is where analytics earn their place. CodePulse tracks review coverage, PR size, and cycle time automatically from your GitHub data, so you can see whether a new checklist actually changed behaviour instead of guessing in a retro. Pair the checklist with a review SLA and you have both the "what to check" and the "how fast," measured in one place.
Related guides
- Code reviewer best practices - how to give feedback that gets PRs approved faster.
- How to reduce PR cycle time - fix the delays a checklist alone can't.
- Keeping pull requests small - the checklist item with the biggest payoff.
- Implementing a PR review SLA - put a clock on the checklist.
Frequently Asked Questions
A pull request checklist is a short, shared list of things to confirm before a PR is opened and before it's approved. It usually has two halves: an author self-review list (scope, tests, description, no debug code) and a reviewer list (correctness, readability, test coverage, security). The point is to make good review habits automatic instead of relying on memory.

Find out which phase is holding your delivery up
CodePulse splits your cycle time into coding, waiting for review, active review, and merge, so you fix the queue that is actually costing you days. Read-only GitHub, no credit card.
Read-only GitHub · Your code stays yours · Team-level by default · No credit card
See These Features in Action
Interactive graph of review relationships and workload distribution.
Measure review thoroughness and feedback quality across the team.
Related Guides
7 Code Review Rules That Actually Get PRs Approved Faster
Learn code review best practices backed by metrics. Covers reviewer guidelines, author guidelines, team practices, and how to measure review effectiveness.
We Cut PR Cycle Time by 47%. Here's the Exact Playbook
A practical playbook for engineering managers to identify bottlenecks, improve review processes, and ship code faster - without sacrificing review quality.
The PR SLA That Actually Worked (Without Developer Revolt)
Async doesn't mean "whenever." Learn how to set, communicate, and enforce a PR review Service Level Agreement (SLA) to unblock your team without creating bad incentives.
The 300-Line Rule: Why Big PRs Are Sabotaging Your Team
The research-backed case for smaller pull requests, how to measure PR size effectively, and practical strategies for breaking down large changes.
The Exact Number of Reviewers Per PR (Research Says 2, But...)
Research-backed guidance on how many reviewers you need per pull request, with strategies for matching review depth to risk level.
