OSS Contribution Finder
Find open-source contribution opportunities via the GitHub API.
Searches for issues labeled "good first issue" (or any label you choose), filtered by language, topic, star count, and activity. Outputs a ranked list ready for contribution.
Contributor Friendliness
The tool detects signals of contributor-friendly repositories (CONTRIBUTING.md, PR/issue templates, CODE_OF_CONDUCT.md) and assigns a friendliness score (0-100). Use --sort friendliness to rank by this score. The score is shown in table and markdown output, and the breakdown is included in JSON.
Install & Quick Start
# Install from git (not yet on PyPI)
pip install git+https://github.com/yunaremaia/oss-contribution-finder.git
# Find Python good-first-issues
oss-contribution-finder --language python --limit 10
Usage
# Find Python good-first-issues
oss-contribution-finder --language python --limit 10
# Find Rust CLI projects with 100+ stars
oss-contribution-finder --language rust --topic cli --min-stars 100
# Export as markdown
oss-contribution-finder --language go --format markdown >> opportunities.md
# JSON output for automation
oss-contribution-finder --language typescript --format json --limit 50
# Only show issues from repositories with a root CONTRIBUTING.md
oss-contribution-finder --language python --require-contributing
# Check rate limit status
oss-contribution-finder --check-rate-limit
Options
| Flag | Description | Default |
|---|---|---|
--version, -v |
Show program version and exit | - |
--label |
Labels to filter (repeatable) | good first issue |
--language, -l |
Programming language | - |
--topic, -t |
GitHub topic | - |
--min-stars |
Minimum star count | - |
--created-after |
Issues created after (YYYY-MM-DD) | - |
--updated-after |
Issues updated after (YYYY-MM-DD) | 30 days ago |
--sort |
Sort field (comments, reactions, updated) |
updated |
--limit, -n |
Max results | 20 |
--page |
Results page number | 1 |
--per-page |
Items per page (1-100) | min(limit, 100) |
--format, -f |
Output (table, markdown, json) |
table |
--no-enrich |
Skip repo metadata (faster) | false |
--require-contributing |
Only include repos with a root CONTRIBUTING.md |
false |
--check-rate-limit |
Show rate limit and exit | — |
--retry |
Max retry attempts on rate limits or network errors | 3 |
--no-cache |
Disable in-memory API caching (default TTL: 1 hour) | false |
--timeout |
Request timeout in seconds | 30 |
Caching
API responses are cached in memory with a default TTL of 1 hour (3600 seconds) to avoid redundant requests during repeated operations. Use --no-cache to bypass cached responses and fetch fresh data directly from GitHub.
Authentication and Proxy
Set GH_TOKEN or GITHUB_TOKEN in your environment to avoid rate limits:
export GH_TOKEN=ghp_your_token_here
Standard proxy environment variables (HTTP_PROXY, HTTPS_PROXY, NO_PROXY) are automatically respected for all outgoing requests via urllib.request.ProxyHandler. You can also configure request timeouts via the --timeout option (defaults to 30 seconds):
# Custom timeout for slow networks
oss-contribution-finder --language python --timeout 60
Without a token, searches are limited to 10 requests per minute.
Results include a contributor_friendly boolean in JSON (and a Friendly column
in the table / line in Markdown). It is true when a repository has a root
CONTRIBUTING.md, a .github/PULL_REQUEST_TEMPLATE.md file, a
.github/PULL_REQUEST_TEMPLATE/ directory, or a .github/ISSUE_TEMPLATE/
directory. Detection uses up to two additional GitHub API requests per unique
repository, even with --no-enrich or no token. --require-contributing
filters on the root file specifically, not on the broader friendly signal.
API errors emit a warning; results may then be incomplete, and the filter
excludes repositories whose root file it cannot verify.
Examples
# Find documentation contributions
oss-contribution-finder --label "good first issue" --label "documentation" --limit 15
# Find recently updated Python issues in AI/ML
oss-contribution-finder --language python --topic machine-learning --updated-after 2026-08-01
# Generate a weekly digest
oss-contribution-finder --language rust --format markdown --limit 25 > weekly-opportunities.md
Sponsoring
oss-contribution-finder is MIT licensed and free to use. If it saved you time, you can support continued maintenance via GitHub Sponsors or by sending SOL to the project treasury wallet:
Eeztv1nCYUt1fwGWpzKC948gaWfjejYCAuLtUMgzDWbW
Funding platforms are configured in .github/FUNDING.yml.
If this tool is useful to you, a star helps other people find it.
Related tools
- gfi — find well-scoped good first issues to start on
- aipr — pre-screen repos for AI contribution policy
- ghstats — generate a GitHub stats dashboard
- agent-guard — enforce guardrails on AI agent tool calls
Part of a family of focused, single-purpose developer tools — each one does one thing and does it well.
License
MIT
Metadata
Release files for oss-contribution-finder 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| oss_contribution_finder-0.2.0.tar.gz | 19.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oss_contribution_finder-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.5 kB
Release files / oss_contribution_finder-0.2.0.tar.gz
| Download URL | oss_contribution_finder-0.2.0.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f159c9ff0b40d5258848c3328a7f1899f0aa373e4783a7d7e3641d6869469b73
|
|
BLAKE2b-256 checksum How to use checksums |
3b52190ef7bc6ed2ba7751f58b2ffae3c8c1043ee9e472a5e03342183bedb20d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / oss_contribution_finder-0.2.0-py3-none-any.whl
| Download URL | oss_contribution_finder-0.2.0-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0f72ca9f57817cb64358f59588172ed520e3325e5207b0dd0d979cf1abeff07b
|
|
BLAKE2b-256 checksum How to use checksums |
5b6631285573557a82f8eeefc3fd6ca844d14ab5452b9ef00fb2ce48cb1c4a8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for oss-contribution-finder 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for oss_contribution_finder-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.