Before you spend an evening fixing an open-source issue, check whether
someone already beat you to it. contrib-screen answers three questions
about a GitHub issue in a few seconds:
- Does an open, merged, or closed PR already reference it?
- Is it assigned to someone?
- Does the repo require a CLA you haven't signed?
Every check it runs is written to a local, append-only audit log, so the answer isn't "trust me" — it's a record of exactly what was checked and what was found.
No account, no config file, no dependency on any particular AI tool or vendor. It's a plain CLI that talks to the GitHub API.
pip install .(from a checkout of this repo — not yet published to PyPI)
You need a GitHub token with public repo read access. If you already use
the gh CLI and are logged in, contrib-screen picks that up automatically.
Otherwise:
export GITHUB_TOKEN=ghp_...Then:
contrib-screen screen facebook/react#12345facebook/react#12345: CLEAR - no blocker found
logged to /home/you/.contrib-screen/log.jsonl
If you've already signed a specific org's CLA, tell it so that doesn't block you every time:
contrib-screen screen microsoft/vscode#999 --signed-org microsoftFor scripting, --json prints a single machine-readable record and the
exit code is 0 for CLEAR, 1 for anything that needs a second look.
Two more subcommands, for going from "an org" to "a specific issue" in the first place, rather than checking an issue you already have:
contrib-screen index microsoft # pulls issues, PRs, and comments
# for every public repo in the org
# into a local searchable index
contrib-screen search microsoft "flaky test" # full-text search across
# an already-indexed orgindex accepts --repos react,vscode to scope to specific repos instead
of the whole org, and --db to override where the index database lives.
search takes --limit and --json for scripting. Neither replaces
screen — index and search help you find a candidate issue; screen is
still the check to run on it before you start work.
It doesn't read the issue for you, judge whether the fix is any good, or write the patch. It's the five-second check that should happen before any of that — by a human or an agent — not a replacement for either.
A "duplicate PR" hit comes from GitHub's cross-reference timeline, which also picks up PRs in other repositories that merely mention the issue (a changelog entry, a related bug report elsewhere). Treat a DUPLICATE verdict as "go look," not as an automatic skip — the audit log records the exact URL it found so that's a fast check.
MIT