On-Call Practices skill for Codex

Rotations people can sustain and pages that land. Codex designs on-call from the team's real size, time zones and paging history: rotation shape, escalation policy with acknowledgement timeouts, a handoff template and load metrics with thresholds that trigger action. It can express schedules in PagerDuty Terraform, but treats rotation, compensation and wellbeing rules as proposals for humans to approve.

  • Observability & SRE
  • $on-call-practices
  • 168 lines
  • 2 files
  • ~1,700 tokens
  • MIT
  • Updated

Install

curl -fsSL codexskills.dev/install.sh \  | sh -s -- on-call-practices

Installs to ~/.agents/skills/on-call-practices/ for every project on this machine.

104-line POSIX script. No sudo, no telemetry. Read install.sh

Use it in Codex

Start a prompt with $on-call-practices, or pick it from /skills. You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.

What Codex reads before loading it

Designs sustainable on-call - rotation shapes (weekly, follow-the-sun, primary and secondary), escalation policies with acknowledgement timeouts, handoff notes, paging hygiene, load metrics, onboarding and shadowing, and compensation and wellbeing guardrails - and implements them in PagerDuty, incident.io, Grafana IRM or similar tools as code where possible. Use when setting up a first on-call rotation, when on-call is burning people out, when writing an escalation policy or handoff template, or when reviewing paging load.

Use it when

  • A team is starting its first on-call rotation
  • On-call load or after-hours pages are causing burnout
  • Escalation policies or handoffs are missing or informal
  • New engineers need an onboarding path into on-call

Use something else when

How to check the result

A test page through each schedule reaches the right person by phone within the ack timeout and escalates when ignored, and the coverage view shows no gaps for the next eight weeks.

The mistake it prevents

Running a one-in-three rotation with push-only notifications and no load tracking, then wondering why pages go unacknowledged.

~/.agents/skills/on-call-practices/SKILL.md

--- name: on-call-practices description: Designs sustainable on-call - rotation shapes (weekly, follow-the-sun, primary and secondary), escalation policies with acknowledgement timeouts,… license: MIT ---

Done well means: a page always reaches a prepared human who can act within minutes, nobody carries an unsustainable load, every shift ends with a handoff that transfers context, and on-call pain feeds back into engineering priorities.

Inspect first

  1. Read AGENTS.md, existing runbooks and the paging tool configuration (Terraform for pagerduty_schedule / pagerduty_escalation_policy, incident.io or Grafana IRM config, Alertmanager receivers).
  2. Collect facts: team size and time zones, services covered, pages per week for the last quarter, after-hours share, mean time to acknowledge, and who actually got paged.
  3. Ask about constraints: labour rules and compensation policy for the region, existing support contracts (customer-facing response times), and whether a NOC or support tier triages before engineering.

Rotation and compensation changes affect people’s lives and contracts; Codex proposes, humans decide. Never apply schedule changes to the paging tool without explicit confirmation of the exact change.

Rotation shape

Team situationRotationNotes
4-5 engineers, one time zoneWeekly primary, previous week’s primary as secondaryMinimum viable; watch load closely
6-8 engineers, one time zoneWeekly primary plus separate secondaryEach person on primary about once every 6-8 weeks
Two regions 6+ hours apartFollow-the-sun, 12 h shifts eachRemoves most night pages; needs strong handoffs
Fewer than 4 peopleBusiness hours only plus best-effort, or share a rotation with another teamA 1-in-3 rotation burns people out
Many small servicesTeam-of-teams rotation with clear service ownership routingAvoid a single “platform” person paged for everything

Defaults: hand off mid-week (Tuesday or Wednesday morning) rather than Monday, so the weekend is never the first or last day of a shift, and so handoff happens with everyone at work. Nobody should be on call for more than one week in four for sustained periods.

Escalation policy

Level 1: primary on-call           notify immediately (push + SMS + phone)
Level 2: secondary on-call         if not acknowledged in 5 minutes
Level 3: engineering manager       if not acknowledged in 15 minutes
Repeat policy: 2 times, then notify incident commander channel
  • Acknowledgement timeout 5 minutes for paging severity; shorter times create false escalations while someone is unlocking a laptop.
  • Low-urgency alerts (tickets) never escalate after hours; they wait for business hours.
  • Test the whole chain quarterly with a scheduled test page.

PagerDuty Terraform sketch:

resource "pagerduty_escalation_policy" "checkout" {
  name      = "Checkout"
  num_loops = 2
  rule {
    escalation_delay_in_minutes = 5
    target {
      type = "schedule_reference"
      id   = pagerduty_schedule.checkout_primary.id
    }
  }
  rule {
    escalation_delay_in_minutes = 10
    target {
      type = "schedule_reference"
      id   = pagerduty_schedule.checkout_secondary.id
    }
  }
}

Check vendor status before investing in a tool: Atlassian is retiring Opsgenie in favour of Jira Service Management and Compass, and Grafana OnCall OSS moved to Grafana IRM.

Before a shift

  • Paging app installed, notification rules tested (phone call, not just push)
  • Laptop, VPN, production access and break-glass credentials work
  • Read the last handoff note and open incidents
  • Know the runbook index and how to declare an incident
  • Know who is secondary and who is the escalation manager
  • Personal plans compatible with 5-minute acknowledgement (or arrange a swap)

Handoff template

## On-call handoff: <team> <date> -> <date>
**Outgoing:** <name>  **Incoming:** <name>

### Open issues
- <alert/incident>: status, next step, ticket link

### Pages this shift
| When | Alert | Real? | Action | Follow-up ticket |
|---|---|---|---|---|

### Changes to watch
- Deploys, migrations, feature flags rolled out, upstream maintenance windows

### Noise to fix
- <alert name>: fired N times, no action needed; ticket <link>

### Notes for incoming
- <anything unusual: customer escalations, risky deploys scheduled>

Hold a 15-minute live handoff when there are open issues; the written note is the record, not a replacement for the conversation.

Measuring load

Track monthly and review in the team’s operations meeting:

MetricHealthyAct when
Pages per shift (week)< 2 incidents per 12 h on duty on averageHigher for two consecutive months
After-hours pagesTrending downAny person woken more than twice a week
Actionable ratio> 80% of pages needed a humanBelow 50%: alert cleanup sprint ($alerting-rules)
Time to acknowledgep90 under 5 minRepeated escalations to secondary
Interrupt work hoursVisible in planningOn-call cannot do any planned work

Rule: the primary on-call does no sprint feature work; their job is pages, tickets from alerts, toil reduction and runbook fixes. Plan capacity accordingly.

Onboarding new people

  1. Read runbooks and recent postmortems for the services covered.
  2. Shadow one full shift (receives pages, does not own them).
  3. Reverse shadow one shift (owns pages, experienced engineer as backup).
  4. Join the rotation. Pair new members with an experienced secondary for the first shift.

Wellbeing and fairness

  • Compensate on-call (time off in lieu or pay) per company policy and local law; flag to the user that HR or legal must confirm the policy, Codex does not decide it.
  • After a night incident, the person paged starts late or takes time off the next day; the secondary covers.
  • Swaps are easy and recorded in the tool, not agreed only in chat.
  • Managers are in the escalation chain and on call for coordination, not as heroes.

Verification

  • A test page sent through each schedule reaches the right person by phone within the timeout, and escalation reaches the secondary when not acknowledged.
  • Schedules have no gaps: check the paging tool’s coverage view for the next 8 weeks.
  • After one month, load metrics are recorded and reviewed in a meeting with actions.

Output

A proposal document: rotation shape and calendar, escalation policy, handoff template, load metrics and thresholds, onboarding steps, open questions for HR/management, and the Terraform or tool configuration diff for review.

Gotchas

  • Push notifications alone fail silently at night (do not disturb); require phone or SMS for high urgency and let people test it.
  • A secondary who is never paged is not practising; occasionally route lower-urgency work to them.
  • Holidays and leave break schedules; set overrides weeks ahead.
  • Rotations that include people without production access produce escalations, not fixes.

What the zip contains

SKILL.md plus the interface file below. Nothing runs on install.

agents/openai.yamlgenerated from this page

Gives the Codex app a display name, a one-line description and a starter prompt for this skill.

interface:
  display_name: "On-Call Practices"
  short_description: "Rotations people can sustain and pages that land"
  default_prompt: "$on-call-practices Design an on-call rotation for a 6-person team split between Berlin and New York"

About this skill

Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.

esc
Just launched

Codex Skills Pro is live

79 premium skills for Codex, each with scripts, references and an evidence report that proves the result.

Bought one by one$882.21
All 79 skills$49
94% off

That's $0.62 a skill, paid once.

Get all 79 for $49Or pick single skills from $4.99 →

Secure checkout by Creem