← Back to all products

On-Call Management Kit

$29

PagerDuty/OpsGenie configs, escalation policies, rotation schedules, and incident communication templates.

📁 29 files
YAMLMarkdownPythonTerraform

📄 Product Preview

Try the interactive reader and demo tools below, or get the full product with all content unlocked.

📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample

📁 File Structure 29 files

on-call-management-kit/ ├── LICENSE ├── README.md ├── configs/ │ ├── opsgenie/ │ │ ├── escalation_policies.yaml │ │ ├── routing_rules.yaml │ │ └── schedules.yaml │ └── pagerduty/ │ ├── alert_routing.yaml │ ├── escalation_policies.yaml │ └── services.yaml ├── free-sample.zip ├── guide/ │ ├── 01-building-an-on-call-program.md │ ├── 02-configuration-as-code.md │ ├── 03-rotation-generation-and-coverage.md │ ├── 04-incident-communication-templates.md │ └── 05-alert-hygiene-and-burnout-prevention.md ├── guides/ │ ├── alert_hygiene.md │ └── healthy_oncall_program.md ├── index.html ├── src/ │ ├── __pycache__/ │ │ ├── escalation_validator.cpython-312.pyc │ │ ├── rotation_generator.cpython-312.pyc │ │ └── schedule_exporter.cpython-312.pyc │ ├── escalation_validator.py │ ├── rotation_generator.py │ └── schedule_exporter.py └── templates/ ├── incident_comms_sev1.md ├── incident_comms_sev2.md ├── incident_comms_sev3.md ├── on_call_handoff_checklist.md ├── stakeholder_comms.md └── status_page_update.md

📖 Documentation Preview README excerpt

On-Call Management Kit

A complete on-call operations toolkit: configuration-as-code for PagerDuty and OpsGenie, Python rotation generators, incident communication templates, and guides for building a sustainable on-call program.

What's Inside

This kit gives you everything needed to stand up or mature an on-call program:

  • PagerDuty configuration-as-code — Escalation policies, service definitions, and alert routing rules in YAML ready for Terraform/Pulumi import or API-driven provisioning
  • OpsGenie configuration-as-code — Equivalent configs for OpsGenie including schedules, routing rules, and escalation policies
  • Python rotation tools (stdlib only) — Generate rotation calendars, validate escalation coverage gaps, and export schedules to iCal format
  • Incident communication templates — Pre-written markdown templates for status page updates, stakeholder communications, and severity-specific incident comms
  • On-call handoff checklist — Structured handoff procedure to reduce context loss between rotations
  • Healthy on-call program guide — Comprehensive guide covering toil budgets, alert hygiene, compensation models, and burnout prevention

File Tree


on-call-management-kit/
├── README.md
├── LICENSE
├── src/
│   ├── rotation_generator.py      # Generate follow-the-sun & weekly rotation calendars
│   ├── escalation_validator.py    # Validate no coverage gaps in escalation chains
│   └── schedule_exporter.py       # Export schedules to iCal (.ics) format
├── configs/
│   ├── pagerduty/
│   │   ├── escalation_policies.yaml   # Multi-tier escalation with timeout configs
│   │   ├── services.yaml              # Service catalog with severity mappings
│   │   └── alert_routing.yaml         # Event rules and routing by source/severity
│   └── opsgenie/
│       ├── escalation_policies.yaml   # OpsGenie escalation equivalents
│       ├── schedules.yaml             # Follow-the-sun + weekly rotation schedules
│       └── routing_rules.yaml         # Alert routing by tags, priority, source
├── templates/
│   ├── status_page_update.md          # Public status page update templates
│   ├── stakeholder_comms.md           # Internal stakeholder notification templates
│   ├── incident_comms_sev1.md         # SEV1 critical incident communications
│   ├── incident_comms_sev2.md         # SEV2 major incident communications
│   ├── incident_comms_sev3.md         # SEV3 minor incident communications
│   └── on_call_handoff_checklist.md   # Rotation handoff procedure
└── guides/
    ├── healthy_oncall_program.md      # Building a sustainable on-call culture
    └── alert_hygiene.md               # Alert tuning, deduplication, and fatigue prevention

Quick Start

Generate a rotation calendar


from src.rotation_generator import RotationGenerator, RotationConfig

config = RotationConfig(
    team_members=["alice", "bob", "carol", "dave"],
    rotation_type="weekly",
    start_date="2025-01-06",
    weeks_to_generate=12,
    handoff_day="monday",
    handoff_hour=9,

*... continues with setup instructions, usage examples, and more.*

📄 Code Sample .py preview

src/escalation_validator.py """ Escalation Policy Validator Validates that escalation policies provide complete 24/7 coverage with no gaps. Catches common misconfigurations: - Time windows with no responder assigned - Circular escalation loops that never reach a human - Missing timeout configurations between escalation levels - Teams with too few members for sustainable coverage - Escalation chains that dead-end without a catch-all Reads YAML configuration files (PagerDuty or OpsGenie format) and produces a structured validation report identifying all issues by severity. """ from __future__ import annotations import json import logging from dataclasses import dataclass, field from datetime import time, timedelta from enum import Enum from pathlib import Path from typing import Any, Optional # Using a simple YAML-subset parser since we can't use PyYAML # This handles the specific YAML structures in our config files import re logger = logging.getLogger(__name__) class Severity(Enum): """Validation finding severity levels.""" CRITICAL = "critical" # Will cause pages to be dropped WARNING = "warning" # May cause issues under certain conditions INFO = "info" # Suggestion for improvement @dataclass class CoverageGap: """Represents a time window with no on-call responder. A coverage gap means that if an incident fires during this window, nobody will be paged. This is always a critical finding. """ start_hour: int start_minute: int end_hour: int end_minute: int # ... 524 more lines ...
Buy Now — $29 Back to Products