Juicebox Incident Response Runbook

VerifiedCaution

Standardized procedures for managing Juicebox production incidents. Includes quick diagnostics, triage decision tree, and incident response procedures by type.

Sby Skills Guide Bot
DevOpsIntermediate
3/8/2026
Claude Code
#incident-response#runbook#kubernetes#observability#juicebox

Recommended for

Automated summary

Provides a step-by-step incident response runbook for Juicebox integration failures, covering severity classification, triage, diagnostics, and recovery procedures.

Strengths

  • P1–P4 severity matrix with explicit response-time targets
  • Copy-paste diagnostic script covering the Juicebox status page, our health endpoint, recent error logs, and a Prometheus error-rate query
  • Triage decision tree that routes 401, 429, and timeout cases to dedicated procedures
  • Concrete remediation commands: fallback mode env toggle, API key rotation, pod restart and health verification

Limitations

  • Assumes a specific deployment (kubectl deployment `juicebox-integration`, health on localhost:8080, Prometheus on port 9090) that has to be adapted to your setup
  • Only the external-outage, auth, and rate-limit procedures are written out; the timeout and application-error branches are referenced but not detailed
  • Nothing is automated — an operator must run and interpret every command manually
When to use it

Use when a Juicebox integration is failing in production and you need a repeatable triage and mitigation path under time pressure.

When not to use it

Not for resilience planning or for integrations other than Juicebox, since the endpoints and procedures are product-specific.

Security analysis

Caution
Quality score85/100

The skill contains legitimate incident response procedures using powerful operational tools. It does not instruct destructive, exfiltrating, or obfuscated actions, but the broad kubectl and curl permissions, combined with production-affecting commands, warrant caution rather than safe.

Findings
  • •Declares broad Bash(kubectl:*) and Bash(curl:*) permissions, allowing arbitrary kubectl and network commands.
  • •Includes commands that modify production deployments (kubectl set env, rollout restart), which could cause or worsen incidents if misused.
  • •Scripts reference environment variables containing secrets (e.g., JUICEBOX_API_KEY) and may expose them in shell history or logs.
How this analysis is made

Examples

Confirm outage vs. our side
Juicebox is down in production. Run the quick diagnostics from the incident runbook and tell me whether it's an external Juicebox outage or a problem on our side.
Auth failures
We're getting 401s from the Juicebox API in prod. Walk me through the auth incident procedure: verify the key, check its status, and rotate it if needed.
Rate limited
Our juicebox-integration pods are hitting 429 rate limits. Pull current usage from the Juicebox API and give me the immediate mitigation steps.

name: juicebox-incident-runbook description: | Execute Juicebox incident response procedures. Use when responding to production incidents, troubleshooting outages, or following incident management protocols. Trigger with phrases like "juicebox incident", "juicebox outage", "juicebox down", "juicebox emergency". allowed-tools: Read, Write, Edit, Bash(kubectl:), Bash(curl:) version: 1.0.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io

Juicebox Incident Runbook

Overview

Standardized incident response procedures for Juicebox integration issues.

Incident Severity Levels

| Severity | Description | Response Time | Examples | |----------|-------------|---------------|----------| | P1 | Critical | < 15 min | Complete outage, data loss | | P2 | High | < 1 hour | Major feature broken, degraded performance | | P3 | Medium | < 4 hours | Minor feature issue, workaround exists | | P4 | Low | < 24 hours | Cosmetic, non-blocking |

Quick Diagnostics

Step 1: Immediate Assessment

#!/bin/bash
# quick-diag.sh - Run immediately when incident detected

echo "=== Juicebox Quick Diagnostics ==="
echo "Timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ)"

# Check Juicebox status page
echo ""
echo "=== Juicebox Status ==="
curl -s https://status.juicebox.ai/api/status | jq '.status'

# Check our API health
echo ""
echo "=== Our API Health ==="
curl -s http://localhost:8080/health/ready | jq '.'

# Check recent error logs
echo ""
echo "=== Recent Errors (last 5 min) ==="
kubectl logs -l app=juicebox-integration --since=5m | grep -i error | tail -20

# Check metrics
echo ""
echo "=== Error Rate ==="
curl -s http://localhost:9090/api/v1/query?query=rate\(juicebox_requests_total\{status=\"error\"\}\[5m\]\) | jq '.data.result[0].value[1]'

Step 2: Identify Root Cause

## Incident Triage Decision Tree

1. Is Juicebox status page showing issues?
   - YES → External outage, skip to "External Outage Response"
   - NO → Continue

2. Are we getting authentication errors (401)?
   - YES → Check API key validity, skip to "Auth Issues"
   - NO → Continue

3. Are we getting rate limited (429)?
   - YES → Skip to "Rate Limit Response"
   - NO → Continue

