claimcheck
Two quiet ways open-source work dies, tracked before they cost you weeks:
- Stale claims. Someone comments "I'll take this" on an issue, then vanishes. The issue still shows "unassigned," so the next volunteer writes code that collides with a ghost.
- Parked fixes. Finished work sitting on a fork branch that never became a PR. Real commits, real diffs, zero visibility.
claimcheck scans for both. It is the follow-up to greenlight: greenlight asks "is this issue landable?", claimcheck asks "did everyone who said yes actually show up, and did their work ever ship?"
Install
Needs Node 20+. Set GITHUB_TOKEN (or GH_TOKEN) for the 5000 req/hr authenticated rate limit; without it you get 60 req/hr. Responses are cached in ~/.cache/claimcheck (override with CLAIMCHECK_CACHE_DIR, or the generic CACHE_DIR).
CLI
Find stale claims in a repo
Scans open unassigned issues, detects claim comments (explicit claims, work intentions, assignment requests; bots, maintainers, and the issue author are excluded), checks whether a linked PR ever appeared, and ranks the results with the oldest claims first:
Flags: --days 45 changes the stale threshold, --json prints machine output.
Claim age buckets
Find parked fixes on a fork
Lists branches on a fork (excluding the default branch), compares each against the upstream default branch, and checks for open PRs from that fork. A branch ahead by 1+ commits with no open PR is PARKED:
Parked age buckets (from the branch tip commit date)
Branches with an open PR show as IN_PR, branches even with upstream as EVEN. Neither is parked.
Claim status of one issue
Every claimant found in the comments, their age bucket, and whether a linked PR exists.
Run it with Docker
claimcheck also ships as a container image on GHCR: ghcr.io/cloudcorprecords/claimcheck.
Use it as a stdio MCP server:
Any CLI command can be passed after the image name instead of the default mcp argument:
MCP server
The same engines as tools, for agents that should check before they comment or code:
Or run the server directly: npx @reneturcios/claimcheck mcp (stdio).
How detection works
Claim heuristics (clean reimplementation of the patterns proven in greenlight's dogfooding):
- Strong claims: "I'd like to take this", "please assign it to me", "I'm working on this", "I've started working on this", "PR incoming", and similar.
- Soft interest: "happy to help", "interested in this", "looking into this". Recorded, never treated as a claim.
- Excluded: bot accounts, repo maintainers (their "I'll take this" is triage, not a contestable claim), and the issue author unless they announce a real PR.
A claim with any linked PR is WORK_IN_FLIGHT at any age: the claimant did the work, it just has not landed yet. Only PR-less claims age into STALE and DEAD.
Development
Engines (src/claims.ts, src/parked.ts) are pure functions over fetched data, fully testable offline against fixtures in test/fixtures/. src/github.ts holds the REST client (issues, comments, PR search, branches, compare, fork info) with file caching.
License
MIT, Rene Turcios 2026.
The toolkit
This tool is one of four in a lifecycle for open-source contribution work, all published under the @reneturcios npm scope and each available as a CLI and an MCP server (<tool> mcp):
- gatefile (
npx @reneturcios/gatefile) extracts a repo's contribution gates into a committed contribution-gates.json.
- greenlight (
npx @reneturcios/greenlight) pre-flights issues (GO / RISKY / TAKEN / GATED / STALE), consumes gatefile's output in check and scan, then claims, preps, and opens PRs.
- claimcheck (
npx @reneturcios/claimcheck) watches for stale claims and fixes parked on forks.
- prwatch (
npx @reneturcios/prwatch) triages your open PRs by what needs you right now.