design-on-call-rotation
关于
This skill helps developers design sustainable on-call rotations with balanced schedules, clear escalation policies, and fatigue management. It's useful when setting up on-call for the first time, scaling a team, or addressing burnout and handoff problems. The tool focuses on maintaining incident coverage while minimizing engineer exhaustion.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/design-on-call-rotation在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
name: design-on-call-rotation description: > Diseña rotaciones de guardia sostenibles con horarios equilibrados, políticas de escalada claras, gestión de la fatiga y procedimientos de traspaso. Minimiza el agotamiento mientras se mantiene la cobertura de respuesta a incidentes. Útil al configurar la guardia por primera vez, al escalar un equipo de 2-3 a 5+ ingenieros, al abordar el agotamiento de la guardia o la fatiga de alertas, al mejorar los tiempos de respuesta a incidentes, o después de que un post-mortem identifique problemas de traspaso. locale: es source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: observability complexity: basic language: multi tags: on-call, rotation, escalation, fatigue-management, handoff
Diseñar la Rotación de Guardia
Crea un horario de guardia sostenible que equilibre la cobertura con el bienestar del ingeniero.
Cuándo Usar
- Configurar la guardia por primera vez
- Escalar el equipo de 2-3 a 5+ ingenieros
- Abordar el agotamiento de la guardia o la fatiga de alertas
- Mejorar los tiempos de respuesta a incidentes
- Después de que un post-mortem identifique problemas de traspaso
Entradas
- Requerido: Tamaño del equipo y zonas horarias
- Requerido: Requisitos de SLA del servicio (tiempo de respuesta, horas de cobertura)
- Opcional: Volumen histórico de incidentes y temporización
- Opcional: Presupuesto para compensación de guardia
- Opcional: Herramienta de guardia existente (PagerDuty, Opsgenie)
Procedimiento
Paso 1: Definir el Horario de Rotación
Elige la duración de la rotación según el tamaño del equipo:
## Rotation Models
### Weekly Rotation (5+ person team)
- **Length**: 7 days (Monday 09:00 to Monday 09:00)
- **Pros**: Predictable, easy to plan around
- **Cons**: Whole week disrupted if alerts are frequent
### 12-Hour Split (3-4 person team)
- **Day shift**: 08:00-20:00 local time
- **Night shift**: 20:00-08:00 local time
- **Pros**: Shared burden, night coverage paid differently
- **Cons**: More handoffs, coordination needed
### Follow-the-Sun (Global team)
- **APAC**: 00:00-08:00 UTC
- **EMEA**: 08:00-16:00 UTC
- **Americas**: 16:00-00:00 UTC
- **Pros**: No night shifts, timezone-aligned
- **Cons**: Requires distributed team
### Two-Tier (Senior/Junior split)
- **Primary**: Junior engineers (first responder)
- **Secondary**: Senior engineers (escalation)
- **Pros**: Training opportunity, lighter senior load
- **Cons**: Risk of junior burnout
Ejemplo de horario para un equipo de 5 personas:
Week 1: Alice (Primary), Bob (Secondary)
Week 2: Charlie (Primary), Diana (Secondary)
Week 3: Eve (Primary), Alice (Secondary)
Week 4: Bob (Primary), Charlie (Secondary)
Week 5: Diana (Primary), Eve (Secondary)
Esperado: Horario que rota equitativamente y proporciona cobertura 24/7.
En caso de fallo: Si existen lagunas de cobertura, agregar más ingenieros o reducir el SLA a solo horas de oficina.
Paso 2: Configurar la Política de Escalada
Configura la escalada por niveles en PagerDuty/Opsgenie:
# PagerDuty escalation policy (YAML representation)
escalation_policy:
name: "Production Services"
repeat_enabled: true
num_loops: 3
escalation_rules:
- id: primary
escalation_delay_in_minutes: 0
targets:
- type: schedule
id: primary_on_call_schedule
- id: secondary
escalation_delay_in_minutes: 15
targets:
- type: schedule
id: secondary_on_call_schedule
- id: manager
escalation_delay_in_minutes: 30
targets:
- type: user
id: engineering_manager
Crea un diagrama de flujo de escalada:
Alert Fires
↓
Primary On-Call Paged
↓
Wait 15 minutes (no ack)
↓
Secondary On-Call Paged
↓
Wait 15 minutes (no ack)
↓
Manager Paged
↓
Repeat cycle (max 3 times)
Esperado: Ruta de escalada clara con retrasos razonables.
En caso de fallo: Si las escaladas se activan con demasiada frecuencia, acortar las ventanas de reconocimiento o verificar la calidad de las alertas.
Paso 3: Definir el Procedimiento de Traspaso
Crea una lista de verificación estructurada de traspaso:
## On-Call Handoff Checklist
### Outgoing On-Call
- [ ] Update incident log with any ongoing issues
- [ ] Document any workarounds or known issues
- [ ] Share any alerts that are "noisy but safe to ignore" temporarily
- [ ] Note any upcoming deploys or maintenance windows
- [ ] Provide context on any flapping alerts
### Incoming On-Call
- [ ] Review incident log from previous shift
- [ ] Check for any ongoing incidents
- [ ] Verify PagerDuty/Opsgenie has correct contact info
- [ ] Test alert delivery (send test page to yourself)
- [ ] Review recent deploys and release notes
- [ ] Check capacity metrics for any concerning trends
### Handoff Meeting (15 min)
- Review any incidents from past week
- Discuss any changes to systems or runbooks
- Questions and clarifications
Automatiza los recordatorios de traspaso:
# Slack reminder script
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "#on-call",
"text": "On-call handoff in 1 hour. Outgoing: @alice, Incoming: @bob. Please use the handoff checklist: https://wiki.company.com/oncall-handoff"
}'
Esperado: Transferencia fluida de conocimiento, sin pérdida de información entre turnos.
En caso de fallo: Si los incidentes se repiten porque el ingeniero entrante no sabía sobre las soluciones temporales, hacer el traspaso obligatorio.
Paso 4: Implementar la Gestión de la Fatiga
Establece reglas para prevenir el agotamiento:
## Fatigue Prevention Rules
### Alert Volume Limits
- **Threshold**: Max 5 pages per night (22:00-06:00)
- **Action**: If exceeded, trigger incident review next day
- **Goal**: Reduce noisy alerts that disrupt sleep
### Time Off After Major Incident
- **Rule**: If on-call handles P1 incident >2 hours overnight, they get comp time
- **Amount**: Equal to incident duration (e.g., 3-hour incident = 3 hours off)
- **Scheduling**: Must be taken within 2 weeks
### Maximum Consecutive Weeks
- **Limit**: No more than 2 consecutive weeks on-call
- **Reason**: Prevents exhaustion from extended coverage
### Minimum Rest Between Rotations
- **Cooldown**: At least 2 weeks between primary rotations
- **Exception**: Emergency coverage (requires manager approval)
### Vacation Protection
- **Rule**: No on-call during scheduled vacation
- **Process**: Mark as "Out of Office" in PagerDuty 2 weeks in advance
- **Swap**: Coordinate swap with team, update schedule
Rastrear las métricas de fatiga de alertas:
# Alerts per on-call engineer per week
count(ALERTS{alertstate="firing"}) by (oncall_engineer)
# Nighttime pages (22:00-06:00 local)
count(ALERTS{alertstate="firing", hour_of_day>=22 or hour_of_day<6})
# Time to acknowledge (should be <5 min during business hours)
histogram_quantile(0.95, rate(alert_ack_duration_seconds_bucket[7d]))
Esperado: La carga de guardia es sostenible, los ingenieros no están crónicamente agotados.
En caso de fallo: Si se produce el agotamiento a pesar de las reglas, reducir el volumen de alertas o contratar más ingenieros.
Paso 5: Documentar los Manuales y los Contactos de Escalada
Crea una guía de referencia rápida para la guardia:
# On-Call Quick Reference
## Emergency Contacts
- **Engineering Manager**: Alice Smith, +1-555-0100
- **CTO**: Bob Johnson, +1-555-0200
- **Security Team**: [email protected], +1-555-0300
- **Cloud Provider Support**: AWS Support Case Portal
## Common Runbooks
- [Database Connection Pool Exhaustion](https://wiki/runbook-db-pool)
- [High API Latency](https://wiki/runbook-api-latency)
- [Disk Space Full](https://wiki/runbook-disk-full)
- [SSL Certificate Expiration](https://wiki/runbook-ssl-renewal)
## Access & Credentials
- **Production AWS**: SSO via company.okta.com
- **Kubernetes**: `kubectl --context production`
- **Database**: Read-only access via Bastion host
- **Secrets**: 1Password vault "On-Call Production"
## Escalation Decision Tree
- **P1 (Service Down)**: Immediate response, escalate to manager after 30min
- **P2 (Degraded)**: Response within 15min, escalate if not resolved in 1 hour
- **P3 (Warning)**: Acknowledge, resolve during business hours
- **Security Incident**: Immediately escalate to Security Team, don't investigate alone
Esperado: El ingeniero de guardia puede encontrar cualquier información necesaria en menos de 2 minutos.
En caso de fallo: Si los ingenieros preguntan repetidamente "¿dónde está X?", centralizar la documentación.
Paso 6: Programar Retrospectivas Regulares de Guardia
Revisa la experiencia de guardia mensualmente:
## On-Call Retrospective Agenda (Monthly)
### Metrics Review (15 min)
- Total alerts: [X] (target: <50/week)
- Nighttime pages: [Y] (target: <5/week)
- Mean time to acknowledge: [Z] (target: <5 min)
- Incidents by severity: P1: [A], P2: [B], P3: [C]
### Qualitative Feedback (20 min)
- What was the most challenging incident?
- Which alerts were noisy/low-value?
- Were runbooks helpful? Which need updates?
- Any gaps in monitoring or alerting?
### Action Items (10 min)
- Fix noisy alerts identified
- Update runbooks that were incomplete
- Adjust rotation schedule if needed
- Plan alert tuning work
### Recognition (5 min)
- Shout-outs for excellent incident response
- Share learnings from interesting incidents
Rastrea la mejora a lo largo del tiempo:
# Generate monthly on-call report
cat > oncall_report_2025-02.md <<EOF
# On-Call Report: February 2025
## Key Metrics
- **Total Alerts**: 38 (down from 52 in January)
- **Nighttime Pages**: 4 (within target)
- **P1 Incidents**: 1 (database outage, 45min MTTR)
- **P2 Incidents**: 3 (all resolved <1 hour)
## Improvements Made
- Tuned CPU alert threshold (reduced false positives by 40%)
- Added runbook for Redis cache failures
- Implemented log rotation (prevented disk full alerts)
## Upcoming Changes
- Migrate to follow-the-sun rotation (Q2)
- Add Slack alert integration (in progress)
EOF
Esperado: La experiencia de guardia mejora mes a mes, el volumen de alertas disminuye.
En caso de fallo: Si las métricas no mejoran, escalar al liderazgo. Es posible que sea necesario pausar el trabajo de características para solucionar los problemas operacionales.
Validación
- El horario de rotación cubre todas las horas requeridas (24/7 u horas de oficina)
- La política de escalada probada (enviar alertas de prueba)
- El procedimiento de traspaso documentado y compartido con el equipo
- Las reglas de gestión de la fatiga codificadas
- La guía de referencia de guardia completa y accesible
- Las retrospectivas mensuales programadas
- La compensación de guardia aprobada (si aplica)
Errores Comunes
- Muy pocos ingenieros: 3 o menos significa guardia cada 2-3 semanas, insostenible. Mínimo 5 para rotación semanal.
- Sin retrasos de escalada: La escalada inmediata al gerente desperdicia el tiempo senior. Dar al guardia principal 15 minutos para responder.
- Omitir los traspasos: La falta de transferencia de contexto lleva a errores repetidos. Hacer los traspasos obligatorios.
- Ignorar la fatiga de alertas: Si los ingenieros ignoran las alertas por el ruido, los problemas críticos se pierden. Ajustar agresivamente.
- Sin compensación: La guardia sin pago ni tiempo libre genera resentimiento. Presupuestar para ello.
Habilidades Relacionadas
configure-alerting-rules- reducir el ruido de alertas que causa fatigawrite-incident-runbook- crear manuales referenciados durante los turnos de guardia
GitHub 仓库
相关推荐技能
executing-plans
设计该Skill用于当开发者提供完整实施计划时,以受控批次方式执行代码实现。它会先审阅计划并提出疑问,然后分批次执行任务(默认每批3个任务),并在批次间暂停等待审查。关键特性包括分批次执行、内置检查点和架构师审查机制,确保复杂系统实现的可控性。
requesting-code-review
设计该Skill可在完成任务、实现主要功能或合并代码前自动调度代码审查子代理,确保实现符合需求和计划。它支持通过指定git SHA范围进行精准的代码变更审查,帮助开发者在关键节点及时发现潜在问题。核心原则是"早审查、勤审查",适用于开发流程的各个关键阶段。
connect-mcp-server
设计这个Skill指导开发者如何将MCP服务器连接到Claude Code,支持HTTP、stdio和SSE三种传输协议。它涵盖了从安装配置到认证安全的完整流程,适用于集成GitHub、Notion、数据库等外部服务。当开发者需要添加集成、配置外部工具或提及MCP相关功能时,这个Skill能提供实用的操作指南。
web-cli-teleport
设计该Skill帮助开发者根据任务特性选择Claude Code的Web或CLI界面,并指导如何在两种环境间无缝迁移会话。它能分析任务复杂度、迭代需求等要素,推荐最优工作界面和工作流。关键特性包括会话状态管理、环境切换指导和上下文优化建议。
