Design Your Code Review Workflow

Manage pull requests with Process-as-Code.

Organize with groups

Break down your review process by areas of responsiblity, concern, seniority, or compliance needs. Anything you need.

groups:
  backend: ...
  frontend: ...
  database: ...
  junior-devs: ...
  typescript: ...
  security: ...
  sox-admins: ...

Assign with accuracy

Use powerful expressions to write your rules and policies. PullApprove abstracts the APIs for you — no need wrangle HTTP calls, authorization, caching, rate limits, or data formats.

groups:
  ops:
    conditions:
    - "'*.go' in files or 'server/*' in files"
    reviewers:
      teams: [ops]

  security:
    conditions:
    - "'auth' in labels or contains_fnmatch(files.lines_added, '*mark_safe*')"
    reviewers:
      users: [davegaeddert]

Set precise requirements

Give extra attention to high-risk areas and business priorities. Your review requirements can vary with the type and complexity of the changes.

groups:
  shared-libraries:
    reviews:
      request: 3
      required: 2

  docs:
    reviews:
      required: 1
      author_value: 1

Review starts when work is ready

Protect reviewer time and attention by enforcing prerequisites for review — review requests will go out once the pull request is ready.

pullapprove_conditions:

- condition: "base.ref == 'master'"
  unmet_status: success
  explanation: "Review not required unless merging to master"

- condition: "'WIP' not in title"
  unmet_status: pending
  explanation: "Work in progress"

- condition: "'*ci*' in statuses.successful"
  unmet_status: failure
  explanation: "Tests must pass before review starts"

groups: ...

Implement a hierarchy

Design a process where owners and management can step in if needed, or once other parts of technical review are finished.

groups:

  code: ...

  management:
    conditions:
    - "'code' in groups.passing"
    reviews:
      required: 1

Auditable escape-hatches

Handle emergencies, hotfixes, and rare situations with a workflow that suits your organization.

pullapprove_conditions:
- condition: "'hotfix' not in labels"
  unmet_status: success
  explanation: "PullApprove skipped because of hotfix label"

groups:
  ...

Automate communication

Instruct authors and reviewers with automated pull request comments. Remove some burden from maintainers and owners by automating the communication basics.

notifications:
- when: pull_request.opened
  if: "author_association == 'FIRST_TIME_CONTRIBUTOR'"
  comment: |
    Hey @{{ author }}, thanks for the PR! The review will
    start once the tests and CI checks have passed.
    If they don't, please review the logs and try to fix
    the issues (ask for help if you can't figure it out).
    A reviewer will be assigned once the tests are passing
    and they'll walk you through getting the PR finished
    and merged.

groups:
  ...

Review using the native tools

Contributors and reviewers don't need to learn anything new — review happens using the same tools they use every day. Your process is stored directly in the git repo as .pullapprove.yml, with built-in change protection and history.

Read the Docs → Start a Free Trial →