On Call

作者 incident-ioc8e50a4a7a06無授權條款2 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫今天更新

Who is on call in incident.io and how they get paged: schedules, rotas and shifts, overrides, cover requests, escalation paths, and pages (escalations). Use whenever you're working with any of these in any way, including plain reads ("who's on call tonight?", "when am I next on?") and paging ("page Ava", "ack my page", "has anyone acked?"). Load it before the first schedule, escalation or cover-request tool call: the tools return raw shifts and levels, and this skill says how to read them.

僅含說明DevOps & Cloud
AI 產生的概覽

說明 incident.io 的待命排班、覆寫、代班請求與升級路徑,以及如何讀取和變更它們。

功能
此技能是處理 incident.io 待命資料的參考:排班、輪值、層級、班次、覆寫、代班請求與升級路徑。它說明如何讀取誰在待命、如何解讀無人值班的班次、已停用或無法被呼叫的席位以及升級草稿,並說明如何建立、交換、復原覆寫或發起代班變更。它也涵蓋如何在回覆中準確報告變更與時間。
適用情境
適用於詢問誰在待命、某人下次何時值班或誰會收到呼叫,以及執行放置或移除覆寫、安排交換、發起或回應代班請求、送出升級等操作。應在首次呼叫排班、升級或代班請求工具之前載入。
執行需求
需要存取 incident.io 連線及其待命工具;不附帶指令碼,僅為說明文件。

On-call

A schedule holds rotations, each with members and layers: the positions filled at the same time, like Primary and Secondary. "Primary" names a layer, not a rotation. Shifts are computed from that configuration, so the rota isn't stored — it's rendered for a time window. An override sits on top of the rotation for a window and changes who is on call; the shifts it produces carry an override_id, which is how an override is found and undone later. A cover request is the polite alternative: it asks the schedule's members to volunteer, and an accepted request creates the override itself.

Only native incident.io schedules are visible. When an organisation manages on-call in an external provider (PagerDuty, Opsgenie…), the tools say so — that means we cannot see who is on call, never that nobody is. An organisation that doesn't run on-call in incident.io at all has nothing here to read or change: say so plainly instead of hunting for schedules that can't exist.

How you reach the tools

This section is the only part that depends on where you run. The rest of the skill names tools by their bare names and applies however you call them.

Calling the tools

The tools are on the incident.io connection, called by the names this skill uses.

Reading

  • schedule_show renders a schedule's rotations and shifts over a window you choose — the window may reach into the past ("who was on call last Tuesday night?"), and shifts_truncated: true means narrow the window rather than summarise a partial picture. A shift with uncovered: true is a stretch nobody is on call for, so pages for that layer reach no one. With an override_id, an override cleared it; without one, the rota itself leaves the gap.
  • "Am I on call?" / "when is someone next on?" is one schedule_list call with the user filter — "me" for the asker, a user ID or email for anyone else. Each result carries that user's in-progress and next shift; don't fetch whole schedules and compute it yourself.
  • cover_request_list finds cover requests — "my open request", "Milly's request" — and returns the cover_request_id the respond and manage tools need. It defaults to pending requests; filter by user or schedule_id to narrow.
  • "Who gets paged" is an escalation question, not a rota question — escalation_path_show resolves current on-call at every level, and each level's schedules names the schedules it pages. That is also how to answer "what uses this schedule": check the paths. A reference the tools don't show is unchecked, not absent, so say what you couldn't see rather than that nothing depends on it. A team's path comes from the team: team_show lists the paths it owns. Never pick a path because its name looks like the team's.
  • When you hand someone over as the person to contact, check they can actually be reached: look them up with user_list and include_inactive: true, then read state and seat_type. Without that flag, a deactivated person just doesn't appear. Only an on_call or on_call_responder seat can be paged. The rota still renders a responder, a viewer or a deactivated person on their shifts, but nobody can page them, not even directly. Say so, and check whoever you name as taking over next the same way. A plain "who's on" question doesn't need the check.
  • On a page, a target with not_paged_reason was never paged, whatever else the record shows. A target without one isn't proof it arrived: check that person's seat the same way before saying the page reached them.
  • escalation_create on a path returns a draft (suggestion), not a page. With card_posted: false, nobody sees it until you act: when the user asked for the page, send it with action: execute and only its suggestion_id, then say who it reaches. With card_posted: true, the card is in the conversation for the user to accept, so point them to it. Never call a draft paged.
  • For who is on call for a service or component, resolve it through the catalog first: that walk ends at the right escalation path. A rota is often named for the thing it covers, so when the catalog has no answer, look for a schedule named for X before saying you cannot tell.

Changing cover

An instruction changes the rota now; a request asks people first. "Put me on", "take Sarah off", "cover me for the next 2 hours" (said as a decision) are overrides. "Can someone cover my shift?", "ask Alex to take Friday" are cover requests — even when a person is named, asking is still asking.

