Incident logo

Incident

Organization
Rune-kit
incident

Structured incident response. Use when user reports an outage, production error, or says 'incident', 'something is down', 'users are affected'. Triage severity, contain blast radius, root-cause, document timeline, generate postmortem.

Overview

PublisherRune-kit
Repositoryrune
Skill nameincident
Stars
88
Forks
26
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by Rune-kit on GitHub. Read the source before you install it.

Installation

Install the Incident AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Rune-kit/rune/tree/master/skills/incident
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Rune-kit/rune.git /tmp/rune
mkdir -p .claude/skills
cp -r /tmp/rune/skills/incident .claude/skills/incident
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Incident in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Incident on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Incident is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

incident

Purpose

Structured incident response for production issues. Follows a strict order: triage first, contain before investigating, root-cause after stable, postmortem last. Prevents the most common incident anti-pattern — developers debugging while the system is still on fire. Covers P1 outages, P2 degraded service, and P3 minor issues with appropriate urgency at each level.

Triggers

  • /rune incident "description of what's broken" — direct user invocation
  • Called by launch (L1): watchdog alerts during Phase 3 VERIFY
  • Called by deploy (L2): health check fails post-deploy
  • Signal: auto-triggers when watchdog emits incident.detected — no manual invocation needed

Calls (outbound)

  • watchdog (L3): current system state — which endpoints are down, response times
  • autopsy (L2): root cause analysis after containment
  • journal (L3): record incident timeline and decisions
  • sentinel (L2): check for security dimension (data exposure, unauthorized access)
  • neural-memory (ext): after resolution — capture incident root cause + fix pattern cross-session so the same failure mode is never diagnosed twice

Called By (inbound)

  • launch (L1): monitoring alert during production verification
  • deploy (L2): post-deploy health check failure
  • User: /rune incident direct invocation

Executable Steps

Step 1 — Triage

Classify severity using this matrix:

SeverityDefinitionContain Within
P1Full outage — core feature unavailable for all users15 minutes
P2Partial degradation — feature broken for subset of users or degraded for all1 hour
P3Minor issue — cosmetic, edge case, or non-blocking degradation4 hours

P1 indicators: 5xx on root /, auth endpoint down, payment flow broken, data loss detected P2 indicators: elevated error rate (>1%) on key flow, 1+ regions down, performance >5x baseline P3 indicators: UI glitch, non-critical feature broken, low error rate (<0.1%)

Emit: TRIAGE: [P1|P2|P3] — [one-line impact description]

Step 2 — Contain

Choose containment strategy based on what's available and severity:

StrategyWhen to Use
RollbackLast deploy caused regression (check git log vs incident start time)
Feature flag offFeature-gated code — disable without deploy
Traffic shiftMulti-region: route away from affected region
Scale upResource exhaustion (CPU/memory/connection pool)
Rate limitAbuse pattern or traffic spike
Manual interventionDB locked record, stuck job, cache corruption

Execute containment action. Then invoke watchdog to verify system is stable before proceeding.

Emit: CONTAINED: [strategy used] — [timestamp] or CONTAINMENT_FAILED: [what was tried] — escalate

Step 3 — Verify Containment

Invoke watchdog with current base_url and critical endpoints.

Proceed to Step 4 only if watchdog returns ALL_HEALTHY or DEGRADED with upward trend. If watchdog returns DOWN — return to Step 2 with a different containment strategy.

Step 4 — Security Check

Invoke sentinel to check if the incident has a security dimension:

  • Data exposure (PII, credentials in logs/responses)
  • Unauthorized access pattern in logs
  • Injection attack vector triggered the incident
  • Dependency with known CVE involved

If sentinel returns BLOCK: escalate to security incident — different protocol (notify security team, preserve logs, document access chain). If sentinel returns PASS or WARN: continue to root cause.

Step 5 — Root Cause Analysis

Invoke autopsy with context:

  • Incident start timestamp
  • Failing components identified in Step 2-3
  • Recent deploy info (commit hash, deploy timestamp, changed files)

autopsy returns: root cause hypothesis with evidence, affected code paths, contributing factors.

Do not attempt fixes — incident only investigates. Any code changes are a separate task.

Step 6 — Timeline Construction

Construct incident timeline using:

  • Incident start time (when first detected)
  • Triage time (when severity classified)
  • Containment time (when system stabilized)
  • RCA time (when root cause identified)
  • Resolution time (when fully resolved)

Format:

[HH:MM] Incident detected — [who/what detected it]
[HH:MM] Triage: [P1/P2/P3] — [impact]
[HH:MM] Containment started — [strategy]
[HH:MM] CONTAINED — [watchdog confirms stable]
[HH:MM] RCA: [root cause summary]
[HH:MM] Resolution: [what was done]

