claude-code/.github/workflows
Chris Lloyd a93966285e
Unify issue lifecycle labeling and sweep into a single system (#25352)
* Unify issue lifecycle labeling and sweep into a single system

Consolidate issue triage, stale detection, and lifecycle enforcement into
two components: a Claude-powered triage workflow and a unified sweep script.

Triage workflow changes:
- Add issue_comment trigger so Claude can re-evaluate lifecycle labels when
  someone responds to a needs-repro/needs-info issue
- Add concurrency group per issue with cancel-in-progress to avoid pile-up
- Filter out bot comments to prevent sweep/dedupe triggering re-triage
- Hardcode allowed label whitelist to prevent label sprawl (was discovering
  labels via gh label list, leading to junk variants like 'needs repro' vs
  'needs-repro')
- Replace MCP GitHub server with gh CLI — simpler, no Docker dependency,
  chaining is caught by the action so permissions are equivalent
- Add lifecycle labels (needs-repro, needs-info) for bugs missing info
- Add invalid label for off-topic issues (Claude API, billing, etc.)
- Add anti-patterns to prevent false positives (don't require specific
  format, model behavior issues don't need traditional repro, etc.)

Sweep script changes:
- Absorb stale issue detection (was separate stale-issue-manager workflow)
- Mark issues as stale after 14 days of inactivity
- Skip assigned issues (team is working on it internally)
- Skip enhancements with 10+ thumbs up (community wants it)
- Add invalid label with 3-day timeout
- Add autoclose label support to drain 200+ legacy issues
- Drop needs-votes (stale handles inactive enhancements)
- Unify close messages into a single template with per-label reasons
- Run 2x daily instead of once

Delete stale-issue-manager.yml — its logic is now in sweep.ts.

## Test plan

Dry-run sweep locally:
GITHUB_TOKEN=$(gh auth token) GITHUB_REPOSITORY_OWNER=anthropics   GITHUB_REPOSITORY_NAME=claude-code bun run scripts/sweep.ts --dry-run

Triage workflow will be tested by opening a test issue after merge.

* Update .github/workflows/claude-issue-triage.yml

Co-authored-by: Ashwin Bhat <ashwin@anthropic.com>

---------

Co-authored-by: Ashwin Bhat <ashwin@anthropic.com>
2026-02-12 11:45:31 -08:00
..
auto-close-duplicates.yml Restore dedupe workflows 2025-09-24 18:01:05 -07:00
backfill-duplicate-comments.yml Restore dedupe workflows 2025-09-24 18:01:05 -07:00
claude-dedupe-issues.yml chore: allow non-write users to trigger claude-code-action workflows 2026-01-14 18:11:06 -05:00
claude-issue-triage.yml Unify issue lifecycle labeling and sweep into a single system (#25352) 2026-02-12 11:45:31 -08:00
claude.yml ci: update claude-code-base-action and claude-code-action to v1 2026-01-09 18:24:29 -08:00
issue-opened-dispatch.yml Update workflow 2025-09-05 15:26:12 -07:00
lock-closed-issues.yml Remove timeout-minutes from lock-closed-issues workflow (#5455) 2025-08-09 10:58:52 -07:00
log-issue-events.yml Add issue close event trigger to log-issue-events workflow 2025-08-22 18:30:52 -07:00
oncall-triage.yml chore: allow non-write users to trigger claude-code-action workflows 2026-01-14 18:11:06 -05:00
remove-autoclose-label.yml Revert "Revert "Add stale issue management workflows" (#9304)" (#12917) 2025-12-02 15:19:09 -08:00
sweep.yml Unify issue lifecycle labeling and sweep into a single system (#25352) 2026-02-12 11:45:31 -08:00