Skip to content

feat(agents): triage fires on comments + claude-triaging lifecycle label#277

Merged
bokelley merged 1 commit intomainfrom
bokelley/triage-comment-trigger
Apr 25, 2026
Merged

feat(agents): triage fires on comments + claude-triaging lifecycle label#277
bokelley merged 1 commit intomainfrom
bokelley/triage-comment-trigger

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

Same triage-routine resilience improvements that landed in adcontextprotocol/adcp via #3146 + #3155, applied to this repo. Three coordinated changes plus three new files.

What changes

1. Workflow now fires on issue_comment.created with self-loop / bot / /triage / PR-conversation filtering. The routine prompt's issue_comment.created branch (which always existed) now actually receives plain prose comments instead of being dead code.

2. claude-triaging lifecycle label. Routine applies it immediately after concurrency + already-engaged checks pass, swaps to claude-triaged at end of run. Gives humans a visible "I'm on this, don't open a parallel PR" signal during the 1-3 min triage window. Skip cases (concurrency-skip, already-engaged-defer, non-substantive comments) leave the label off entirely.

3. Manual triage docs in .agents/routines/README.md documenting /triage syntax, what does/doesn't trigger triage, how to read claude-triaging vs claude-triaged, and webhook-miss recovery paths.

New recovery infrastructure

.github/workflows/clear-stuck-claude-triaging.yml — cron every 30 min, removes claude-triaging from issues where it's been on >30 min (orphan case where routine errored mid-run).

.github/workflows/triage-webhook-miss-sweep.yml — cron hourly, finds issues opened in last 24h with no claude-triag* label and no ## Triage comment, fires the routine manually with a RECOVERY SWEEP: payload tag. Closes the silent-failure mode where GitHub silently drops issues.opened webhooks (this happened on adcontextprotocol/adcp#3112).

.agents/scripts/triage-local.sh — local CLI to fire triage immediately on an issue without leaving a public /triage comment trail. Loads CLAUDE_ROUTINE_TRIAGE_URL / _TOKEN from env or local .env.

Prerequisites

claude-triaging label was created in this repo ahead of this merge. Required for the routine to apply — the routine stops and reports if the label is missing.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Mirrors the changes from adcontextprotocol/adcp#3146 + #3155:

- Workflow fires on issue_comment.created with self-loop / bot /
  /triage / PR-conversation filtering. Plain comments now reach the
  routine through the new comment.created event kind.
- claude-triaging lifecycle label: routine applies it after the
  concurrency + already-engaged checks pass, swaps to claude-triaged
  at end of run. Gives humans a visible "I'm on this" signal.
- Manual triage docs in .agents/routines/README.md.
- clear-stuck-claude-triaging.yml: cron every 30 min clears orphaned
  labels on issues stuck >30 min.
- triage-webhook-miss-sweep.yml: cron hourly catches issues opened in
  last 24h that the issues.opened webhook silently missed.
- .agents/scripts/triage-local.sh: local fire script.

claude-triaging label created in this repo ahead of merge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bokelley bokelley merged commit 604d795 into main Apr 25, 2026
11 checks passed
@bokelley bokelley deleted the bokelley/triage-comment-trigger branch April 25, 2026 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant