Skip to main content
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".
설치로 이동 Skills Marketplace 커뮤니티가 만든 AI 스킬을 발견하고 탐색하세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/jeremylongshore/claude-code-plugins-plus-skills --skill linear-incident-runbook명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Zip 다운로드 다운로드 중... 이 저장소의 다른 Skills Implement user sign-up and sign-in flows with Clerk.
Use when building authentication UI, customizing sign-in experience,
or implementing OAuth social login.
Trigger with phrases like "clerk sign-in", "clerk sign-up",
"clerk login flow", "clerk OAuth", "clerk social login".
Implement session management and middleware with Clerk.
Use when managing user sessions, configuring route protection,
or implementing token refresh and custom JWT templates.
Trigger with phrases like "clerk session", "clerk middleware",
"clerk route protection", "clerk token", "clerk JWT".
Configure enterprise SSO, role-based access control, and organization management.
Use when implementing SSO integration, configuring role-based permissions,
or setting up organization-level controls.
Trigger with phrases like "clerk SSO", "clerk RBAC",
"clerk enterprise", "clerk roles", "clerk permissions", "clerk organizations".
jeremylongshore
jeremylongshore/claude-code-plugins-plus-skills
GitHub 저장소 열기 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, also compatible with Codex and OpenClaw
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