{"owner":"wilsonfreitas","repo":"awesome-quant","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md","AGENTS.md"],"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\n**awesome-quant** is a curated list of quantitative finance libraries, packages, and resources. The primary content lives in `README.md` — a large markdown file **organized by category** (Numerical Libraries, Trading & Backtesting, Market Data, etc.) with inline language tags that identify which programming languages each project supports.\n\nA companion website is generated from this data and deployed to GitHub Pages.\n\n## Architecture\n\nThe pipeline works as follows:\n\n1. **`README.md`** — The source of truth. All library entries follow the format: `- [name](url) - \\`Language\\` - Description.`\n   - Entries are grouped under category headings (`##`), not language headings\n   - Language is identified via inline backtick tags (e.g., `` `Python` ``, `` `Rust` ``) in the description\n   - Multi-language projects have multiple tags (e.g., `` `Python` `Rust` ``)\n\n2. **`parse.py`** — Parses `README.md`, extracts language from backtick tags, fetches last commit dates and stars via the GitHub API (using `PyGithub` with multithreading), and writes `site/projects.csv` with a `languages` column (comma-separated).\n\n3. **`site/generate.py`** — Reads `site/projects.csv` (or parses `README.md` directly) and generates a static HTML site (`site/index.html`) with search, filtering by language/category/source, sorting, and dark mode. Front-end assets live in `site/static/` (`main.js`, `style.css`).\n\n4. **CI** (`.github/workflows/build.yml`, workflow name \"Update site\") — Runs daily (cron `0 1 * * *`) and on push to `main` touching `README.md`, `parse.py`, or `site/**`: runs `parse.py`, runs `site/generate.py`, and deploys the `site/` directory to GitHub Pages via `peaceiris/actions-gh-pages`.\n\nSupporting scripts:\n- `cranscrape.py` — Scrapes CRAN package pages to find associated GitHub repos; writes `cran.csv`.\n- `topic.py` — Searches GitHub for repos tagged with a topic (e.g., \"quant\") above a star threshold.\n- `scripts/migrate_readme.py` — One-off migration that converted `README.md` from language-first to category-first organization (kept for reference).\n\n## Commands\n\n```bash\n# Install dependencies (uses uv, requires Python 3.11+)\nuv sync --no-install-project\n\n# Run the parser (requires GITHUB_ACCESS_TOKEN env var)\nGITHUB_ACCESS_TOKEN=<token> uv run python parse.py\n\n# Generate the static site\nuv run python site/generate.py\n```\n\n## Contributing Entries\n\nSee `CONTRIBUTING.md` for full guidelines. All entries must include language tags:\n\n```\n- [Project Name](https://github.com/owner/repo) - `Python` - Description ending with a period.\n- [Project Name](https://github.com/owner/repo) - `Python` `Rust` - Multi-language project description.\n- [Project Name](https://site.com) - `Python` - Description ending with a period. [GitHub](https://github.com/owner/repo)\n- [Package Name](https://cran.r-project.org/package=pkg) - `R` - Description ending with a period.\n- [package-name](https://pypi.org/project/pkg/) - `Python` - Description ending with a period.\n```\n\nCRAN and PyPI entries may optionally append `[GitHub](url)` after the description.\n\nEntries are grouped under category headings (`##`), not language headings. Language is identified via inline backtick tags. Commercial/proprietary projects go under `## Commercial & Proprietary Services`.\n\n`parse.py` and `site/generate.py` rely on this regex to extract entries: `^\\s*- \\[(.*)\\]\\((.*)\\) - (.*)$`\n\nThe description text (group 3) may start with language tags in the format `` `Language1` `Language2` - `` followed by the actual description.\n\n## PR Reviews\n\nThis repo receives most contributions as pull requests adding new entries. Use the **GitHub MCP tools** (e.g. `list_pull_requests`, `pull_request_read`, `merge_pull_request`, `add_issue_comment`, `update_pull_request`), **not** the `gh` CLI, for PR operations.\n\nDedicated skills drive the review workflow:\n- `sprr` — Single PR reviewer: validate one PR's entry against the format rules.\n- `bprr` — Bulk PR reviewer: review all open PRs lacking the \"reviewed\" label, then present a summary for selection before merging.\n- `update-pypi-dates` — Refresh last-updated dates for PyPI entries in `README.md`.\n\nReview checklist: always ask before merging; verify section placement (commercial entries belong under \"Commercial & Proprietary Services\", not Market Data); check for duplicates in `README.md`; apply the \"reviewed\" label after commenting.\n\nSee `AGENTS.md` for the agent-facing command and tool summary, and `CONTRIBUTING.md` for contributor guidelines.\n","AGENTS.md":"# AGENTS.md\n\n## Project Overview\n\n`awesome-quant` is a curated list of quantitative finance libraries, packages,\nand resources. The source of truth is `README.md`; the static website is\ngenerated into `site/index.html`.\n\nThe README is organized by category headings (`##`), not by language headings.\nProject metadata is stored in inline backtick tags inside each entry. Tags commonly identify\nlanguages, but may also identify runtimes, protocols, interfaces, data types, or domains.\n\n## Architecture\n\n1. `README.md` contains curated entries.\n2. `parse.py` parses `README.md`, enriches GitHub/CRAN/PyPI metadata, and writes\n   `site/projects.csv`.\n3. `site/generate.py` reads `site/projects.csv` when present, otherwise parses\n   `README.md` directly for local previews, then writes `site/index.html`.\n4. `.github/workflows/build.yml` runs the parser and generator, then deploys\n   `site/` to GitHub Pages.\n\n## Commands\n\n```bash\n# Install deps (requires Python 3.11+)\nuv sync --no-install-project\n\n# Validate README entries changed in a PR\nuv run python scripts/validate_readme.py --diff-from origin/main\n\n# Validate the full README; legacy format/duplicate/URL issues are warnings by default\nuv run python scripts/validate_readme.py\n\n# Run parser (requires GitHub token)\nGITHUB_ACCESS_TOKEN=<token> uv run python parse.py\n\n# Generate static site\nuv run python site/generate.py\n```\n\n## Entry Format\n\nThe critical parser regex is:\n\n```text\n^\\s*- \\[(.*)\\]\\((.*)\\) - (.*)$\n```\n\nAccepted entry examples:\n\n```markdown\n- [Project Name](https://github.com/owner/repo) - `Python` - Description ending with a period.\n- [Project Name](https://github.com/owner/repo) - `Python` `Rust` - Description ending with a period.\n- [Project Name](https://site.com) - `Python` - Description ending with a period. [GitHub](https://github.com/owner/repo)\n- [Package Name](https://cran.r-project.org/package=pkg) - `R` - Description ending with a period.\n- [package-name](https://pypi.org/project/pkg/) - `Python` - Description ending with a period.\n```\n\nRules:\n\n- New non-commercial entries must include one or more concise backtick tags followed by ` - `.\n  Tags form a compact tag cloud and are not restricted to programming languages.\n- Each tag must use its own backtick pair, for example `` `Python` `C++` `MCP` ``.\n- Descriptions must end with a period before the optional `[GitHub](...)` link.\n- URLs in new entries must use `https://`.\n- A valid GitHub repository used as the main URL or exact `[GitHub](...)` suffix is a strong\n  positive relevance signal. Review its activity and documentation rather than treating\n  non-language tags as format errors.\n- Commercial/proprietary projects belong in `## Commercial & Proprietary Services`.\n- Backtick tags are optional only for commercial services and other metadata-free\n  sections such as `Related Lists`.\n- Use `CONTRIBUTING.md` as the user-facing source for contribution rules.\n\n## PR Review Workflow\n\nThis repo receives most contributions as pull requests adding README entries.\nUse Codex repo skills for repeatable review workflows:\n\n- `$sprr` - single PR reviewer.\n- `$bprr` - bulk PR reviewer.\n- `$update-pypi-dates` - refresh tracked PyPI last-updated dates.\n\nReview requirements:\n\n1. Only review the PRs the user asked you to review.\n2. Use GitHub MCP tools for PR operations, not the `gh` CLI.\n3. Present findings before any PR-modifying action.\n4. Always ask the user before commenting, labeling, closing, or merging.\n5. Check section placement, duplicates in `README.md`, entry format, URL format,\n   and project activity/documentation. Give substantial positive weight to a verifiable\n   GitHub repository mentioned as either the main URL or exact suffix.\n6. Use the `reviewed` label only after the user approves a review comment.\n\n## GitHub MCP Tools\n\nThis project expects Codex to have a GitHub MCP server configured for PR work.\nUseful tool capabilities include:\n\n- List open pull requests.\n- Get PR details, files, comments, labels, and diffs.\n- Fetch `README.md` from the default branch for duplicate checks.\n- Add PR comments and labels.\n- Merge pull requests after explicit user approval.\n\nSee `docs/codex-setup.md` for local Codex setup notes. If GitHub MCP tools are\nnot available in a session, report that PR operations are blocked and ask the\nuser to configure the MCP server.\n\n## Local Validation Notes\n\n- `scripts/validate_readme.py --diff-from <ref>` is intended for PR checks. It\n  validates only added README entries and treats duplicates/URL issues as errors\n  for those additions.\n- `scripts/validate_readme.py` validates the full README. Legacy format, duplicate, and\n  URL problems are reported as warnings unless strict flags are used.\n- `parse.py` requires `GITHUB_ACCESS_TOKEN`; `site/generate.py` can run without\n  the token if `site/projects.csv` already exists or if it falls back to direct\n  README parsing.\n"}}