antfu/pulls.review

A better way for review GitHub Pull Requests

TypeScript

289

151 commits

updated Oct 5, 2026

See the code

See what people are saying

README

pulls.review Open Graph image

pulls.review

[!WARNING] Heavily work in progress.

Pull request review made simple. Groups changed files, summarizes what matters, and reviews them one scope at a time.

Use on Website

To use pulls.review on the website, simply visit pulls.review and follow the instructions to connect your GitHub account and start reviewing pull requests directly in your browser.

Use in GitHub

You can optionally install userscript to enhance the GitHub interface with pulls.review features.

Go to pulls.review and scroll down to the GitHub section to install the userscript.

Analyze pull requests from CI (Experimental)

Instead of each reviewer spending their own model key, let a workflow analyze every pull request once and post the result as a PR comment. pulls.review picks the comment up automatically for everyone who opens the PR there. Re-runs on an unchanged PR skip the model call.

# .github/workflows/pulls-review.yml
name: pulls.review
on:
  # The analysis only reads the diff through the API and never checks out PR code,
  # so `pull_request_target` is safe here and lets fork PRs get a comment too.
  pull_request_target:
    types: [opened, synchronize, reopened]

permissions:
  pull-requests: write

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: antfu/pulls.review@main
        with:
          api-key: ${{ secrets.VERCEL_AI_GATEWAY_API_KEY }}

provider is inferred from the key you pass (gateway for a Vercel AI Gateway token, anthropic, or openai-compatible with base-url); set it explicitly, along with model and locale, when you want to.

The action is a thin wrapper around the @pulls.review/actions CLI, which works anywhere a GitHub token and a model key are in the environment:

GITHUB_TOKEN=... ANTHROPIC_API_KEY=... npx @pulls.review/actions owner/repo#123

Every variable also has a PULLS_REVIEW_* form that takes precedence (PULLS_REVIEW_GITHUB_TOKEN, PULLS_REVIEW_PROVIDER, PULLS_REVIEW_API_KEY, PULLS_REVIEW_MODEL, PULLS_REVIEW_BASE_URL, PULLS_REVIEW_LOCALE); npx @pulls.review/actions --help lists everything.

Packages

PackageWhat it is
packages/appThe site at pulls.review and the github.com embed.
@pulls.review/coreFetching, parsing, grouping and summarizing diffs - runs in the browser and in Node.
@pulls.review/actionsThe CLI the GitHub Action runs.
pulls.reviewThe standalone CLI for reviewing local git changes. Not implemented yet - the name is reserved.

Credits

Inspired heavily by Linear's PR review guides, thanks for the inspiration.

Sponsors

Sponsors

License

MIT License

antfu/pulls.review

A better way for review GitHub Pull Requests

TypeScript

289

151 commits

updated Oct 5, 2026

See the code

See what people are saying

README

pulls.review Open Graph image

pulls.review

[!WARNING] Heavily work in progress.

Pull request review made simple. Groups changed files, summarizes what matters, and reviews them one scope at a time.

Use on Website

To use pulls.review on the website, simply visit pulls.review and follow the instructions to connect your GitHub account and start reviewing pull requests directly in your browser.

Use in GitHub

You can optionally install userscript to enhance the GitHub interface with pulls.review features.

Go to pulls.review and scroll down to the GitHub section to install the userscript.

Analyze pull requests from CI (Experimental)

Instead of each reviewer spending their own model key, let a workflow analyze every pull request once and post the result as a PR comment. pulls.review picks the comment up automatically for everyone who opens the PR there. Re-runs on an unchanged PR skip the model call.

# .github/workflows/pulls-review.yml
name: pulls.review
on:
  # The analysis only reads the diff through the API and never checks out PR code,
  # so `pull_request_target` is safe here and lets fork PRs get a comment too.
  pull_request_target:
    types: [opened, synchronize, reopened]

permissions:
  pull-requests: write

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: antfu/pulls.review@main
        with:
          api-key: ${{ secrets.VERCEL_AI_GATEWAY_API_KEY }}

provider is inferred from the key you pass (gateway for a Vercel AI Gateway token, anthropic, or openai-compatible with base-url); set it explicitly, along with model and locale, when you want to.

The action is a thin wrapper around the @pulls.review/actions CLI, which works anywhere a GitHub token and a model key are in the environment:

GITHUB_TOKEN=... ANTHROPIC_API_KEY=... npx @pulls.review/actions owner/repo#123

Every variable also has a PULLS_REVIEW_* form that takes precedence (PULLS_REVIEW_GITHUB_TOKEN, PULLS_REVIEW_PROVIDER, PULLS_REVIEW_API_KEY, PULLS_REVIEW_MODEL, PULLS_REVIEW_BASE_URL, PULLS_REVIEW_LOCALE); npx @pulls.review/actions --help lists everything.

Packages

PackageWhat it is
packages/appThe site at pulls.review and the github.com embed.
@pulls.review/coreFetching, parsing, grouping and summarizing diffs - runs in the browser and in Node.
@pulls.review/actionsThe CLI the GitHub Action runs.
pulls.reviewThe standalone CLI for reviewing local git changes. Not implemented yet - the name is reserved.

Credits

Inspired heavily by Linear's PR review guides, thanks for the inspiration.

Sponsors

Sponsors

License

MIT License