Skip to main content

taken?

taken? answers one question before you volunteer for a GitHub issue: is it already taken?

The catch it was built for: GitHub shows "linked a pull request" events in the issue timeline, but never in the comments. You can read every comment on an issue and still miss that someone already opened a PR for it. taken? checks the timeline, scans comments for people claiming the work, looks at assignees, reads CONTRIBUTING.md for AI contribution policies, and checks whether the repo is still active. Then it gives a verdict, GO, TAKEN, or CAUTION, with the evidence cited.

Requirements

  • Python 3.10 or newer
  • The GitHub CLI (gh), authenticated

taken? only makes read-only API calls through your own gh login. It never sees or stores tokens, and it never writes anything to GitHub.

Install as a tool

uv tool install taken-gh
taken owner/repo#123

Or with pipx:

pipx install taken-gh
taken owner/repo#123

Usage

uv run taken owner/repo#123

A full issue URL works too:

uv run taken https://github.com/owner/repo/issues/123

Useful flags:

  • --json: print the full findings as JSON instead of the human summary
  • --me LOGIN: ignore your own comments when scanning for claimants
  • --version, --help

Exit codes: 0 means GO, 1 means TAKEN, 2 means CAUTION, 3 means something broke (bad target, no gh, API error).

JSON output

taken --json owner/repo#123 prints an object with three keys:

  • verdict: one of GO, TAKEN, CAUTION
  • reasons: list of human-readable strings explaining the verdict
  • findings: the raw check results:
    • target: e.g. owner/repo#123
    • issue: number, state, title, labels, assignees, comment_count, author, url, created_at
    • linked_prs: list of number, title, state, merged, author, url
    • claimants: list of author, date, pattern, snippet, url
    • ai_policy: verdict (ban, disclosure-required, or none-found), snippet, source
    • repo_health: pushed_at, pushed_recently, recent_merges, stars

Examples

An issue with a PR already fixing it:

$ uv run taken Exodus-Privacy/exodus#300
taken? Exodus-Privacy/exodus#300
verdict: TAKEN
  ...
  why:
    - open PR #700 already covers this: https://github.com/Exodus-Privacy/exodus/pull/700

An issue someone is already assigned to:

$ uv run taken chahe-dridi/vscode-agent-bell#200
taken? chahe-dridi/vscode-agent-bell#200
verdict: TAKEN
  ...
  why:
    - assigned to: dk5488

A clean issue, with your own volunteering comment filtered out:

$ uv run taken snowflakedb/snowflake-cli#3145 --me RogueAlg0
taken? snowflakedb/snowflake-cli#3145
verdict: GO
  ...
  why:
    - no linked PRs, no assignees, no claimants, repo is active

How the verdict works

TAKEN wins over CAUTION, which wins over GO.

  • TAKEN: the issue is closed, an open PR links to it, or someone is assigned.
  • CAUTION: a comment says someone wants it (soft claim, they may have moved on), a linked PR was merged but the issue is still open, the repo has an AI policy to respect, or the repo looks inactive.
  • GO: none of the above.

The claimant scan is a heuristic over comment text, not proof. The verdict always prints its evidence so you can judge for yourself.

Development

uv sync          # install dev tools (ruff, pytest)
uv run pytest
uv run ruff check
uv run ruff format --check

AI assistance

This project is built with AI assistance, and says so openly. Every contribution is reviewed and understood by its author before it lands.

Release files for taken-gh 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for taken-gh 0.1.2
File Size Uploaded
taken_gh-0.1.2.tar.gz 24.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for taken-gh 0.1.2
File Interpreter ABI Platform
taken_gh-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 33.9 kB

Release files / taken_gh-0.1.2.tar.gz

Download URL taken_gh-0.1.2.tar.gz
Size 24.1 kB
Tags Source
SHA-256 checksum
How to use checksums
758303751b631f12b7f1d6993651dd8ca7804748ba0b24ef3164ba48dcafa68b
BLAKE2b-256 checksum
How to use checksums
61236aca46a4f67008a700e4192c02db14c850896c3c8cedd8c84f831fd78c75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / taken_gh-0.1.2-py3-none-any.whl

Download URL taken_gh-0.1.2-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
40106e00463f08cd9d987365d4dda701da05ba9f87f77eeb8cb8caa3a70529d4
BLAKE2b-256 checksum
How to use checksums
541e4090a1fc026d35774d45f5191fd873768bc3b79c05bfbaee3cbbb154b1c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page