4. Are requests timing out?
   - YES → Skip to "Timeout Response"
   - NO → Continue

5. Are we getting unexpected errors?
   - YES → Skip to "Application Error Response"
   - NO → Gather more data

Response Procedures

External Outage Response

## When Juicebox is Down

1. **Confirm Outage**
   - Check https://status.juicebox.ai
   - Verify with curl test to API

2. **Enable Fallback Mode**
   ```bash
   kubectl set env deployment/juicebox-integration JUICEBOX_FALLBACK=true
  1. Notify Stakeholders

    • Post to #incidents channel
    • Update status page if customer-facing
  2. Monitor Recovery

    • Set up alert for Juicebox status change
    • Prepare to disable fallback mode
  3. Post-Incident

    • Disable fallback when Juicebox recovers
    • Document timeline and impact

### Auth Issues Response
```markdown
## When Authentication Fails

1. **Verify API Key**
   ```bash
   # Mask key for logging
   echo "Key prefix: ${JUICEBOX_API_KEY:0:10}..."

   # Test auth
   curl -H "Authorization: Bearer $JUICEBOX_API_KEY" \
     https://api.juicebox.ai/v1/auth/me
  1. Check Key Status in Dashboard

    • Log into https://app.juicebox.ai
    • Verify key is active and not revoked
  2. Rotate Key if Compromised

    • Generate new key in dashboard
    • Update secret manager
    • Restart pods
    kubectl rollout restart deployment/juicebox-integration
    
  3. Verify Recovery

    • Check health endpoint
    • Monitor error rate

### Rate Limit Response
```markdown
## When Rate Limited

1. **Check Current Usage**
   ```bash
   curl -H "Authorization: Bearer $JUICEBOX_API_KEY" \
     https://api.juicebox.ai/v1/usage
  1. Immediate Mitigation

    • Enable aggressive caching
    • Reduce request rate
    kubectl set env deployment/juicebox-integration JUICEBOX_RATE_LIMIT=10
    
  2. If Quota Exhausted

    • Contact Juicebox support for temporary increase
    • Implement request queuing
  3. Long-term Fix

    • Review usage patterns
    • Implement better caching
    • Consider plan upgrade

### Timeout Response
```markdown
## When Requests Timeout

1. **Check Network**
   ```bash
   # DNS resolution
   nslookup api.juicebox.ai

   # Connectivity
   curl -v --connect-timeout 5 https://api.juicebox.ai/v1/health
  1. Check Load

    • Review query complexity
    • Check for unusually large requests
  2. Increase Timeout

    kubectl set env deployment/juicebox-integration JUICEBOX_TIMEOUT=60000
    
  3. Implement Circuit Breaker

    • Enable circuit breaker if repeated timeouts
    • Serve cached/fallback data

## Incident Communication Template

```markdown
## Incident Report Template

**Incident ID:** INC-YYYY-MM-DD-XXX
**Status:** Investigating | Identified | Monitoring | Resolved
**Severity:** P1 | P2 | P3 | P4
**Start Time:** YYYY-MM-DD HH:MM UTC
**End Time:** (when resolved)

### Summary
[Brief description of the incident]

### Impact
- Users affected: [number/percentage]
- Features affected: [list]
- Duration: [time]

### Timeline
- HH:MM - Incident detected
- HH:MM - Investigation started
- HH:MM - Root cause identified
- HH:MM - Mitigation applied
- HH:MM - Incident resolved

### Root Cause
[Description of what caused the incident]

### Resolution
[What was done to fix it]

### Action Items
- [ ] Action 1 (Owner, Due Date)
- [ ] Action 2 (Owner, Due Date)

On-Call Checklist

## On-Call Handoff Checklist

### Before Shift
- [ ] Access to all monitoring dashboards
- [ ] VPN/access to production systems
- [ ] Runbook bookmarked
- [ ] Escalation contacts available

### During Shift
- [ ] Check dashboards every 30 min
- [ ] Respond to alerts within SLA
- [ ] Document all incidents
- [ ] Escalate P1/P2 immediately

### End of Shift
- [ ] Handoff open incidents
- [ ] Update incident log
- [ ] Brief incoming on-call

Output

  • Diagnostic scripts
  • Response procedures
  • Communication templates
  • On-call checklists

Resources

Next Steps

After incident, see juicebox-data-handling for data management.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/juicebox-incident-response-runbook-mmh8qqr9/download' --output '.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md.part' && mv '.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md.part' '.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Read, Write, Edit, Bash(kubectl:*), Bash(curl:*)

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md' && test -s '.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/juicebox-incident-runbook' && cp -R '.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9' '.claude/skills/juicebox-incident-runbook'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9'

openskills read 'juicebox-incident-response-runbook-mmh8qqr9'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills