Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Master on-call shift handoffs with context transfer, escalation procedures, and documentation. Use when transitioning on-call responsibilities, documenting shift summaries, or improving on-call processes.
.claude/skills/dicklesworthstone-on-call-handoff-patterns/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-21 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 117% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 143% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 119% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 138% | 0% |
Effective patterns for on-call shift transitions, ensuring continuity, context transfer, and reliable incident response across shifts.
| Component | Purpose | | -------------------------- | ----------------------- | | Active Incidents | What's currently broken | | Ongoing Investigations | Issues being debugged | | Recent Changes | Deployments, configs | | Known Issues | Workarounds in place | | Upcoming Events | Maintenance, releases |
Recommended: 30 min overlap between shifts
Outgoing:
├── 15 min: Write handoff document
└── 15 min: Sync call with incoming
Incoming:
├── 15 min: Review handoff document
├── 15 min: Sync call with outgoing
└── 5 min: Verify alerting setup`markdown# On-Call Handoff: Platform Team **Outgoing**: @alice (2024-01-15 to 2024-01-22) **Incoming**: @bob (2024-01-22 to 2024-01-29) **Handoff Time**: 2024-01-22 09:00 UTC --- ## 🔴 Active Incidents ### None currently active No active incidents at handoff time. --- ## 🟡 Ongoing Investigations ### 1. Intermittent API Timeouts (ENG-1234) **Status**: Investigating **Started**: 2024-01-20 **Impact**: ~0.1% of requests timing out **Context**: - Timeouts correlate with database backup window (02:00-03:00 UTC) - Suspect backup process causing lock contention - Added extra logging in PR #567 (deployed 01/21) **Next Steps**: - [ ] Review new logs after tonight's backup - [ ] Consider moving backup window if confirmed **Resources**: - Dashboard: [API Latency](https://grafana/d/api-latency) - Thread: #platform-eng (01/20, 14:32) --- ### 2. Memory Growth in Auth Service (ENG-1235) **Status**: Monitoring **Started**: 2024-01-18 **Impact**: None yet (proactive) **Context**: - Memory usage growing ~5% per day - No memory leak found in profiling - Suspect connection pool not releasing properly **Next Steps**: - [ ] Review heap dump from 01/21 - [ ] Consider restart if usage > 80% **Resources**: - Dashboard: [Auth Service Memory](https://grafana/d/auth-memory) - Analysis doc: [Memory Investigation](https://docs/eng-1235) --- ## 🟢 Resolved This Shift ### Payment Service Outage (2024-01-19) - **Duration**: 23 minutes - **Root Cause**: Database connection exhaustion - **Resolution**: Rolled back v2.3.4, increased pool size - **Postmortem**: [POSTMORTEM-89](https://docs/postmortem-89) - **Follow-up tickets**: ENG-1230, ENG-1231 --- ## 📋 Recent Changes ### Deployments | Service | Version | Time | Notes | | ------------ | ------- | ----------- | -------------------------- | | api-gateway | v3.2.1 | 01/21 14:00 | Bug fix for header parsing | | user-service | v2.8.0 | 01/20 10:00 | New profile features | | auth-service | v4.1.2 | 01/19 16:00 | Security patch | ### Configuration Changes - 01/21: Increased API rate limit from 1000 to 1500 RPS - 01/20: Updated database connection pool max from 50 to 75 ### Infrastructure - 01/20: Added 2 nodes to Kubernetes cluster - 01/19: Upgraded Redis from 6.2 to 7.0 --- ## ⚠️ Known Issues & Workarounds ### 1. Slow Dashboard Loading **Issue**: Grafana dashboards slow on Monday mornings **Workaround**: Wait 5 min after 08:00 UTC for cache warm-up **Ticket**: OPS-456 (P3) ### 2. Flaky Integration Test **Issue**: `test_payment_flow` fails intermittently in CI **Workaround**: Re-run failed job (usually passes on retry) **Ticket**: ENG-1200 (P2) --- ## 📅 Upcoming Events | Date | Event | Impact | Contact | | ----------- | -------------------- | ------------------- | ------------- | | 01/23 02:00 | Database maintenance | 5 min read-only | @dba-team | | 01/24 14:00 | Major release v5.0 | Monitor closely | @release-team | | 01/25 | Marketing campaign | 2x traffic expected | @platform | --- ## 📞 Escalation Reminders | Issue Type | First Escalation | Second Escalation | | --------------- | -------------------- | ----------------- | | Payment issues | @payments-oncall | @payments-manager | | Auth issues | @auth-oncall | @security-team | | Database issues | @dba-team | @infra-manager | | Unknown/severe | @engineering-manager | @vp-engineering | --- ## 🔧 Quick Reference ### Common Commands
kubectl get pods -A | grep -v Running
kubectl get events --sort-by='.lastTimestamp' | tail -20
psql -c "SELECT count() FROM pg_stat_activity;"
redis-cli FLUSHDB
`### Template 2: Quick Handoff (Async)
I'll be available on Slack until 17:00 today.
`### Template 3: Incident Handoff (Mid-Incident)
Incident Start: 2024-01-22 08:15 UTC Current Status: Mitigating Severity: SEV2
Incoming on-call (@bob) - Please confirm you have:
## Handoff Sync Meeting
### Agenda (15 minutes)
## On-Call Best Practices
### Before Your Shift
### During Your Shift
### After Your Shift
## Escalation Guidelines
### When to Escalate
## Best Practices
### Do's
- **Document everything** - Future you will thank you
- **Escalate early** - Better safe than sorry
- **Take breaks** - Alert fatigue is real
- **Keep handoffs synchronous** - Async loses context
- **Test your setup** - Before incidents, not during
### Don'ts
- **Don't skip handoffs** - Context loss causes incidents
- **Don't hero** - Escalate when needed
- **Don't ignore alerts** - Even if they seem minor
- **Don't work sick** - Swap shifts instead
- **Don't disappear** - Stay reachable during shift
## Resources
- [Google SRE - Being On-Call](https://sre.google/sre-book/being-on-call/)
- [PagerDuty On-Call Guide](https://www.pagerduty.com/resources/learn/on-call-management/)
- [Increment On-Call Issue](https://increment.com/on-call/)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | fail→pass | 15,786 | 6,670 | -58% | 1 | 1 | 0% | 2,387 | 4,468 | +87% | 0 | 0 | — |
case-01 | fail→fail | 10,809 | 26,022 | +141% | 1 | 1 | 0% | 1,938 | 5,758 | +197% | 0 | 0 | — |
case-02 | fail→fail | 5,249 | 4,697 | -11% | 1 | 1 | 0% | 954 | 4,043 | +324% | 0 | 0 | — |
case-03 | pass→pass | 20,091 | 16,968 | -16% | 1 | 1 | 0% | 3,044 | 5,832 | +92% | 0 | 0 | — |
case-04 | pass→pass | 9,102 | 9,025 | -1% | 1 | 1 | 0% | 1,931 | 5,050 | +162% | 0 | 0 | — |
case-05 | pass→pass | 19,860 | 22,846 | +15% | 1 | 1 | 0% | 3,396 | 7,028 | +107% | 0 | 0 | — |
case-06 | fail→pass | 16,184 | 12,416 | -23% | 1 | 1 | 0% | 2,453 | 5,323 | +117% | 0 | 0 | — |
case-07 | pass→pass | 12,866 | 16,689 | +30% | 1 | 1 | 0% | 1,953 | 5,610 | +187% | 0 | 0 | — |
case-08 | fail→fail | 10,662 | 12,508 | +17% | 1 | 1 | 0% | 1,658 | 5,463 | +229% | 0 | 0 | — |
case-09 | fail→pass | 14,465 | 12,448 | -14% | 1 | 1 | 0% | 2,108 | 5,120 | +143% | 0 | 0 | — |
case-10 | pass→pass | 14,837 | 14,800 | -0% | 1 | 1 | 0% | 2,245 | 5,412 | +141% | 0 | 0 | — |
case-15 | fail→pass | 14,112 | 9,098 | -36% | 1 | 1 | 0% | 2,131 | 4,669 | +119% | 0 | 0 | — |
case-11 | pass→pass | 19,873 | 16,975 | -15% | 1 | 1 | 0% | 2,875 | 5,706 | +98% | 0 | 0 | — |
case-12 | pass→pass | 16,229 | 11,890 | -27% | 1 | 1 | 0% | 2,305 | 4,905 | +113% | 0 | 0 | — |
case-13 | pass→pass | 11,716 | 3,976 | -66% | 1 | 1 | 0% | 1,923 | 3,777 | +96% | 0 | 0 | — |
case-14 | pass→pass | 14,747 | 17,757 | +20% | 1 | 1 | 0% | 2,359 | 5,538 | +135% | 0 | 0 | — |
case-16 | pass→pass | 11,850 | 13,269 | +12% | 1 | 1 | 0% | 1,787 | 5,249 | +194% | 0 | 0 | — |
case-17 | fail→pass | 11,281 | 8,213 | -27% | 1 | 1 | 0% | 1,955 | 4,644 | +138% | 0 | 0 | — |
case-18 | pass→pass | 13,834 | 20,328 | +47% | 1 | 1 | 0% | 2,395 | 5,777 | +141% | 0 | 0 | — |
case-19 | fail→pass | 14,782 | 13,310 | -10% | 1 | 1 | 0% | 2,393 | 5,445 | +128% | 0 | 0 | — |
case-20 | fail→pass | 15,500 | 17,637 | +14% | 1 | 1 | 0% | 2,406 | 6,007 | +150% | 0 | 0 | — |
case-22 | fail→pass | 13,114 | 8,563 | -35% | 1 | 1 | 0% | 1,871 | 4,394 | +135% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.