No description
  • TypeScript 69.3%
  • Vue 24%
  • CSS 3.7%
  • Nix 1.9%
  • HTML 0.7%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Haze Booth d27ce9c188
Some checks failed
CI / lint (push) Has been cancelled
CI / typecheck (push) Has been cancelled
fix(app): read the commit list's avatars from the diff's host
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.
2026-10-19 09:53:06 -04:00
.agents feat: browse a diff commit by commit (#94) 2026-10-19 09:50:16 -04:00
.github fix: build standalone CLI before publishing (#59) 2026-10-05 22:12:27 +09:00
.vscode feat: localize the UI and the AI analysis into 12 languages (#25) 2026-09-30 14:43:52 +09:00
nix build: add a flake: dev shell, nix run, and a NixOS module 2026-10-07 22:37:26 -04:00
packages fix(app): read the commit list's avatars from the diff's host 2026-10-19 09:53:06 -04:00
plans feat(cli): support codex as a local agent (#91) 2026-10-19 09:49:49 -04:00
.claude chore: update deps 2026-09-30 17:42:12 +09:00
.env.example feat(app): open GitHub Enterprise hosts without a build flag 2026-10-07 17:33:06 -04:00
.gitignore docs: add an upstream sync skill 2026-10-08 11:03:07 -04:00
action.yml fix: restore core runtime dependencies so its dist loads (#53) 2026-10-05 15:06:36 +09:00
AGENTS.md fix(app): load full file so hunks starting mid-construct highlight correctly (#73) 2026-10-19 09:49:49 -04:00
CLAUDE.md chore: init 2026-09-16 08:50:51 +09:00
eslint.config.js feat(app): add GitHub Actions and CLI cards with setup guides to the landing page (#57) 2026-10-05 16:53:21 +09:00
favicon.svg chore: update og image 2026-10-05 11:14:48 +09:00
flake.lock build: add a flake: dev shell, nix run, and a NixOS module 2026-10-07 22:37:26 -04:00
flake.nix build: add a flake: dev shell, nix run, and a NixOS module 2026-10-07 22:37:26 -04:00
LICENSE chore: init 2026-09-16 08:50:51 +09:00
package.json chore: release v0.3.3 2026-10-19 09:50:16 -04:00
pnpm-lock.yaml feat(app): render mermaid diagrams in PR descriptions (#99) 2026-10-19 09:50:16 -04:00
pnpm-workspace.yaml feat(app): render mermaid diagrams in PR descriptions (#99) 2026-10-19 09:50:16 -04:00
README.md build: add a flake: dev shell, nix run, and a NixOS module 2026-10-07 22:37:26 -04:00
skills-lock.json chore: update deps 2026-09-30 17:42:12 +09:00
skills-npm-lock.json feat(cli): serve local git reviews through devframe (#54) 2026-10-05 15:55:59 +09:00
skills-npm.config.ts feat: pulls-review CLI and GitHub Action, on an extracted @pulls.review/core (#29) 2026-10-01 16:16:52 +09:00
vercel.json feat: pulls-review CLI and GitHub Action, on an extracted @pulls.review/core (#29) 2026-10-01 16:16:52 +09:00
vitest.config.ts feat: pulls-review CLI and GitHub Action, on an extracted @pulls.review/core (#29) 2026-10-01 16:16:52 +09:00

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

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

Sponsors

License

MIT License