From x-bug-triage-plugin
Analyzes public X/Twitter complaints to detect, cluster, and triage bugs with repo evidence and owner routing. Use when monitoring product health from social signals. Trigger with "/x-bug-triage" or "triage X bugs for @account". Make sure to use this skill whenever triaging bugs from X/Twitter mentions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/x-bug-triage-plugin:x-bug-triage <account> [--window 24h]<account> [--window 24h]inheritThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Closed-loop bug triage from public X/Twitter complaints to clustered, evidence-backed GitHub issues.
Closed-loop bug triage from public X/Twitter complaints to clustered, evidence-backed GitHub issues.
Product teams learn about bugs from X/Twitter hours before internal monitoring catches them. This skill automates the pipeline: ingest complaints, classify and cluster them by bug family, scan repos for corroborating evidence, route to owners, and file issues — all with human confirmation gates. Results display directly in the terminal with optional Slack delivery for team review.
~/.claude/channels/x-triage/.envbun run db:migrate)config/approved-accounts.json and config/approved-searches.json populatedgh) for issue filingVerify environment before starting:
!test -f data/triage.db && echo "DB ready" || echo "Run: bun run db:migrate"
!test -f config/approved-accounts.json && echo "Accounts configured" || echo "Missing: config/approved-accounts.json"
mcp__triage__resolve_usernamemcp__triage__fetch_mentionsmcp__triage__search_recentmcp__triage__fetch_conversationmcp__triage__fetch_quote_tweetsAfter intake completes:
assessFreshness() from lib/freshness.ts with the combined post set and the requested window boundaries. If date_confidence is "low" or "medium", pass the warning string to the display step for rendering.DegradationReport objects from intake tool responses. Call buildSourceStatusReport() from lib/source-status.ts to aggregate into a SourceStatusReport. Pass to the display step for rendering between the header and cluster list.For each ingested post:
lib/parser.tslib/classifier.tslib/redactor.tslib/reporter-scorer.tsconfig/approved-accounts.jsonFor each cluster (top 3 repos per cluster):
mcp__triage__search_issues — Match symptoms/errorsmcp__triage__inspect_recent_commits — 7-day commit windowmcp__triage__inspect_code_paths — Affected pathsmcp__triage__check_recent_deploys — Recent releasesAssign evidence tiers (1-4) per evidence-policy.md.
Load evidence tier definitions:
!cat ${CLAUDE_SKILL_DIR}/references/evidence-policy.md
For each cluster, use strict 6-level precedence:
mcp__triage__lookup_service_ownermcp__triage__lookup_oncallmcp__triage__parse_codeownersmcp__triage__lookup_recent_assigneesmcp__triage__lookup_recent_committersApply routing overrides from prior runs. Flag stale signals (>30 days).
Load routing precedence rules:
!cat ${CLAUDE_SKILL_DIR}/references/routing-rules.md
Compute severity (low/medium/high/critical) based on:
Load escalation trigger definitions:
!cat ${CLAUDE_SKILL_DIR}/references/escalation-rules.md
Display triage results directly in the terminal as formatted markdown:
Check if claude-code-slack-channel plugin is available via mcp__slack__reply tool. If available, also deliver summary to Slack. If not, skip — terminal output is sufficient. Not an error.
Accept review commands from the user in the terminal. Parse via mcp__triage__parse_review_command.
| Command | Action |
|---|---|
details <#> | Display full cluster detail |
file <#> | Generate draft via mcp__triage__create_draft_issue |
dismiss <#> <reason> | Create noise_suppression override |
merge <#> <issue> | Link cluster to existing issue |
escalate <#> | Raise severity |
monitor <#> | Set cluster to monitoring |
snooze <#> <duration> | Temporarily suppress |
split <#> | Split cluster |
reroute <#> | Change routing |
full-report | Display all clusters |
confirm file <#> | File via mcp__triage__confirm_and_file |
After each command executes successfully, display the confirmation message from formatActionConfirmation() (in mcp/triage-server/lib.ts). This provides immediate user feedback for all review actions.
Load override and memory policy when processing review commands:
!cat ${CLAUDE_SKILL_DIR}/references/review-memory-policy.md
Terminal markdown summary with severity-ranked clusters, evidence tiers, team assignments, and interactive command menu. Optionally mirrored to Slack.
/x-bug-triage @AnthropicAI --window 24h
Produces cluster summary, then user interacts:
> details 1
> file 2
> dismiss 3 noise
> confirm file 2
| Error | Cause | Solution |
|---|---|---|
| X_BEARER_TOKEN not set | Missing env config | Create ~/.claude/channels/x-triage/.env |
| Rate limited (429) | X API quota exhausted | Automatic retry with backoff, degrades gracefully |
| No clusters found | No bug-like posts in window | Widen --window or check approved-searches.json |
| Routing uncertain | No routing signals | Manual assignment required — flagged in output |
| Duplicate detected | Issue already filed | Use merge command instead of file |
References: ${CLAUDE_SKILL_DIR}/references/
npx claudepluginhub flight505/skill-forge --plugin x-bug-triage-pluginCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.