leanprover-community/Intentions

Coordinate who works on what: claim/disclaim tasks via issue comments, with configurable claim expiry (TTL).

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
modeWhat to run: "command" (handle an issue_comment), "lifecycle" (react to issue/PR events), or "sweep" (expire stale claims).yes
project-tokenGitHub App installation token (preferred for orgs) or fine-grained PAT that can write the Projects v2 board. The default GITHUB_TOKEN cannot write org-level Projects v2. Used for Issue/PR writes too unless repo-token is set.yes
repo-tokenToken for Issue/PR REST writes and repo-level GraphQL reads (assign, comment, link PRs). The reusable workflow passes the job GITHUB_TOKEN here so the project-token only needs Projects access. Falls back to project-token when empty.no""
project-titleTitle of the GitHub Projects v2 board to drive.yes
status-fieldName of the single-select board field tracking task state.noStatus
status-unclaimedName of the "unclaimed" option of the status field.noUnclaimed
status-claimedName of the "claimed" option of the status field.noClaimed
status-in-progressName of the "in progress" option of the status field (a draft PR is open).noIn Progress
status-in-reviewName of the "in review" option (lifecycle moves a task here when a ready PR is open). Skipped if the board has no such option.noIn Review
status-completedName of the "completed" option (lifecycle moves a task here when its PR merges or the issue closes). Skipped if the board has no such option.noCompleted
auto-addIn lifecycle mode, add newly opened issues to the board as Unclaimed.notrue
auto-add-labelsComma-separated label allowlist for auto-add. Empty adds every opened issue; otherwise only issues carrying one of these labels are added (e.g. "intention").no""
claim-on-openIn lifecycle mode, auto-claim a newly opened (auto-added) issue for its author, so registering needs only the issue form and no separate `claim` comment.nofalse
claim-expiry-fieldIssue-form field label to read the auto-claim expiry from (e.g. "Credible expiry date"). Empty, missing, or unparseable falls back to default-ttl. Only used when claim-on-open is true.no""
claim-expiry-require-dateRequire the claim-expiry-field value to be an absolute date (e.g. "2026-09-01"); a duration like "6 months" is refused and falls back to default-ttl. Keeps the recorded expiry a date a reader can see without knowing the claim date. Only used when claim-on-open is true.nofalse
terminal-statusesComma-separated status names the bot recognizes but does not manage (claims here are refused cleanly).noIn Review,Completed
expiry-fieldName of the board Text field that stores each claim's expiry as an ISO 8601 UTC datetime (the machine source of truth).noClaim Expires
note-fieldName of the board Text field that holds each claim's freeform note (scraped from the lines following a `claim` comment). Optional: if the board has no such field, notes are silently ignored.noClaim Note
default-ttlTTL applied to a bare `claim`. Accepts a duration (e.g. 1h, 7d, 3 weeks, 30d). Set to "none" or "off" to disable expiry entirely for this project.no30d
max-ttlMaximum TTL a claimant may request; longer requests are rejected with a helpful message.no90d
expire-in-progressWhether the sweep also expires items in the "in progress" status (an open PR was proposed).nofalse
backfill-legacyHow the sweep treats Claimed items with an empty expiry (legacy claims): "grace" (set now+default-ttl, skip one round), "ignore" (never touch), or "expire".nograce

no outputs