Overrides:

  • An override changes who gets paged, immediately and for real. When the user has asked for it and you can tell who covers, which rota, and from when to when, create it and report exactly that — don't ask them to confirm first. Ask first only when the person or the window is ambiguous, or for a swap between unlike shifts (below). Reminders, cancelling the user's own pending request, and reads never need asking.
  • NOBODY clears the layer it's placed on for the window; use it only when asked to leave the rota uncovered. Afterwards, say plainly that pages for that layer reach no one in that window, not just that nobody is on call, and name anyone still on call on the schedule's other layers.
  • A swap is two overrides, one on each shift. When the two shifts are on different layers or differ in length, confirm first, and say what each person ends up with (for example, back-to-back weeks). Otherwise, write both and report both.
  • A schedule with several rotations or layers needs rotation_id and layer_id, or the create is refused. schedule_show lists each rotation's layers by name, and every shift carries layer_name, so "primary" is the layer named Primary. Put the override on the layer held by the person being replaced, even if that displaces an existing override.
  • Creating an override replaces any existing override it overlaps on the same rotation and layer. The create result lists these as displaced_overrides — tell the user who you displaced, and offer to narrow the window if that wasn't intended.
  • To undo one, schedule_override_delete takes the override_id from the create's result or from the shift it produced in schedule_show. Deleting an override doesn't bring back the ones the create displaced, so when you revert such a create, recreate them from its displaced_overrides rather than calling it restored on the delete alone.

Cover requests:

  • Before raising one, or suggesting who to ask, check cover_request_list for a pending request on that shift. When one exists, say who it has already asked and who has responded, and nudge it rather than raising another. cover_request_create refuses a duplicate anyway.
  • cover_request_create raises one. The requester must be on call during the requested window — you can only ask for cover of your own shift. When the user names who should cover ("can Alex take my shift?"), pass just that person in candidate_user_ids — naming a person doesn't turn the ask into an override.
  • Write the request message in the first person, as the requester.
  • Candidates respond with cover_request_respond: accept (the override is created automatically), decline, or offer part of the window. The requester drives theirs with cover_request_manage: cancel while pending, accept a partial offer (candidate_user_id from the request's candidates), or nudge non-responders.
  • Both need a cover_request_id: when the user points at a request rather than handing you one ("remind them", "I'll take Milly's shift"), find it with cover_request_list first.

Answering

  • Refer to schedules, overrides, and cover requests by name in the reply — never by ULID. The IDs a follow-up action needs are already in this conversation's tool results; read them from there rather than asking the user.
  • State times with an explicit timezone label, rendered for the user rather than in raw UTC when their timezone is known.
  • After a write, own what changed: who is now on call instead of whom, and until when — never a bare "done".

來源與署名

來源:incident-io/skills位於plugins/incident-io/skills/on-call提交c8e50a4

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架

更多來自 incident-io/skills 的技能

Talking To The User

incident-io

How the incident.io skills speak to the person in the session: what the user hears and what goes in the record, ending each reply with one next step, keeping a fixed milestone list through a multi-step job, and using the user's words instead of the skills' own vocabulary. Load it before you reply to the user while running any other incident.io skill.

待分類2今天更新

Architecture Author

incident-io

撰寫並維護架構文件,說明各系統是什麼、執行在哪裡、相依什麼以及資源的真實名稱。

Writing & Content2今天更新

Skill Authoring

incident-io

Create and improve the skills in your own plugins — the ones incident.io's agents and your coding agents load. Use whenever you're writing, editing, or reviewing a skill in any way: creating one, improving one from usage feedback or a review brief, or asking what makes a good skill.

待分類2今天更新

Extensions Review

incident-io

Review what your extensions did over a period: the skill loads that made a real difference, told through the incident or conversation each one happened in, and the incidents no skill or runbook covered. Use whenever anyone wants a review, digest, or pulse of extension or skill usage over a window — "how did our skills do this week", "post yesterday's extensions review to our channel" — one-off or on a schedule. Whether the estate is healthy (sync state, funnels, issues to fix) is the doctor skill, not this one.

待分類2今天更新

Extensions

incident-io

Understand the extensions so that you can help a user configure and manage their incident.io agent estate. Use whenever you're working with incident.io plugins, skills, connectors or MCPs in any way ("I want to set up an incident plugin"), when someone new wants to give incident.io's agents their own knowledge and doesn't yet know the pieces, or when you need to understand the user's existing configuration before editing a plugin or skill.

AI & Agents2今天更新

Doctor

incident-io

審查 incident.io 代理資產(外掛、技能與連線)的健康狀態,並將每項發現轉交給對應的修復方。

DevOps & Cloud2今天更新