| name | bprr |
| description | Bulk PR reviewer for awesome-quant. Use when the user asks to review all open PRs, review unreviewed PRs, bulk review, or mentions "bprr". Reviews open PRs lacking the reviewed label and presents a summary before any merge/comment/label action. |
BPRR: Bulk PR Reviewer
Review multiple open pull requests for README entry contributions.
Hard Rules
- Use GitHub MCP tools for PR operations. Do not use
gh for PR review, comments, labels, closing, or merging.
- Filter out PRs with the
reviewed label unless the user asks to re-review them.
- Do not comment, label, close, or merge until the user explicitly approves each action.
- Do not auto-merge all approved PRs unless the user explicitly selects that option.
- If GitHub MCP tools are unavailable, report the blocker and point to
docs/codex-setup.md.
Workflow
- List open PRs sorted oldest first.
- Filter to unreviewed PRs by default.
- Fetch the default-branch
README.md once for duplicate checks.
- For each PR, fetch details, current head SHA, labels, files, body, diff, and the latest
Validate PR workflow/check attempt for that SHA.
- Review only added
README.md entries unless the PR changes other files; flag other file changes as unusual.
- Apply the CI evidence rules below, then perform the remaining
$sprr checks. Use scripts/validate_readme.py --diff-from <base-ref> only when current-head CI does not establish mechanical validity and the PR branch is available locally; otherwise apply the validator's rules manually from the MCP diff.
CI Evidence Rules
Evaluate each PR independently. Use only the latest attempt for the current head SHA; a newer
queued or pending attempt supersedes an older success for that SHA. A result for one PR or
commit never applies to another.
| Current-head result | Review behavior |
|---|
success | Accept parser format, tag syntax, separators, the required final period, HTTPS, GitHub-link syntax, recognized section, and base-README duplicate checks as passed. Do not repeat those mechanical checks. |
failure | Inspect the failing job or step. Use NEEDS CHANGES when validation failed; if another step failed or details are unavailable, reproduce mechanical validation before deciding. |
| queued, pending, awaiting approval | Mark the review incomplete and do not return APPROVE. |
| skipped, cancelled, missing | Treat mechanical validation as unverified and reproduce it before deciding. |
| success only on an older SHA | Report STALE, ignore it, and reproduce mechanical validation for the current head SHA. |
For every PR, still inspect the diff and manually review tag meaning and concision, description
quality, relevance, semantic section suitability, commercial classification, repository
activity/archive/documentation/community evidence, duplicates in open PRs and PRs closed
within the last 365 days, and multi-project relatedness. CI cannot establish commercial free-tier
eligibility or transparency, URL tracking, repository substance, or any other manual criterion.
Validation Checklist
For each added entry, check:
- Parser regex match.
- Required backtick tags for new non-commercial entries. Treat them as a compact tag cloud:
accept concise languages, runtimes, protocols, interfaces, data types, and domain terms.
- Separate concepts must use adjacent tags, such as
`Python` `C++` `MCP`; do not require
every tag to be a programming language.
- Description period before optional
[GitHub](...).
https:// URLs.
- Exact optional
[GitHub](https://github.com/owner/repo) format.
- Correct category section.
- Distinguish repositories containing substantive implementation from thin SDK, integration,
examples, generated-data, or marketing repositories.
- Hosted proprietary products without substantive public source belong under
Commercial & Proprietary Services, even when a thin repository exists.
- For repository-less commercial entries, verify a useful permanent free tier for quantitative
finance that requires no payment information and is not a trial, demo, or waitlist.
- Treat a commercial service with only a thin SDK, integration, examples, generated-data, or
marketing repository as repository-less for every eligibility check.
- Verify that these commercial entries publish pricing and free-tier limits plus public
documentation, methodology, or usage examples; use a stable HTTPS URL without affiliate or
tracking parameters; and have a concise, factual, non-promotional description.
- Duplicate project names or URLs.
- Treat any verifiable GitHub repository mentioned as the main URL or exact
[GitHub](...)
suffix as a strong positive relevance signal.
- For GitHub repos, check source availability, activity, archived status, documentation, and
community evidence. GitHub relevance does not waive duplicate, format, or quality checks.
- Clear rationale for multiple related projects in one PR.
Apply verdict rules independently to every PR:
- Commercial submissions without a qualifying permanent free tier—including paid-only,
trial-only, demo-only, and waitlist-only offerings—are
REJECT.
- Reserve
NEEDS CHANGES for correctable evidence or disclosure, wording, URL, documentation, or
placement defects when the underlying offering can qualify.
Summary Output
Present a table:
| PR | Title | Author | Head | Validate PR | Entries | Format/URL | Section | Duplicate | Verdict |
|----|-------|--------|------|-------------|---------|------------|---------|-----------|---------|
Use the entry count in Entries. Use PASS, FAIL, PENDING, UNVERIFIED, or
STALE in Validate PR. Use CI PASS, CI FAIL, REPRODUCED PASS,
REPRODUCED FAIL, or INCOMPLETE in Format/URL. Section remains a manual
semantic judgment. In Duplicate, report both README PASS|FAIL and
PR SEARCH PASS|FAIL.
After the table, list any PRs that need detailed notes, including the failing workflow step or the
reason CI evidence was not accepted. When repository-less commercial eligibility affects a
verdict, explain the free-tier and transparency evidence in those detailed notes.
Ask what to do next. Accept selections like:
merge 123, 124
comment 125
close 126
all approved
none
Confirm each merge before executing it.