关于 pir
pir 是用于汇集 PagerDuty、Datadog、Cloudflare、Rollbar 及可选 Slack 事件信息并生成事后记录的 Agent 技能。它根据收集的数据判定严重程度,并通过 NotebookLM 生成报告、信息图和幻灯片。
主要功能
- 01并行发现事件
- 02统一各来源的分析时间范围
- 03自动判定严重程度
- 04关联代码历史
- 05生成 NotebookLM 报告、信息图与幻灯片
适用场景
- 01汇总指定时间段内事件的记录
- 02跨监控来源调查 PagerDuty 事件
- 03将事件时间线与代码历史关联
- 04通过 NotebookLM 材料分享调查结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ delexw/ claude-code-misc --skill pir安装后在 Claude Code 中输入/pir确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/pir-form-fields.mdsteps/step1-gather-date-range.mdstep2a-discover-incidents.mdstep2b-discover-datadog.mdstep2c-discover-cloudflare.mdstep2d-discover-rollbar.mdstep2e-discover-slack.mdstep3a-codebase-analysis.mdstep3b-generate-nlm.mdstep4-present-results.md详细介绍
事后事件记录(PIR)
同时从 PagerDuty、Datadog、Cloudflare 和 Rollbar 发现问题,自动确定严重级别,并为每个问题生成填写完整的 PIR 表单。
输入
原始参数:$ARGUMENTS
根据参数推断:
- QUERY:要调查的内容。直接传递给每个子技能。默认为 "incidents today"。
- CF_DOMAIN_ZONE:(可选)Cloudflare 域名和区域 ID,格式为 domain:zone_id。传递给 cloudflare-traffic-investigator 技能。如果未提供,Cloudflare 技能会询问用户。
在步骤 1 中解析(不直接提供):
- SINCE:分析时间窗口的 UTC ISO8601 起始时间。根据 QUERY 中明确指定的时间或 PD 事件时间戳自动推导。
- UNTIL:分析时间窗口的 UTC ISO8601 结束时间。根据 QUERY 中明确指定的时间或 PD 事件时间戳自动推导。
- PD_INCIDENT:从 QUERY 中检测到的 PagerDuty 事件 ID(会触发优先处理 PD 的编排流程)。
- SERVICE_HINT:从 PD 事件中提取的服务名称(用于限定 Datadog/Rollbar 查询范围)。
- TITLE_HINT:从 PD 事件中提取的事件标题(用作 Rollbar 关键词搜索词)。
- SLACK_CHANNEL:在步骤 2e 中解析——来自调用方上下文或
$SLACK_INCIDENT_CHANNEL环境变量。可以是单个频道,也可以是以逗号或竖线分隔的多个频道。
PIR 表单字段
每份 PIR 都对应以下字段——格式、示例和输出模板请参见 PIR 表单字段:
| 字段 | 必填 | 来源 |
|---|---|---|
| 影响摘要 | 是 | 根据所有技能的结果综合整理 |
| 发生了什么 | 是 | PagerDuty 事件 + Datadog + Cloudflare |
| 受影响对象 | 是 | Datadog(RUM/错误追踪)+ Cloudflare(用户数量) |
| 根本原因 | 是 | Cloudflare(JA4、流量来源)+ Datadog(错误追踪)+ Rollbar(堆栈追踪、错误与部署的关联)+ PagerDuty(触发详情)+ Slack(根因讨论)+ 代码库分析(问题提交) |
| 事件日期 | 是 | 所有来源(PagerDuty、Datadog、Cloudflare)中最早的检测时间 |
| 时间线 | 是 | PagerDuty 创建/解决时间 + Datadog 时间线 |
| 补救措施 | 否 | PagerDuty 备注 + Datadog 监控器 + Slack(事件期间采取的措施) |
| 事件协调人 | 否 | PagerDuty 升级策略响应人员 + Slack(频道中的活跃响应人员) |
严重级别自动分类
根据收集到的数据确定严重级别——不要询问用户:
| 严重级别 | 标准 |
|---|---|
| SEV1 | 服务中断或关键路径错误率 >50%;级联故障;持续时间 >30 分钟 |
| SEV2 | 部分性能下降;错误率为 10-50%;单个服务受影响;持续时间为 10-30 分钟 |
| SEV3 | 影响较小;错误率 <10%;短暂峰值(<10 分钟);对用户的影响有限 |
如果符合多个标准,采用最高的适用严重级别。
执行
步骤 1:准备——确定时间范围
请参见 step1-gather-date-range.md
根据 QUERY 检测输入模式并解析 SINCE/UNTIL:
- QUERY 中包含 PD URL/ID → 优先运行 pagerduty-oncall(步骤 1b),提取时间戳 → 设置 SINCE、UNTIL、SERVICE_HINT、TITLE_HINT、PD_INCIDENT
- QUERY 中包含明确时间 → 转换为 UTC ISO8601 格式的 SINCE/UNTIL → 并行运行全部四个子技能
- QUERY 含糊不清或为空 → 默认为过去 24 小时 → 并行运行全部四个子技能
步骤 2:发现——PagerDuty、Datadog、Cloudflare、Rollbar
编排方式取决于是否已在步骤 1 中解析出 PD_INCIDENT:
- 如果已设置 PD_INCIDENT:跳过步骤 2a(数据已收集)。并行运行 2b + 2c + 2d + 2e。
- 否则:并行运行全部五项(2a + 2b + 2c + 2d + 2e)。
如果 SINCE 和 UNTIL 可用,则将其(UTC ISO8601)传递给每个子技能,确保所有数据源使用一致的分析时间窗口。
2a. PagerDuty——事件
请参见 step2a-discover-incidents.md
— 调用 Skill("pagerduty-oncall")。如果已在步骤 1b 中解析出 PD_INCIDENT,则跳过。
2b. Datadog — 可观测性数据
参见 step2b-discover-datadog.md
— 调用 Skill("datadog-analyser")。在有可用值时传入 SINCE、UNTIL、SERVICE_HINT。
2c. Cloudflare — 流量分析
参见 step2c-discover-cloudflare.md
— 调用 Skill("cloudflare-traffic-investigator")。如果提供了 CF_DOMAIN_ZONE,则传入其中的域名和区域 ID。在有可用值时传入 SINCE、UNTIL。
2d. Rollbar — 错误跟踪
参见 step2d-discover-rollbar.md
— 调用 Skill("rollbar-reader")。在有可用值时传入 SINCE、UNTIL、TITLE_HINT。
2e. Slack — 事件频道
参见 step2e-discover-slack.md
— 从调用方上下文或 $SLACK_INCIDENT_CHANNEL 环境变量解析频道。如果未找到频道,则跳过且不报错。
步骤 3a:代码库分析
参见 step3a-codebase-analysis.md — 分析各工作目录中的 git 历史,并与发现报告中的事件时间线进行关联。
步骤 3b:通过 NotebookLM 生成 PIR
参见 step3b-generate-nlm.md — 在步骤 3a 后运行。创建 NotebookLM 笔记本,上传所有发现报告和代码库报告,生成报告、信息图和幻灯片。返回笔记本 ID。
步骤 4:展示结果
参见 step4-present-results.md — 展示 PIR 摘要,并提供笔记本链接以便交互式探索。保留 NotebookLM 笔记本,供后续查询使用。