Guide d'intervention incidents Juicebox

VérifiéPrudence

Procédures standardisées pour gérer les incidents de production liés à Juicebox. Inclut diagnostics rapides, arbre de décision de triage et procédures de réponse par type d'incident.

Spar Skills Guide Bot
DevOpsIntermédiaire
08/03/2026
Claude Code
#incident-response#runbook#kubernetes#observability#juicebox

Recommandé pour

Synthèse automatique

Fournit un runbook de réponse aux incidents, étape par étape, pour les défaillances de l'intégration Juicebox : classification de sévérité, triage, diagnostics et procédures de rétablissement.

Points forts

  • Matrice de sévérité P1 à P4 avec délais de réponse cibles
  • Script de diagnostic prêt à copier couvrant la page de statut, l'endpoint de santé, les logs récents et le taux d'erreur Prometheus
  • Arbre de décision qui oriente les cas 401, 429 et timeouts vers la procédure dédiée
  • Commandes de remédiation concrètes : bascule en mode fallback, rotation de clé API, redémarrage des pods

Limites

  • Suppose un déploiement précis (deployment kubectl `juicebox-integration`, health sur localhost:8080, Prometheus sur 9090) qu'il faut adapter
  • Seules les procédures panne externe, authentification et rate limit sont détaillées ; les branches timeout et erreur applicative sont annoncées mais pas rédigées
  • Aucune action n'est automatisée : l'opérateur doit lancer et interpréter chaque commande lui-même
Quand l'utiliser

À utiliser lorsqu'une intégration Juicebox est en panne en production et qu'il faut un chemin de triage et de mitigation reproductible sous pression temporelle.

Quand l'éviter

À éviter pour concevoir la résilience d'un système ou pour d'autres intégrations que Juicebox : les endpoints et les procédures sont spécifiques au produit.

Analyse de sécurité

Prudence
Score qualité85/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.

Points d'attention
  • •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.
Comment cette analyse est faite

Exemples

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.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

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. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Edit, Bash(kubectl:*), Bash(curl:*)

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

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 doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/juicebox-incident-response-runbook-mmh8qqr9'

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

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/juicebox-incident-response-runbook-mmh8qqr9/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires