langfuse/incident-alert-tickets
| Read and, after human approval, update the Linear `incident-alert` knowledge base. Use before and after investigating a named Datadog monitor, incident.io alert or incident, or on-call page to find or record root causes.
npx skills add https://github.com/langfuse/langfuse --skill incident-alert-tickets
Incident-alert tickets turn on-call debugging into searchable knowledge: one
Linear ticket per production alert/monitor, one dated section per distinct
root cause. This skill owns lookup, comparison, and the human-gated
write-back; calling skills own the investigation itself. The team SOP is the
Linear document titled "Incident Alert Tickets".
Apply whenever the task is anchored to an alert identity:
Do not try to detect "incident mode" — the presence of a named alert is the
condition, because the monitor is the ticket key. When an alert identity is
present, the lookup is mandatory; recording is offered after the investigation
and gated on human approval. A customer report or code question with no alert
identity skips this skill.
When multiple alerts fire together (a cascade), run lookup, compare, and
classify for each alert identity — every monitor has its own ticket. If
one root cause explains several alerts, write the full cause section on the
monitor closest to the cause and propose a short dated section on the other
monitors' tickets that links to it.
[ENV] <Monitor title>, in the Engineering (LFE) team, carrying the
incident-alert label. The label set is the knowledge base.
a single ticket titled [ENV1/ENV2] <Monitor title> when the causes are
region-independent; list each env's monitor ID in the alert header.
and how it surfaces (incident.io urgency, auto-resolve behavior).
---: ## YYYY-MM-DD — <short cause name>
**Recognize it:** <signals that identify this cause: log patterns, span
filters, metric shapes, affected routes>
**How urgent?** <impact, auto-recovery behavior, escalation threshold>
**Fix:** <positive actions only — every "do not X" needs a working
alternative; verified levers, not speculation>
new knowledge gets a new dated block.
## Your cause is not listed? trailer: itrecords firings that were never root-caused and tells the next engineer to
insert new dated sections above it, in the same format.
of this alert gets its own ticket (bug or incident-alert), cross-linked — do
not mix it into this ticket's cause sections.
incident-alert label.monitor title and env.
Compare the current evidence against each cause section's "Recognize it"
signals and classify:
analysis; its "Fix" is the starting recommendation. This may end the
investigation before any Datadog sweep.
matches the evidence. Propose appending a dated section.
Treat a partial match — some "Recognize it" signals fit, others do not — as a
new cause, never as a known one: do not recommend a documented "Fix"
whose recognition signals only partially match. Name the near-miss section in
the draft so the human can judge the overlap.
Never create or update a ticket without explicit human approval. Present the
proposal first:
| ID | Alert / Monitor | Classification | Proposed Action | Draft Content | Human Decision |
| --- | --- | --- | --- | --- | --- |
Proposed Action: append cause section to LFE-XXXX, create ticket, ornone (known cause).
Draft Content: the dated section (or full ticket body) exactly as it wouldbe written.
Human Decision: leave blank for the human to choose.Wait for the human to select row IDs and actions before writing. On approval:
----separated dated block after the existingcause sections, above the Your cause is not listed? trailer; leave
everything else untouched.
[ENV] <Monitor title> withthe incident-alert label; description = alert header, the first dated
cause section, and the Your cause is not listed? trailer.
linear-bug-triage owns bug deduplicationand creation from measured evidence. Incident-alert tickets are per-monitor
runbook knowledge, not defect reports.
documents recognition and mitigation, and links the bug ticket that tracks
the durable fix.
Take langfuse/incident-alert-tickets from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.