Invoke journal to record the timeline and decisions in .rune/adr/ as an incident ADR.

Step 7 — Postmortem

Generate postmortem report and save as .rune/incidents/INCIDENT-[YYYY-MM-DD]-[slug].md:

markdown
# Incident Report: [title]

**Severity**: [P1|P2|P3]
**Date**: [YYYY-MM-DD]
**Duration**: [time from detection to resolution]
**Impact**: [users affected, data affected, revenue impact if known]

## Timeline
[from Step 6]

## Root Cause
[from autopsy — specific, not vague]

## Contributing Factors
[from autopsy — what made this worse]

## What Went Well
[containment speed, detection, communication]

## What Went Wrong
[detection lag, failed first containment, etc.]

## Prevention Actions

| Action | Owner | Due | Priority |
|--------|-------|-----|----------|
| [specific action] | [team/person] | [date] | P1/P2/P3 |

## Lessons Learned
[3-5 bullet points]

Output Format

## Incident Response: [title]

### Triage
P2 — Login service returning 503 for ~30% of users

### Containment
Strategy: Rollback to commit abc123 (pre-deploy from 14:32)
Status: CONTAINED at 15:07 — watchdog confirms ALL_HEALTHY

### Security Check
sentinel: PASS — no data exposure detected

### Root Cause (from autopsy)
Connection pool exhausted — new feature added synchronous DB call in middleware,
reducing available connections from 20 to 3 under load
File: src/middleware/auth.ts:47

### Timeline
14:32 Deploy completed
14:45 Alerts fired — 503 rate >1%
14:47 TRIAGE: P2
14:52 Containment: rollback initiated
15:07 CONTAINED
15:20 RCA complete
15:35 Postmortem drafted

### Postmortem saved
.rune/incidents/INCIDENT-2026-02-24-login-503.md

Constraints

  1. MUST triage before any other action — severity determines urgency, approach, and escalation path
  2. MUST contain before root-cause — investigating while system is down prolongs the incident
  3. MUST invoke watchdog to verify containment — never assume contained without measurement
  4. MUST invoke sentinel before closing — every incident has a potential security dimension
  5. MUST NOT make code changes during incident response — incident investigates only; fixes are a separate task
  6. MUST generate postmortem for every P1 and P2 — P3 optional

Mesh Gates (L1/L2 only)

GateRequiresIf Missing
Triage GateSeverity classified (P1/P2/P3) before any other stepClassify before proceeding
Containment Gatewatchdog confirms HEALTHY/DEGRADED-improving before RCAReturn to containment if still DOWN
Security Gatesentinel ran before closing incidentRun sentinel — do not skip
Postmortem GateAll sections populated (Timeline, RCA, Prevention Actions) before status = ResolvedComplete or note as DRAFT

Returns

ArtifactFormatLocation
Incident response reportMarkdowninline (chat output)
Incident timelineText (HH:MM format)inline + postmortem
Postmortem documentMarkdown.rune/incidents/INCIDENT-<date>-<slug>.md
Prevention actions tableMarkdown tablepostmortem
Journal entry (incident ADR)Text.rune/adr/ (via rune:journal)

Sharp Edges

Known failure modes for this skill. Check these before declaring done.

Failure ModeSeverityMitigation
Starting RCA before containment confirmedCRITICALHARD-GATE: check CONTAINED status before calling autopsy
Declaring incident resolved without watchdog verificationHIGHMUST call watchdog after containment — not just assume
Postmortem Prevention Actions without owners or datesMEDIUMEvery action needs owner + due date — otherwise it never happens
Skipping sentinel because "looks like a performance issue"HIGHSecurity dimension is not always obvious — always run sentinel
P1 triage without 15-minute containment urgencyHIGHP1 SLA = 15 min to contain — flag if containment exceeds threshold

Done When

  • Severity triaged (P1/P2/P3) with impact description
  • Containment executed and watchdog confirms stable
  • sentinel ran and security dimension addressed (or escalated)
  • Root cause identified via autopsy with file:line evidence
  • Full timeline constructed
  • Postmortem saved to .rune/incidents/ with Prevention Actions table
  • journal entry recorded

Cost Profile

~3000-8000 tokens input, ~1000-2500 tokens output. Sonnet for response coordination.

Frequently asked questions

What does the Incident AI skill do?

Structured incident response. Use when user reports an outage, production error, or says 'incident', 'something is down', 'users are affected'. Triage severity, contain blast radius, root-cause, document timeline, generate postmortem.

Why use Incident on TypingMind?

Because you install it once and use it with any model. Incident is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Incident in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Rune-kit/rune/tree/master/skills/incident. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Incident?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Incident?

As many as you like. As long as a model supports skills, you can use Incident with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Incident AI skill free?

Yes. It is published on GitHub by Rune-kit under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