An interactive CLI that reviews your GitHub pull requests with Claude Code as the LLM backend — no API key needed, it rides your existing Claude Code subscription.
Disclaimer: This is fully vibe-coded
- Builds a lightweight knowledge base of a repo (architecture, conventions, past PR lessons)
- Picks an open PR and reviews its diff, aware of the existing comment thread
- Walks you through each proposed comment — accept, reject, or edit — before posting anything
- Never touches code: read-only on contents, comment/issue-only on GitHub
No need to clone this repo — uv can run PRaline straight from GitHub:
# 1. cd into the repo you want to review
cd ~/src/some-code-repo
# 2. set your GitHub token (see Requirements below for scopes)
export GITHUB_TOKEN=github_pat_...
# 3. start reviewing PRs of the current repo
uvx --from git+https://github.com/ameroyer/PRaline pralineAdd --model opus (default: sonnet) or --dir /path/to/repo to review a repo other than the current directory.
Note: this works as-is once the repo is public. While it is private, authenticate the clone with your token instead:
uvx --from git+https://${GITHUB_TOKEN}@github.com/ameroyer/PRaline praline
- Python >= 3.12
claudeCLI installed and logged in- A GitHub personal access token stored in
GITHUB_TOKENorGH_TOKEN, scoped to:- Contents: read-only
- Pull requests: read/write
- Issues: read/write
uv run --project /path/to/praline praline --dir ~/src/some-code-repo --model opusThen follow the CLI menu: build the knowledge base (can be pushed as a Claude Artifact later) or pick a PR to review comment by comment.
praline auto reviews PRs unattended: no approval loop, every proposed comment is posted straight away.
uvx --from git+https://github.com/ameroyer/PRaline praline auto
uvx --from git+https://github.com/ameroyer/PRaline praline auto 123 456- Scans open PRs, skipping drafts, and only reviews ones with new activity (a new commit, comment, or review) since you last auto-reviewed them.
- PR numbers passed as arguments are always reviewed, draft or not, activity or not.
- Before reviewing, it prints the total changed-file count across all selected PRs. Past
--max-changed-files(default 500) it asks for a one-time confirmation; everything else runs unattended. - Ends with a per-PR summary: files changed, comments added, replies left, threads resolved.
Last-reviewed timestamps are stored per PR in .praline/auto_state.json inside the target repo.
