Review and validate pull requests that add new library entries to the awesome-quant README.md. Use this skill whenever the user asks to review PRs, check contributions, validate submissions, triage pull requests, or mentions anything about incoming entries or additions to the curated list. Also triggers for "review pr", "check prs", "merge contributions", or any PR-related workflow in this repo.
Review one open pull request at a time for the awesome-quant curated list. Always start with the oldest unreviewed open PR.
IMPORTANT: Always use GitHub MCP tools for all GitHub operations. Do not fall back to bash commands like gh or other tools — use the GitHub MCP interface exclusively.
Use the mcp__github__list_pull_requests tool to list open pull requests sorted by creation date (ascending). Pick the oldest one. Show the user which PR you're reviewing (number, title, author, creation date).
Use the mcp__github__pull_request_read tool with method get to read the PR details. If the PR has merge conflicts, report this to the user and stop — the contributor needs to resolve conflicts before review can proceed. Use the mcp__github__add_issue_comment tool to leave a polite comment asking them to rebase.
Use the mcp__github__pull_request_read tool with method get_diff to read the PR diff. Focus only on changes to README.md. If the PR modifies files other than README.md (like parse.py, site/, etc.), flag this as unusual — most contributions should only touch README.md.
Reject the PR immediately (close with a polite comment) if any of these apply:
README.md.For every new line added to README.md, check the following:
Each entry MUST include one or more language tags and match one of these accepted formats:
Single language:
- [Project Name](https://github.com/owner/repo) - `Python` - Short description ending with a period.
Multiple languages:
- [Project Name](https://github.com/owner/repo) - `Python` `Rust` - Short description ending with a period.
Project with website and GitHub repo:
- [Project Name](https://project-site.com) - `Python` - Short description ending with a period. [GitHub](https://github.com/owner/repo)
CRAN project (with optional GitHub link):
- [Package Name](https://cran.r-project.org/package=pkgname) - `R` - Short description ending with a period.
- [Package Name](https://cran.r-project.org/package=pkgname) - `R` - Short description ending with a period. [GitHub](https://github.com/owner/repo)
PyPI project (with optional GitHub link):
- [package-name](https://pypi.org/project/package-name/) - `Python` - Short description ending with a period.
- [package-name](https://pypi.org/project/package-name/) - `Python` - Short description ending with a period. [GitHub](https://github.com/owner/repo)
The core regex used by parse.py to extract entries is: ^\s*- \[(.*)\]\((.*)\) - (.*)$
Specifically check:
- (dash + space)[Name](URL)- (space, dash, space)`Python`, `Python` `Rust`) followed by -.[GitHub](url) link[GitHub] link, if present, must use the exact format [GitHub](https://github.com/owner/repo)If the entry doesn't match, report exactly what's wrong (missing language tags, missing period, wrong separator, etc.).
github.com, that's ideal.cran.r-project.org) are acceptable for R packages.pypi.org) are acceptable for Python packages.[GitHub] link: If the primary URL is a project website but includes a [GitHub](url) link in the description, that's the preferred format for non-GitHub projects.[GitHub] link: Flag with a suggestion to add a [GitHub](url) link if one exists, since GitHub repos enable automated tracking of stars and activity.https://.The README is now organized by category (not by language). Look at which ## (category) heading the entry was added under. Evaluate whether the project fits that section:
## Trading & Backtesting, not under ## Technical Indicators)## Commercial & Proprietary Services.The current category sections in the README are:
If the project doesn't fit any existing section, suggest the closest match or recommend creating a new category section (rare).
Use the mcp__github__get_file_contents tool to fetch the current README.md from the repository, then search through it to ensure the project name and URL are not already listed.
Present a clear summary:
PR #<number>: <title>
Author: <author>
Created: <date>
Entries reviewed: <count>
<For each entry>
- [Name](URL) - Description
Format: OK / ISSUE: <details>
URL: GitHub / CRAN / PyPI / WARNING: <details>
Section: OK (<section>) / SUGGESTION: Move to <section>
Duplicate: No / YES: Already listed at line <N>
Quality: OK / WARNING: <details>
</For each entry>
Conflicts: None / YES: Needs rebase
Verdict: APPROVE / NEEDS CHANGES / REJECT
Use GitHub MCP tools exclusively for all PR interactions:
mcp__github__merge_pull_request tool to merge the PR.mcp__github__add_issue_comment tool to leave a constructive review comment on the PR listing what needs to be fixed. Be polite and specific — these are open-source contributors. Link to CONTRIBUTING.md for reference.mcp__github__update_pull_request tool to close the PR with a polite explanation and link to CONTRIBUTING.md. Then leave a comment using mcp__github__add_issue_comment explaining the closure reason.When leaving comments, be friendly and grateful for the contribution. Example tone:
Thanks for the contribution! A couple of things to address before we can merge:
- The description should end with a period.
- Consider adding a
[GitHub](url)link so we can track activity.Please see our contributing guidelines for the accepted entry formats.
For multiple-project PRs: If entries have mixed results (some pass, some need fixes), list all issues together and ask the contributor to fix all at once rather than cherry-picking individual entries. If the relationship between projects isn't clear from the description, ask for clarification of why they should be grouped.