{"id":50575934,"url":"https://github.com/venables/review-prs","last_synced_at":"2026-06-04T22:01:42.665Z","repository":{"id":360538562,"uuid":"1248421174","full_name":"venables/review-prs","owner":"venables","description":"CLI for reviewing PRs","archived":false,"fork":false,"pushed_at":"2026-05-26T20:12:52.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T22:06:16.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/venables.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-24T16:10:31.000Z","updated_at":"2026-05-26T20:04:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/venables/review-prs","commit_stats":null,"previous_names":["venables/review-prs"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/venables/review-prs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/venables%2Freview-prs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/venables%2Freview-prs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/venables%2Freview-prs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/venables%2Freview-prs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/venables","download_url":"https://codeload.github.com/venables/review-prs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/venables%2Freview-prs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33921352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-04T22:01:41.926Z","updated_at":"2026-06-04T22:01:42.656Z","avatar_url":"https://github.com/venables.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# review-prs\n\nPick open GitHub PRs from a multi-select list and fan each one out into its own\nterminal tab running a review command per PR. Built for batch-reviewing a repo's\nopen pull requests without manually opening tabs and typing commands.\n\nPairs nicely with the [`panel-review`](https://github.com/catena-labs/dev-skills)\nskill, which is the default review command each tab runs.\n\n## What it does\n\n1. Lists the current repo's open, non-draft PRs (via the GitHub GraphQL API).\n2. Annotates each with an engagement badge, a review-state flag, and a relative\n   \"last activity\" time, then sorts the most actionable ones to the top.\n3. Lets you multi-select with [gum](https://github.com/charmbracelet/gum).\n4. Opens a new terminal tab per selection, `cd`s to the repo root, and runs the\n   review command (see [Review command](#review-command)) for each PR.\n\n## Requirements\n\n- [`gh`](https://cli.github.com) — authenticated (`gh auth login`)\n- [`gum`](https://github.com/charmbracelet/gum) — the interactive picker\n- [`jq`](https://jqlang.github.io/jq/) — JSON processing\n- A supported terminal for spawning tabs:\n  - [cmux](https://cmux.io) (preferred; detected via `CMUX_SURFACE_ID`), or\n  - [Ghostty](https://ghostty.org) 1.3+ on macOS (detected via `TERM_PROGRAM`,\n    drives new tabs through AppleScript — needs Accessibility permission)\n\n## Install\n\n### Homebrew\n\n```sh\nbrew install venables/tap/review-prs\n```\n\n### Manual\n\n```sh\ngit clone git@github.com:venables/review-prs.git\nln -s \"$PWD/review-prs/review-prs\" /usr/local/bin/review-prs\n```\n\n## Usage\n\nRun from inside any GitHub repo:\n\n```sh\nreview-prs              # open, non-draft, unapproved PRs (excludes yours + bots)\nreview-prs --all        # also include PRs already marked APPROVED\nreview-prs --dependabot # also include Dependabot PRs (shown dimmed)\nreview-prs --help       # usage\n```\n\nIn the picker: `space` toggles a PR, `enter` confirms. Each selected PR opens in\na fresh tab.\n\n## Review command\n\nEach spawned tab `cd`s to the repo root and runs a review command for the PR.\nBy default that is a non-interactive [Claude Code](https://claude.com/claude-code)\npanel review:\n\n```sh\nclaude --dangerously-skip-permissions \"panel review \u003cnumber\u003e\"\n```\n\nOverride it with the `REVIEW_PRS_CMD` environment variable. The PR number is\nsubstituted for the first `{}` placeholder, or appended if there is no\nplaceholder:\n\n```sh\n# Append form — runs `review 123` in each tab (e.g. a shell function/alias):\nREVIEW_PRS_CMD='review' review-prs\n\n# Placeholder form — substitute the number anywhere in the command:\nREVIEW_PRS_CMD='gh pr checkout {} \u0026\u0026 my-reviewer' review-prs\n```\n\nNote that `REVIEW_PRS_CMD` must be on the spawned tab's `PATH` (or be a shell\nfunction/alias defined in its startup files) — the command runs in a fresh\nshell, not the one you launched `review-prs` from.\n\nYour own PRs are always excluded — this tool is for reviewing others' work.\nDependabot PRs are hidden by default; pass `--dependabot` to include them, where\nthey appear dimmed to mark them as lower-priority. (The bot match is a single\nanchored regex in the script — extend it as more AI coding bots show up.)\n\n## Columns\n\n```\n#NUM   ENGAGEMENT   REVIEW      TIME       AUTHOR   TITLE\n```\n\n### Engagement\n\nHow the PR stands relative to your own comments and reviews:\n\n| Badge     | Meaning                                                       |\n| --------- | ------------------------------------------------------------- |\n| `NEW`     | You have not commented or reviewed this PR.                   |\n| `UPDATED` | New comments, reviews, or commits since your last engagement. |\n| `SEEN`    | You engaged and nothing has changed since.                    |\n\n### Review\n\nThe PR's overall review decision:\n\n| Flag       | Meaning                                                       |\n| ---------- | ------------------------------------------------------------- |\n| `CHANGES`  | Reviewers requested changes (`CHANGES_REQUESTED`).            |\n| `APPROVED` | Already approved. Hidden by default; shown only with `--all`. |\n| `-`        | No decision yet.                                              |\n\nPRs are sorted `NEW` first, then `UPDATED`, then `SEEN`, with most recent\nactivity breaking ties.\n\n## Notes\n\n- The GraphQL query inspects up to the 100 most recent comments, reviews, and\n  commits per PR — ample for typical PRs, and always inclusive of the latest\n  activity that drives the engagement badge.\n- Tabs are spawned serially; Ghostty gets a small delay between tabs to avoid\n  racing the new-tab keystroke.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvenables%2Freview-prs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvenables%2Freview-prs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvenables%2Freview-prs/lists"}