Incident triage orchestrator, classifies severity, diagnoses in parallel, routes to /sre, /ci-fix, or /fix based on evidence.
/incident [description]
Prerequisites: a git repository (for git log), the GitHub CLI gh (for CI/deploy status), and health endpoints defined in CLAUDE.md’s Environments table. Docker is optional but used for container health checks if running. Richer diagnostics. DB queries, error rates, APM traces, require MCP servers (Sentry, Datadog, Postgres, Redis, etc.), which /calibrate can install for you.
/incident "500 errors on the checkout page"
What you’ll see: an instant severity/type classification, four parallel diagnostic checks completing in under a minute, a correlated diagnosis with confidence score, then automatic routing to the right resolution skill, ending with a verified fix and an incident report.
/incident "the site is down" # free-text description — full triage
/incident #234 # load the incident from a GitHub issue
/incident # no args — auto-detect: checks health, CI, recent deploys
Classify (instant), pattern-matches the description into severity (CRITICAL/HIGH/MEDIUM/LOW) and type (infra, CI, code bug, performance, local ops, data, auth). CRITICAL proceeds with no questions; HIGH/MEDIUM briefly confirm the description; LOW asks whether you want full triage or a quick check, a user-confirmation checkpoint.
With the decisions product on (/arth-setup → decisions), /incident accepts --jev off|shadow|enforce and prints one extra line right after the classification, e.g. 🚨 /incident HIGH Infrastructure · jev: shadow (no box, nothing to answer). In enforce mode a confident Jev classification replaces the keyword tables (which remain the fallback), and when Jev later judges the routing consistent with the gathered evidence the challenge in step 4 is skipped. CRITICAL never asks a question, in any mode. In shadow mode (the default after setup) the keyword tables classify exactly as today and the decision is only logged.
.claude/qa-knowledge/ and .claude/knowledge/ files./sre debug (infra/perf/data), /ci-fix (CI), /fix (code bugs), /restart (local ops). Escalations between skills are automatic.| Agent | Model tier | Role |
|---|---|---|
| explore-light | haiku | Health endpoint checks |
| ops (×3) | haiku | Recent deploys + CI, error signals/logs, knowledge-base lookup |
| qa-challenger | haiku | Devil’s advocate: challenges the primary diagnosis |
| sre or ops | haiku | Cross-domain verification in full-challenge mode |
| sre / fix / ci-fix pipeline | sonnet | The routed resolution skill’s agent |
| completion-verifier | sonnet | Post-resolution completion check: reports PASS, GAPS FOUND, or INCONCLUSIVE verbatim and does not block; you decide whether to rerun |
{project-root}/.claude/qa-knowledge/incidents/<date>-<slug>.md (created automatically after resolution), timeline, root cause, prevention, challenge results.claude/knowledge/agents/sre.md, .claude/qa-knowledge/bug-patterns.md, .claude/knowledge/skills/incident.md (classification accuracy, recurring patterns), and matching entries written to the knowledge graph via kg-write.sh for incident summaries, bug patterns, and misclassifications (if detected)/fix, or a verified infra fix from /sre debug| Problem | Fix |
|---|---|
All systems healthy ... Nothing to triage on no-args run |
Auto-detect found no problems: describe the symptom explicitly: /incident "<what you saw>" |
| Diagnosis is inconclusive | /incident runs /sre status and presents findings with a suggested route: confirm or redirect it |
| Triage reports missing data sources (no monitoring, no DB access) | Run /calibrate to install the recommended MCP servers: future triage gets richer evidence |
| Resolution stalls (skill doesn’t resolve in ~15 min) | The orchestrator alerts and presents options; for CRITICAL incidents unresolved in 30 min it suggests a revert |