Files
awesome-quant/.claude/skills/review-pr/SKILL.md
T
Wilson Freitas 5a6f90cc85 Replace Quarto site with static HTML generator
- Add site/generate.py: static site with search, filtering, sorting, dark mode
- Add site/static/style.css and main.js for the new frontend
- Extend parse.py: fetch CRAN published dates, PyPI release dates, and
  discover GitHub repos from CRAN pages as fallback data sources
- Migrate from Poetry to uv (pyproject.toml + uv.lock)
- Update CI workflow to use uv and generate.py pipeline
- Add CONTRIBUTING.md with entry format guidelines
- Add "Submit a Project" button to site nav
- Update review-pr skill with all accepted entry formats
- Update CLAUDE.md to reflect new architecture
- Remove Quarto files (_quarto.yml, *.qmd, sync-site skill, poetry.lock)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:13:55 -03:00

7.1 KiB

name, description
name description
review-pr 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 PR Skill

Review one open pull request at a time for the awesome-quant curated list. Always start with the oldest unreviewed open PR.

Workflow

Step 1: Find the oldest open PR

Use the GitHub MCP tools 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).

Step 2: Check for merge conflicts

Use the GitHub MCP tools 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. Leave a polite comment asking them to rebase.

Step 3: Fetch the diff and extract added lines

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.

Step 4: Automatic rejection checks

Reject the PR immediately (close with a polite comment) if any of these apply:

  • Multiple projects in one PR — each PR should add exactly one project.
  • Empty PR description — the contributor must explain what they're adding.
  • Duplicate — the project name or URL is already in README.md or in a recently closed PR.
  • Archived or abandoned — the project has no activity in 12+ months.

Step 5: Validate each added entry

For every new line added to README.md, check the following:

5a. Entry format

Each entry MUST match one of these accepted formats:

GitHub project:

- [Project Name](https://github.com/owner/repo) - Short description ending with a period.

Project with website and GitHub repo:

- [Project Name](https://project-site.com) - 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) - Short description ending with a period.
- [Package Name](https://cran.r-project.org/package=pkgname) - 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/) - Short description ending with a period.
- [package-name](https://pypi.org/project/package-name/) - 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:

  • Starts with - (dash + space)
  • Followed by a markdown link [Name](URL)
  • Followed by - (space, dash, space)
  • Followed by a description that ends with a period .
  • The period must come before the optional [GitHub](url) link
  • The [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 period, wrong separator, etc.).

5b. URL validation

  • GitHub URLs are preferred. If the primary URL points to github.com, that's ideal.
  • CRAN URLs (cran.r-project.org) are acceptable for R packages.
  • PyPI URLs (pypi.org) are acceptable for Python packages.
  • Non-GitHub URLs with [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.
  • Non-GitHub URLs without [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.
  • All URLs must use https://.

5c. Section placement

Look at which ## (language) and ### (category) heading the entry was added under. Evaluate whether the project fits that section:

  • Does the project's language match the section? (e.g., a Python library should be under ## Python)
  • Does the project's purpose match the category? (e.g., a backtesting framework should be under ### Trading & Backtesting, not ### Indicators)
  • Commercial/proprietary projects must go under ## Commercial & Proprietary Services.
  • If the placement seems wrong, suggest a better section.

The current sections in the README are:

Python: Numerical Libraries & Data Structures, Financial Instruments and Pricing, Indicators, Trading & Backtesting, Risk Analysis, Factor Analysis, Sentiment Analysis, Quant Research Environment, Time Series, Calendars, Data Sources, Excel Integration, Visualization

R: Numerical Libraries & Data Structures, Data Sources, Financial Instruments and Pricing, Trading, Backtesting, Risk Analysis, Factor Analysis, Time Series, Calendars

Other languages: Matlab, Julia, Java, JavaScript, Haskell, Scala, Ruby, Elixir/Erlang, Golang, CPP, CSharp, Rust

Cross-language: Frameworks, Reproducing Works Training & Books

Commercial & Proprietary Services

If the project doesn't fit any existing section, suggest the closest match or recommend creating a new subsection (rare).

5d. Duplicate check

Grep the current README.md for the project name and URL to ensure it's not already listed.

5e. Quality check

  • Active: Project should show recent activity (commits within the last 12 months).
  • Documented: Project should have a clear README with usage examples.

Step 6: Summarize findings

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

Step 7: Take action

  • If everything passes: Ask the user for confirmation, then approve and merge the PR.
  • If there are fixable issues: 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.
  • If it should be rejected (automatic rejection criteria): Close the PR with a polite explanation and link to CONTRIBUTING.md.

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.