• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialmonitoring

on-call

プラグイン
incident-io
ソース
GitHub で見る ↗
説明

incident.ioにおけるオンコール体制と通知方法:スケジュール、ローテーション・シフト、代替割り当て、カバー依頼、エスカレーション(問題の段階的な報告)経路、および通知(エスカレーション)に関する情報を扱います。 次のような場合に使用: - スケジュール、エスカレーション、カバー依頼のいずれかを何らかの方法で操作する場合 - 単純な情報確認(「今夜は誰がオンコール?」「私の次の番は?」など) - 通知の送信(「Avaに通知を送る」「自分の通知を確認」「誰か確認した?」など) 重要:最初のスケジュール・エスカレーション・カバー依頼関連のツール呼び出しの前に読み込んでください。これらのツールは生のシフトデータとレベル情報を返しますが、このスキルがそれらの読み方を説明します。

原文を表示

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.

ユースケース
  • スケジュール・エスカレーション・カバー依頼を操作する
  • オンコール体制の情報を確認する
  • 通知の送受信や確認をする
本文(日本語訳)

オンコール管理

スケジュールは複数のローテーションを含み、各ローテーションにはメンバーとレイヤー(同時に配置される職位で、「主担当者」「副担当者」などが例)があります。「主担当者」はレイヤーの名前であり、ローテーションではありません。シフトはこの設定から計算されるため、ロスターは保存されるのではなく、指定した時間枠でレンダリング(画面表示)されます。**変更(オーバーライド)**は一定期間ローテーションの上に重ねられ、誰がオンコール対応するかを変更します。その変更によって生じるシフトにはoverride_idが付きます。これにより、後でその変更を見つけて取り消すことができます。カバーリクエストはより丁寧な選択肢で、スケジュールのメンバーにボランティアを呼びかけるもので、承認されたリクエストが変更を自動作成します。

表示されるのはincident.ioのネイティブスケジュールのみです。組織がPagerDutyやOpsgenie などの外部サービスでオンコール管理を行っている場合、ツールはそのことを明示します。これは、誰がオンコール対応しているかを把握できないということであり、誰も対応していないわけではありません。incident.ioでオンコール管理を行っていない組織の場合、ここで読み取ったり変更したりすることはありません。その場合は、存在しないスケジュールを探すのではなく、明確にそう説明してください。

ツールへのアクセス方法

このセクションだけが実行環境に依存します。以下の説明ではツール名をそのまま使用し、呼び出し方法がどうであれ適用されます。

ツールの呼び出し

ツールはincident.ioの接続上にあり、このスキルが使用する名前で呼び出されます。

確認・読み取り

  • schedule_showは、指定した時間枠でスケジュールのローテーションとシフトをレンダリングします。時間枠は過去にも遡れます(「先週の火曜夜は誰がオンコール対応していた?」など)。shifts_truncated: trueは、部分的な情報を要約するのではなく時間枠を狭めることを意味します。uncovered: trueのシフトは、そのレイヤーで誰もオンコール対応していない期間であり、そのレイヤーへのアラートは誰にも届きません。override_idがあれば、変更でそのギャップを埋めた;なければ、ロスター自体にギャップがあります。

  • 「私はオンコール対応していますか?」「次に対応するのは誰ですか?」は、userフィルタを付けた1回のschedule_list呼び出しで答えられます。質問者の場合は"me"、他のユーザーの場合はユーザーIDまたはメールアドレスを使用します。各結果には、そのユーザーの進行中のシフトと次のシフトが含まれます。スケジュール全体を取得して自分で計算しないでください。

  • cover_request_listはカバーリクエストを探します(「私の未処理リクエスト」「ミリーのリクエスト」など)。応答および管理ツールが必要とするcover_request_idを返します。デフォルトでは保留中のリクエストが対象です。userまたはschedule_idでフィルタして範囲を絞ってください。

  • 「誰がアラートを受け取りますか?」はロスター管理ではなくエスカレーション(段階的対応)に関する質問です。escalation_path_showは各レベルで現在のオンコール対応を解決し、各レベルのschedulesはそこでアラートを送るスケジュールを示します。「このスケジュールを使用するのは何か」を答えるときもこのパスを確認してください。ツールに表示されない参照は、存在しないのではなく未確認です。見えなかったものについて説明してください。チームのパスはチームから来ます。team_showでチームが所有するパスをリストアップしてください。パス名がチーム名に似ているからという理由でパスを選ばないでください。

  • 連絡先として誰かを引き継ぐときは、実際に連絡が取れるか確認してください。user_listでinclude_inactive: trueを付けて検索し、stateとseat_typeを読んでください。このフラグがないと、非アクティブユーザーは表示されません。アラートを受け取れるのはon_callまたはon_call_responderシートのみです。ロスターはresponder、viewer、または非アクティブユーザーを彼らのシフトでレンダリングしますが、誰もアラートを送ることはできません。直接送付すら不可です。そのことを説明し、次に引き継ぐ人物も同じ方法で確認してください。単純な「誰がオンコール対応しているか」という質問は確認不要です。

  • ページ上のターゲットがnot_paged_reasonを持つ場合、そのターゲットはアラートを受け取っていません(他のレコード情報がどうであれ)。理由がないターゲットは、アラートが到達したことの証明ではありません。そのユーザーがアラートを受け取ったと述べる前に、同じ方法でそのユーザーのシートを確認してください。

  • ページ上で、escalation_createをパスで呼び出すと、下書き(suggestion)が返され、実際のページではありません。card_posted: falseの場合、ユーザーが操作するまで誰も見ません。ユーザーがページを要求したときは、action: executeとsuggestion_idのみで送信し、誰に届くかを伝えてください。card_posted: trueの場合、カードは会話に表示されており、ユーザーが受け入れることができます。ユーザーにそのカードを指す。下書きをページと呼ばないでください。

  • サービスまたはコンポーネントの誰がオンコール対応しているかについては、まずカタログを通じて解決してください。その過程は正しいエスカレーションパスで終わります。ロスターはしばしばカバーする対象の名前が付けられているため、カタログに答えがない場合は、「判断できない」と述べる前に、Xという名前のスケジュールを探してください。

