mcpField
D
diagnostics-report-analyzer-skill

diagnostics-report-analyzer-skill

github.com/avdlee开发1.3k36 次安装5 周前更新
代码仓库

关于 diagnostics-report-analyzer-skill

用于分析 AvdLee Diagnostics 框架生成的单文件诊断报告,面向需要从应用日志和诊断信息中定位问题的 Agent。优先解析结构化 JSON,并在缺少时回退到 HTML。

主要功能

  1. 01优先解析嵌入式 JSON
  2. 02回退解析旧版 HTML
  3. 03按优先级检查诊断证据
  4. 04兼容结构化与旧版会话
  5. 05控制读取范围与引用内容

适用场景

  1. 01分析应用崩溃报告
  2. 02排查错误事件与系统日志
  3. 03对比新旧会话定位回归

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/avdlee/diagnostics --skill diagnostics-report-analyzer-skill

安装后在 Claude Code 中输入/diagnostics-report-analyzer-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
evals/fixtures/
json-backed-report.html
legacy-report.html
mixed-format-report.html

详细介绍

诊断报告分析技能

使用此技能分析由 AvdLee Diagnostics 框架生成的单文件报告。这些报告通常以 .html 附件的形式通过电子邮件发送,可能包含结构化 JSON 和浏览器渲染器,也可能仅包含较早版本预渲染的 HTML。

核心原则

将报告视为诊断证据,而不是要总结的网页。较新的报告专为 Agent 设计:其中包含结构化 JSON 负载,相较于渲染后的 HTML,它更精确且更节省 token。

分析工作流

1. 优先使用嵌入式 JSON

如果报告包含此元素,请提取并解析其文本内容:

<script id="diagnostics-report-data" type="application/json">

将该 JSON 作为事实来源。忽略 CSS、JavaScript、导航标记和渲染后的 HTML,除非某个章节明确使用 legacyHTML。

预期的顶层字段:

  • schemaVersion:报告架构版本。
  • title:便于阅读的报告标题。
  • agentHints:报告生成方提供的分析提示。
  • chapters:报告章节。

预期的章节结构:

  • showTitle:浏览器渲染提示;不影响分析。
  • kind: "logs",包含 data.sessions。
  • kind: "table",包含 data.rows。
  • kind: "text" 或 kind: "preformatted",包含 data.value。
  • kind: "legacyHTML",用于自定义诊断或回退内容。
  • legacyHTML:供需要自定义浏览器渲染的章节使用的可选显示 HTML。分析时优先使用 data,除非 data.type 为 legacyHTML,或结构化字段无法回答问题。
2. 回退到旧版 HTML

如果 JSON 脚本标签不存在,请直接解析 HTML 报告:

  • 会话日志通常位于 #log-sessions 中。
  • 会话通常封装在 .collapsible-session details 中。
  • 会话元数据通常位于 <summary><div class="session-header">... 中。
  • 日志级别通常表示为 .debug、.error、.system 和 .crash。
  • 较早版本的报告可能只通过 system 行显示崩溃,例如 SYSTEM: *** Terminating app due to uncaught exception... 或 SYSTEM: *** First throw call stack:。
  • 较早版本的纯文本会话可能使用类似分隔符的内容和 <pre> 块。

保持回退解析聚焦。如果某个小节已能回答问题,就不要加载或复述整个 HTML 文件。

3. 优先关注证据

按以下顺序分析:

  1. 如果存在 agentHints,先阅读。
  2. 检查应用程序/系统元数据,了解应用版本、构建版本、操作系统、设备、地区设置和环境。
  3. 优先检查最新会话。
  4. 优先关注 crash 事件,其次是 error 事件、MetricKit 诊断信息和异常系统日志。
  5. 如果会话没有 crash 事件,则将类似崩溃的 system 行视为旧版崩溃证据;如果两者都存在,则优先采用结构化的 crash 事件。
  6. 仅在有助于解释回归问题或重复模式时,才将故障会话与较早的会话进行比较。
  7. 检查自定义章节中的特定领域状态:功能标志、用户默认值、目录树、配置、账户状态或缓存文件。

输出格式

除非用户要求使用其他格式,否则请按以下格式回复:

## Summary
One or two sentences describing what most likely happened.

## Evidence
- Specific session, timestamp, event level, metadata row, or chapter detail that supports the conclusion.
- Another relevant detail if needed.

## Recommended Next Steps
- Concrete debugging or support action.
- Code/config area to inspect if apparent.

首先给出最可能的解释。如果证据不足以得出结论,请明确说明,并列出能够消除歧义的缺失信号。

Token 使用规范

诊断报告可能很大。请有选择地分析:

  • 优先使用嵌入式 JSON 负载,而非原始 HTML。
  • 从最新会话和崩溃/错误事件开始。
  • 引用单条日志前,先概括嘈杂的系统/调试日志所呈现的模式。
  • 仅引用直接支持结论的简短片段。
  • 除非用户明确要求,否则不要倾倒原始日志。

兼容性说明

较新的 Diagnostics 报告可能会在同一负载中包含结构化会话和旧版会话,因为用户可能会在历史日志已保存在设备上之后更新应用。请将两者都视为有效证据。

旧版 HTML 章节可能包含由 Diagnostics 框架创建的可信报告标记。结构化数据不可用时,请使用这些章节;但只要 JSON 负载存在,就应优先使用它作为机器可读接口。

评论

支持 Markdown