critic
critic is a terminal-first GitHub pull request review client.
[!WARNING]
criticis still in early development. The UI, features, and keybindings are all subject to change. Feedback and contributions are very welcome!
Features
- Authenticate with GitHub using your existing
ghlogin (gh auth token). - Fuzzy-find open pull requests.
- Navigate review threads and issue comments in a split-pane review UI.
- Render markdown in thread previews, including lists, emphasis, inline code, and fenced code blocks.
- Review PR diffs with
difftaligned output, syntax highlighting, hunk navigation, and file tree navigation. - Leave pending inline diff comments and submit them in a review batch.
- Persist in-progress draft review comments to disk so interrupted sessions can recover.
- Open the active PR/comment directly in the browser when needed.
Installation
Dependencies
gh(GitHub CLI): used for authentication.difft(difftastic, with aligned lines): used for diff rendering.
[!WARNING]
This tool requires difftastic with
aligned_linessupport in JSON output. This feature is available inmain, though hasn't yet landed in a release.To build
difftasticfrom source:# Clone with 'jj' # Or, clone with 'git' # Install 'difft' with the 'aligned_lines' feature &&
Install From Source
If you are installing from a local checkout instead of crates.io:
Install Pre-Built Binary
With cargo-binstall:
Manual download:
- Open the latest GitHub release.
- Download the archive for your target platform.
- Extract and place the
criticbinary on yourPATH.
Screens
PR Search
Use this screen to fuzzy-filter open pull requests and choose one to review.
| Key | Action |
|---|---|
j / k / up / down |
Move selection |
enter |
Open selected pull request |
W |
Open selected pull request in browser |
s |
Focus search input |
R |
Refresh open pull request list |
q |
Quit |
When search input is focused:
| Key | Action |
|---|---|
type |
Edit query |
backspace |
Delete previous character |
enter / esc |
Unfocus search input |
PR Review
Comment Tab
Use this tab for conversational review: read threads, inspect context, reply, and resolve/unresolve review threads.
| Key | Action |
|---|---|
S-tab |
Show Diff tab |
j / k / up / down |
Move selection |
C-d / C-u |
Scroll paragraph |
o / z |
Collapse/expand selected thread group |
W |
Open selected comment in browser |
f |
Show/hide resolved threads |
t |
Resolve/unresolve selected thread |
e |
Edit staged reply |
s |
Send staged reply |
x |
Clear staged reply |
C / A / X |
Submit review (comment / approve / request changes) |
b |
Back to PR search |
R |
Refresh PR data |
q |
Quit |
Diff Review Tab
Use this tab for code-level review: browse changed files, move by hunk, create/edit/delete pending inline comments, and submit a review batch.
Screenshot placeholders:
General diff navigation:
| Key | Action |
|---|---|
S-tab |
Show Threads tab |
tab |
Toggle focus between file tree and diff pane |
j / k / up / down |
Move selection in focused pane |
n / N or ] / [ |
Next/previous hunk |
p / P |
Next/previous pending inline comment |
q |
Quit |
When diff pane is focused:
| Key | Action |
|---|---|
C-d / C-u |
Scroll paragraph |
v |
Start/stop visual range selection (restricted to valid hunk range) |
esc |
Cancel visual selection |
e |
Leave/edit pending inline comment |
x |
Delete pending inline comment (when on an existing pending range) |
C / A / X |
Submit review (comment / approve / request changes) |
b |
Back to PR search |
R |
Refresh PR data |
When file tree is focused:
| Key | Action |
|---|---|
s |
Focus file search |
o / z |
Collapse/expand directory |
When file search is focused:
| Key | Action |
|---|---|
type |
Edit file filter query |
backspace |
Delete previous character |
enter / esc |
Unfocus file search |
License
See LICENSE.md
Slop Disclaimer
The vast majority of this tool was written by Codex. It is useful in practice, but it may contain bugs, rough edges, odd code, or missing validations.
If you hit one, please open an issue with reproduction steps (or better, a patch).