Claimcheck

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.4Updated Oct 26, 2026

Track stale claims and parked fixes so open-source work does not silently die.

Overview

AI-generated overview

Read-only GitHub scanner that finds abandoned issue claims and finished fork branches with no pull request, so assistants can check before claiming or coding.

What you can do
  • Scan a repository's open issues for stale claims, ranked oldest first with FRESH, WATCH, STALE and DEAD age buckets
  • List parked branches on a fork that are ahead of upstream but have no open pull request, bucketed by last commit age
  • Check one GitHub issue's claim status: every claimant, their age bucket, and whether a linked PR exists
  • Report branches that are already in a PR or even with upstream so they are not mistaken for parked work
When to use it
Useful before an assistant comments on or claims an open-source issue, to see whether a previous claimant walked away. Also handy for maintainers or contributors auditing a fork for finished work that never became a pull request.
Requirements
Runs locally over stdio via npx (Node 20+) or the Docker image. Set GITHUB_TOKEN or GH_TOKEN for the higher authenticated rate limit; without it requests are limited to 60 per hour. Responses are cached in a local cache directory that can be overridden by environment variable.
Before you install
The GitHub token is a credential passed in the environment; scope it narrowly and treat it as a secret. Detection relies on comment heuristics, so buckets are estimates rather than proof that work was abandoned. The server reads repository data from GitHub, and results are cached on disk.

Installation

In SourceWeft

  1. Open Claimcheck in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

claimcheck

Two quiet ways open-source work dies, tracked before they cost you weeks:

  1. 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.
  2. 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

bash
npm install -g @reneturcios/claimcheck# ornpx @reneturcios/claimcheck claims owner/repo

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

bash
claimcheck claims modelcontextprotocol/python-sdk

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:

Stale claims in modelcontextprotocol/python-sdk: 2 stale of 5 claimed issues (threshold 45d)
[STALE] modelcontextprotocol/python-sdk#3287  Fix: handle empty result sets  https://github.com/modelcontextprotocol/python-sdk/issues/3287  claimant: helpfuldev, 63d ago (want-to-work)
[IN FLIGHT] modelcontextprotocol/python-sdk#3290  ...  claimant: shipitdev, 5d ago (explicit-claim)

Flags: --days 45 changes the stale threshold, --json prints machine output.

Claim age buckets

BucketAgeMeaning
FRESH<14 daysClaimant probably still active
WATCH14 to 44 daysCheck before duplicating work
STALE45 to 89 daysContestable, likely abandoned
DEAD90+ daysAlmost certainly abandoned
WORK_IN_FLIGHTanyA linked PR exists, the work is real

Find parked fixes on a fork

bash
claimcheck parked CloudCorpRecords/pdfcn

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 branches on CloudCorpRecords/pdfcn (upstream shadcn-labs/pdfcn): 1 parked of 4 branches
[PARKED_STALE] fix-typos  ahead by 5 commit(s), last commit 20d ago  no open PR on upstream

Parked age buckets (from the branch tip commit date)

VerdictAgeMeaning
PARKED_RECENT<7 daysProbably still being finished
PARKED_STALE7 to 30 daysLikely forgotten, easy to revive
PARKED_DEAD30+ daysMay need rebasing onto upstream

Branches with an open PR show as IN_PR, branches even with upstream as EVEN. Neither is parked.

Claim status of one issue

bash
claimcheck issue https://github.com/modelcontextprotocol/python-sdk/issues/3287

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:

bash
docker run -i ghcr.io/cloudcorprecords/claimcheck

Any CLI command can be passed after the image name instead of the default mcp argument:

bash
docker run ghcr.io/cloudcorprecords/claimcheck <command> [args]

MCP server

The same engines as tools, for agents that should check before they comment or code:

json
{  "mcpServers": {    "claimcheck": {      "command": "npx",      "args": ["-y", "claimcheck", "mcp"],      "env": { "GITHUB_TOKEN": "ghp_your_token_here" }    }  }}
ToolInputReturns
stale_claimsrepo (owner/repo), optional stale_daysRanked stale claims, oldest first
parked_branchesfork (owner/repo)Parked branches with compare data, plus all branches
issue_claim_statusurl (issue URL)Claimants, age buckets, linked PRs, summary

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

bash
npm installnpm test        # 40 offline tests, node:test via tsxnpm run build   # tsc to dist/

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):

  1. gatefile (npx @reneturcios/gatefile) extracts a repo's contribution gates into a committed contribution-gates.json.
  2. 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.
  3. claimcheck (npx @reneturcios/claimcheck) watches for stale claims and fixes parked on forks.
  4. prwatch (npx @reneturcios/prwatch) triages your open PRs by what needs you right now.

Source: README.md at commit 3dc1be0

Tools

3

stale_claims

Scan a repo's open issues for stale claims: comments where someone said they would take an issue but never opened a PR. Buckets are FRESH (<14d), WATCH (14-44d), STALE (45-89d, contestable), DEAD (90d+). Call this to find issues you can legitimately claim because the last claimant walked away.

Parametersreporequiredstale_days

parked_branches

List parked fixes on a fork: branches ahead of the upstream default branch with no open PR. Age from the last commit: PARKED_RECENT (<7d), PARKED_STALE (7-30d), PARKED_DEAD (30d+). Call this to find finished work that never shipped.

Parametersforkrequired

issue_claim_status

Claim status of one GitHub issue: every claimant found in the comments, their age bucket, and whether a linked PR exists (work in flight). Call this before commenting on or claiming an issue.

Parametersurlrequired

Version history

4
  1. v0.1.4LatestOct 26, 2026
  2. v0.1.3Oct 24, 2026
  3. v0.1.2Oct 18, 2026
  4. v0.1.1Oct 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts