- TypeScript 69.3%
- Vue 24%
- CSS 3.7%
- Nix 1.9%
- HTML 0.7%
- Other 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The diff header and the commit selector upstream just added fall back to github.com's avatar endpoint for any login, so on a GitHub Enterprise host a commit author showed whichever image github.com keeps under that name. Thread the diff's host down to `GithubAvatar`, the way the pulls list already does. |
||
| .agents | ||
| .github | ||
| .vscode | ||
| nix | ||
| packages | ||
| plans | ||
| .claude | ||
| .env.example | ||
| .gitignore | ||
| action.yml | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| eslint.config.js | ||
| favicon.svg | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| skills-lock.json | ||
| skills-npm-lock.json | ||
| skills-npm.config.ts | ||
| vercel.json | ||
| vitest.config.ts | ||
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
| Package | What it is |
|---|---|
packages/app |
The site at pulls.review and the github.com embed. |
@pulls.review/core |
Fetching, parsing, grouping and summarizing diffs - runs in the browser and in Node. |
@pulls.review/actions |
The CLI the GitHub Action runs. |
pulls.review |
The standalone CLI for reviewing local git changes and GitHub pull requests. |
Development with Nix
With Nix available, nix develop gives you node, pnpm and git (installing dependencies on
first use), and nix run starts the site hot-reloaded. nix run .#cli -- <target> runs the
CLI, building what it needs first; nix run .#site serves the production build.
nix build .#web produces the deployable site as a store path, and
flake.nix's nixosModules.default serves it behind nginx as services.pulls-review -
static files only, since the app talks to GitHub from the visitor's browser. See
plans/13-nix.md for what that module does and why.
Without Nix, the workspace is an ordinary pnpm monorepo: pnpm install, then pnpm dev,
pnpm test, pnpm build.
Credits
Inspired heavily by Linear's PR review guides, thanks for the inspiration.
Sponsors
License
MIT License