カバー対応の変更

指示はロスターを今すぐ変更します。リクエストは事前に人に尋ねます。「私をオンコール対応にする」「サラさんをはずす」「次の2時間私をカバーしてほしい」(決定として述べられた場合)は変更です。「誰か私のシフトをカバーできますか?」「アレックスに金曜日を引き受けるよう依頼してください」はカバーリクエストです。たとえ人が指名された場合でも、依頼することは依頼であることに変わりありません。

変更(オーバーライド):

  • 変更は、アラート対象を即座に本当に変更します。ユーザーが要求し、誰がカバーするか、どのロスター、いつからいつまでかがわかれば、それを作成して正確に報告してください。まず確認を求めないでください。人や時間枠が曖昧な場合、または異なるシフト間のスワップ(以下参照)の場合だけ、まず確認してください。リマインダー、ユーザー自身の保留中リクエストのキャンセル、読み取りは確認不要です。

  • NOBODYは配置されたレイヤーを時間枠内でクリアします。ロスターをカバーなしにしたいと明確に要求された場合のみ使用します。その後、そのレイヤーへのアラートが時間枠内でどこにも届かないと明確に述べてください。単に「誰もオンコール対応していない」と述べるのではなく、スケジュールの他のレイヤーでもオンコール対応している人を名前で挙げてください。

  • スワップは2つの変更で、各シフト1つずつです。2つのシフトが異なるレイヤーにあるか、長さが異なる場合は、まず確認してから実行し、各ユーザーが何を引き受けることになるかを説明してください(たとえば、連続した週など)。それ以外は、両方を作成して両方を報告してください。

  • 複数のローテーションまたはレイヤーを持つスケジュールにはrotation_idとlayer_idが必要です。ないと作成は拒否されます。schedule_showは各ローテーションのレイヤーを名前でリストアップし、すべてのシフトはlayer_nameを含むため、「主担当」はPrimaryという名前のレイヤーです。変更を、置き換えられる人が保有するレイヤーに配置してください。既存の変更を置き換える場合でも同じです。

  • 変更を作成すると、同じローテーションおよびレイヤーで重複する既存の変更は置き換えられます。作成結果はdisplaced_overridesとしてこれらをリストします。置き換えた人をユーザーに伝え、意図していない場合は時間枠を狭めることを提案してください。

  • 1つを元に戻すには、schedule_override_deleteを、作成結果のoverride_idから、またはschedule_showの結果のシフトから取得したoverride_idで呼び出してください。変更を削除しても、その作成で置き換えられたものは戻りません。そのような作成を戻すときは、削除だけでは復元されず、displaced_overridesから再作成してください。

カバーリクエスト:

  • リクエストを作成する前に、またはだれに頼むかを提案する前に、そのシフトについてcover_request_listで保留中のリクエストを確認してください。存在する場合は、既に誰に依頼したか、誰が対応したかを述べ、別のリクエストを作成するのではなく、そのリクエストを促してください。cover_request_createはどうせ重複は拒否します。

  • cover_request_createでリクエストを作成します。リクエスター(依頼者)は要求された時間枠中にオンコール対応していなければなりません。自分のシフトのカバーだけを依頼できます。ユーザーが誰がカバーすべきかを指名する場合(「アレックスに私のシフトを引き受けてもらえますか?」)、その人だけをcandidate_user_idsに渡してください。人を指名してもリクエストは変更に変わりません。

  • リクエストmessageを一人称で、リクエスター視点で書いてください。

  • 候補者はcover_request_respondで応答します。承認する(変更は自動作成されます)、辞退する、またはウィンドウの一部を提供します。リクエスターはcover_request_manageで自分のものを操作します。保留中の状態でキャンセルする、部分的なオファーを承認する(リクエストの候補からcandidate_user_id)、または返答していない人に促す。

  • どちらもcover_request_idが必要です。ユーザーがリクエストを指す場合(「彼らにリマインダーを送る」「ミリーのシフトを引き受ける」)で、それを直接渡されていない場合は、先にcover_request_listで見つけてください。

答える際に

  • 返答でスケジュール、変更、カバーリクエストを名前で参照してください。ULIDで参照しないでください。フォローアップアクション(次のアクション)に必要なIDは、この会話のツール結果に既にあります。ユーザーに尋ねるのではなく、そこから読んでください。

  • 明確なタイムゾーンラベル付きで時刻を述べてください。ユーザーのタイムゾーンが既知の場合は、生のUTC形式ではなく、ユーザー向けにレンダリングされた形式で表示します。

  • 変更後は、何が変わったかを説明してください。誰がいつまで新たにオンコール対応するか(それまでは誰だったのか)。単に「完了」と述べないでください。

原文(English)を表示

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".

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。