leanprover-community/Intentions
Coordinate who works on what: claim/disclaim tasks via issue comments, with configurable claim expiry (TTL).
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| mode | What to run: "command" (handle an issue_comment), "lifecycle" (react to issue/PR events), or "sweep" (expire stale claims). | yes | — |
| project-token | GitHub 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-token | Token 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-title | Title of the GitHub Projects v2 board to drive. | yes | — |
| status-field | Name of the single-select board field tracking task state. | no | Status |
| status-unclaimed | Name of the "unclaimed" option of the status field. | no | Unclaimed |
| status-claimed | Name of the "claimed" option of the status field. | no | Claimed |
| status-in-progress | Name of the "in progress" option of the status field (a draft PR is open). | no | In Progress |
| status-in-review | Name of the "in review" option (lifecycle moves a task here when a ready PR is open). Skipped if the board has no such option. | no | In Review |
| status-completed | Name 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. | no | Completed |
| auto-add | In lifecycle mode, add newly opened issues to the board as Unclaimed. | no | true |
| auto-add-labels | Comma-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-open | In 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. | no | false |
| claim-expiry-field | Issue-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-date | Require 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. | no | false |
| terminal-statuses | Comma-separated status names the bot recognizes but does not manage (claims here are refused cleanly). | no | In Review,Completed |
| expiry-field | Name of the board Text field that stores each claim's expiry as an ISO 8601 UTC datetime (the machine source of truth). | no | Claim Expires |
| note-field | Name 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. | no | Claim Note |
| default-ttl | TTL 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. | no | 30d |
| max-ttl | Maximum TTL a claimant may request; longer requests are rejected with a helpful message. | no | 90d |
| expire-in-progress | Whether the sweep also expires items in the "in progress" status (an open PR was proposed). | no | false |
| backfill-legacy | How the sweep treats Claimed items with an empty expiry (legacy claims): "grace" (set now+default-ttl, skip one round), "ignore" (never touch), or "expire". | no | grace |
Outputs
no outputs