Skip to main content Inicio Creadores jeremylongshore tons-of-skills-marketplace linear-incident-runbook
linear-incident-runbook Production incident response procedures for Linear integrations.
Use when handling production issues, diagnosing outages,
or responding to Linear-related incidents.
Trigger: "linear incident", "linear outage", "linear production issue",
"debug linear production", "linear down", "linear 500".
Ir a la instalación Skills Marketplace Descubre y explora habilidades de IA creadas por la comunidad.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Copiar promptMostrar detalles del prompt Un comando directo omite el prompt de revisión. Revisa el origen antes de ejecutarlo.
npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill linear-incident-runbookEl comando permanece en una sola línea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Descargar Zip Descargando... Más de este repositorio langchain-deploy-integration Deploy a LangChain 1.0 / LangGraph 1.0 app to Cloud Run, Vercel, or LangServe correctly — with timeouts sized for chain length, cold-start mitigation, SSE anti-buffering headers, and Secret Manager over .env. Use when prepping a first production deploy, debugging a stream that hangs behind a proxy, or diagnosing p99 latency spikes. Trigger with "langchain deploy", "langchain cloud run", "langchain vercel python", "langchain langserve", or "langchain docker".
langchain-langgraph-agents Build a correct LangGraph 1.0 ReAct agent with create_react_agent — typed tools, error propagation, recursion caps, and stop conditions that actually stop. Use when writing a first tool-calling agent, migrating from AgentExecutor or initialize_agent, or diagnosing an agent that loops on vague prompts. Trigger with "langgraph agent", "create_react_agent", "langgraph tool calling", "AgentExecutor migration", or "agent loop cost".
langchain-langgraph-human-in-loop Build LangGraph 1.0 human-in-the-loop approval flows with interrupt_before /
interrupt_after and Command(resume=...) — JSON-serializable state, clean
resume semantics, and UI wiring for approval decisions. Use when adding an
approval gate before an expensive tool call, wiring a Slack/web UI for agent
approvals, or debugging a graph that crashes on interrupt.
Trigger with "langgraph human in loop", "langgraph interrupt_before",
"langgraph approval flow", "Command resume", "langgraph HITL".
name linear-incident-runbook description Production incident response procedures for Linear integrations.
Use when handling production issues, diagnosing outages,
or responding to Linear-related incidents.
Trigger: "linear incident", "linear outage", "linear production issue",
"debug linear production", "linear down", "linear 500".
allowed-tools Read, Write, Edit, Bash(curl:*), Grep version 1.12.0 license MIT author Jeremy Longshore <jeremy@intentsolutions.io> tags ["saas","linear","debugging","incident-response"] compatibility Designed for Claude Code
Linear Incident Runbook
Overview
Step-by-step runbooks for handling production incidents with Linear integrations. Covers API authentication failures, rate limiting, webhook issues, and Linear platform outages.
Incident Classification
Severity Impact Response Examples SEV1 Complete integration outage < 15 min Auth broken, API unreachable SEV2 Major degradation < 30 min High error rate, rate limited SEV3 Minor issues < 2 hours Some features affected SEV4 Low impact < 24 hours Warnings, non-critical
Immediate Actions (All Incidents)
Step 1: Confirm the Issue
set -euo pipefail
curl -s https://status.linear.app/api/v2/status.json | jq '.status'
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY " \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { name email } }"}' | jq .
curl -s -I -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY " \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { id } }"}' 2>&1 | grep -i ratelimit
curl -s https://yourapp.com/health/linear | jq .
Step 2: Gather Diagnostic Info
import { LinearClient } from "@linear/sdk" ;
async function diagnose ( ) {
. ( );
. ( );
{
client = ({ : process. . ! });
viewer = client. ;
. ( );
} ( : ) {
. ( );
}
. ( );
{
client = ({ : process. . ! });
teams = client. ();
. ( );
teams. . ( . ( ));
} ( : ) {
. ( );
}
. ( );
{
client = ({ : process. . ! });
teams = client. ();
result = client. ({
: teams. [ ]. ,
: ,
});
(result. ) {
issue = result. ;
issue?. ();
. ( );
}
} ( : ) {
. ( );
}
. ( );
{
resp = ( , {
: ,
: {
: process. . !,
: ,
},
: . ({ : }),
});
remaining = resp. . ( );
limit = resp. . ( );
. ( );
} ( : ) {
. ( );
}
. ( );
}
();
console
log
"=== Linear Incident Diagnostic ===\n"
console
log
"1. Authentication:"
try
const
new
LinearClient
apiKey
env
LINEAR_API_KEY
const
await
viewer
console
log
` OK: ${viewer.name} (${viewer.email} )`
catch
error
any
console
log
` FAILED: ${error.message} `
console
log
"\n2. Team Access:"
try
const
new
LinearClient
apiKey
env
LINEAR_API_KEY
const
await
teams
console
log
` OK: ${teams.nodes.length} teams accessible`
nodes
forEach
t =>
console
log
` ${t.key} : ${t.name} `
catch
error
any
console
log
` FAILED: ${error.message} `
console
log
"\n3. Write Capability:"
try
const
new
LinearClient
apiKey
env
LINEAR_API_KEY
const
await
teams
const
await
createIssue
teamId
nodes
0
id
title
"[INCIDENT-DIAG] Safe to delete"
if
success
const
await
issue
await
delete
console
log
" OK: Created and deleted test issue"
catch
error
any
console
log
` FAILED: ${error.message} `
console
log
"\n4. Rate Limits:"
try
const
await
fetch
"https://api.linear.app/graphql"
method
"POST"
headers
Authorization
env
LINEAR_API_KEY
"Content-Type"
"application/json"
body
JSON
stringify
query
"{ viewer { id } }"
const
headers
get
"x-ratelimit-requests-remaining"
const
headers
get
"x-ratelimit-requests-limit"
console
log
` Requests: ${remaining} /${limit} `
catch
error
any
console
log
` FAILED: ${error.message} `
console
log
"\n=== End Diagnostic ==="
diagnose
Runbook: API Authentication Failure Symptoms: All API calls returning 401/403, "Authentication required" errors
set -euo pipefail
echo $LINEAR_API_KEY | head -c 8
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY " \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { id } }"}' | jq .errors
Verify key is loaded: [ -n "$LINEAR_API_KEY" ] && echo "Set" || echo "NOT set"
Check if rotated: Linear Settings > Account > API > Personal API keys
Generate new key if needed, update secret manager
Restart affected services
If recent deploy caused it: git revert HEAD && npm run deploy
Runbook: Rate Limiting (HTTP 429) Symptoms: HTTP 429 responses, "Rate limit exceeded", degraded performance
set -euo pipefail
curl -s -I -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY " \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { id } }"}' 2>&1 | grep -i ratelimit
Emergency throttle -- add 5s delay between all requests:
const EMERGENCY_DELAY_MS = 5000 ;
async function emergencyThrottle<T>(fn : () => Promise <T>): Promise <T> {
await new Promise (r => setTimeout (r, EMERGENCY_DELAY_MS ));
return fn ();
}
Stop non-critical background jobs (polling, sync)
Disable bulk operations
Wait for bucket refill (Linear uses leaky bucket, refills continuously)
Post-incident: implement proper request queue and caching
Runbook: Webhook Failures Symptoms: Events not received, signature validation errors, processing timeouts
set -euo pipefail
curl -s -o /dev/null -w "%{http_code}" https://yourapp.com/webhooks/linear
echo -n "$LINEAR_WEBHOOK_SECRET " | wc -c
Endpoint unreachable: Check DNS, SSL cert, firewall, load balancer health
Signature mismatch: Verify LINEAR_WEBHOOK_SECRET matches webhook config in Linear Settings > API > Webhooks
Body parsing issue: Ensure using express.raw() not express.json()
Processing timeout: Respond 200 immediately, process async
Recreate webhook: Linear Settings > API > Webhooks > delete + recreate
Runbook: Linear Platform Outage Symptoms: All API calls failing, status.linear.app reports issues
Confirm at https://status.linear.app
Enable graceful degradation in your app
Queue write operations for replay when API recovers
Serve cached data for read operations
Monitor status page for resolution
After recovery: run consistency check to detect missed webhook events
Communication Templates
Initial Announcement INCIDENT: Linear Integration Issue
Severity: SEVX
Status: Investigating
Impact: [description]
Start: [UTC timestamp]
Investigating issues with Linear integration. Updates to follow.
Resolution RESOLVED: Linear Integration Issue
Duration: X hours Y minutes
Root Cause: [brief]
Impact: [what was affected]
Post-mortem within 48 hours.
Post-Incident Checklist [ ] All systems verified healthy
[ ] Stuck/queued jobs cleared
[ ] Data consistency validated
[ ] Stakeholders notified of resolution
[ ] Timeline documented
[ ] Root cause identified
[ ] Action items assigned
[ ] Monitoring gaps addressed
Error Handling Issue Cause Solution Auth failure Expired/rotated key Regenerate and update secret manager Rate limit Budget exceeded Emergency throttle, stop background jobs Webhook failure Secret mismatch or endpoint down Verify secret, check endpoint health Platform outage Linear infrastructure issue Graceful degradation, serve cached data
Resources