mcpField
Z
zephyr-grafana-links

zephyr-grafana-links

github.com/gkwa生产力059 次安装1 天前更新
代码仓库

关于 zephyr-grafana-links

zephyr-grafana-links 是一项用于在烘焙日志中创建或更新 Grafana 仪表板链接的技能。它分别提供整段烘焙和批量发酵视图,并依据记录的事件时间设定窗口。

主要功能

  1. 01生成整体和批量发酵链接
  2. 02根据烘焙事件设置链接时间窗
  3. 03将日志本地时间转换为 UTC
  4. 04为已完成的烘焙固定结束时间
  5. 05保留 Grafana 注释代码块

适用场景

  1. 01为烘焙日志添加仪表板链接
  2. 02烘焙结束后更新链接
  3. 03缺少时间来源时标记为 TBD

安装

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

$npx skills add https://github.com/gkwa/volcanicviper --skill zephyr-grafana-links

安装后在 Claude Code 中输入/zephyr-grafana-links确认已加载。

附带文件tile.json

详细介绍

概述

Grafana 链接为烘焙日志提供了仪表板的两个现成视图:一个涵盖整个烘焙过程,另一个涵盖主体发酵。

此技能刻意保持独立,因此可以替换为不同的链接实现,而无需修改 [[zephyr]] 技能。

文件名解析、event_time 标签、Starter peak duration 块和参数优先级由 [[zephyr]] 技能负责——此技能使用这些规则,但不会重复说明。

构建链接前,请先阅读 [[zephyr]] 技能,了解烘焙日志命名约定和参数默认值。

注释是完全不同的事项,由 [[grafana-bake-annotation]] 技能负责。请参阅下方的“章节归属”。

参数

  • 仪表板基础 URL — https://taylormonacelli1.grafana.net/d/tatmmtv/new-dashboard
  • 固定查询参数 — orgId=1、timezone=browser、refresh=30m
  • 烘焙日志目录 — 根据 [[zephyr]] 技能的“参数”章节解析

触发条件

只有在收到明确请求时才构建或刷新链接。

切勿仅仅因为烘焙日志已打开,就自动重新生成链接。

会触发此组件的请求:

  • “更新此日志中的 Grafana 链接”
  • “将 Grafana 链接添加到烘焙日志 7-20”
  • “烘焙结束了,修复 Grafana 链接”
  • “将 zephyr 应用于烘焙日志 7-20”——[[zephyr]] 技能中定义的组合请求

不会触发此组件的请求:

  • “应用 Grafana 注释”——这是 [[grafana-bake-annotation]] 技能的职责
  • “路由此日志中的 Zephyr 条目”——这是 [[zephyr-routing]] 技能的职责
  • 为其他目的读取烘焙日志

设置时间窗口

时间窗口应在烘焙过程前后留出余量,而不是紧贴烘焙过程。

每个链接都从各自起始事件前一小时开始,并在烘焙结束后约一小时结束。

这段余量可避免图表边缘截断轨迹,让前期准备和收尾阶段都清晰可见。

选择结束时间

to 参数取决于烘焙是否仍在进行。

烘焙进行期间,使用 to=now,这样图表会随着新读数不断延伸,并始终显示截至当前时刻的数据。

烘焙结束后,to=now 就不合适了:时间窗口会在最后一个读数后持续增长,导致烘焙数据在左侧压缩成越来越窄的一小段,而图表其余部分则被空白时间填满。

烘焙结束后,将 to 固定为烘焙结束约一小时后的时间戳。

查看 ## bake log 部分中是否存在烘焙结束条目,以判断适用哪种情况——面包出炉,或最后一条面包的烘焙结束。

此事件的注释标签为 bake_done;日志中也可能将其表述为“出炉”“烘焙完成”或“最后一条面包”。

如果不存在烘焙结束条目,说明烘焙仍在进行——两个链接都使用 to=now。

如果存在,则取其事件时间,加上一小时,转换为 UTC,并将此固定时间戳用作两个链接的 to 值。

如果只记录了最后一条面包开始烘焙的时间,没有记录结束时间,则将烘焙结束时间视为开始后 45 分钟,再额外加上一小时的余量。

两个链接始终使用相同的 to 值。

选择开始时间

写入两个链接,每个链接都有自己的 from 值。

链接提前一小时开始的时间点来源
整体酵种喂养时间## Starter peak duration 块中的 fed 字段
主体发酵主体发酵开始时间加入面粉的条目的事件时间

主体发酵的起始时间是 mix 事件——主体发酵从面团混合成形时开始,而不是从 long_bulk_start 开始。

如果缺少必需来源,或其值仍为 [TBD],则用 [TBD] 替代对应 URL,不要猜测时间。

某个来源缺失只影响对应的链接;另一个链接仍应照常写入。

时区

Bake 日志时间是本地墙上时钟时间。

Grafana 的 from 和 to 使用 UTC,因此写入前要进行转换——太平洋夏令时期间,这意味着减去 7 小时。

使用带毫秒且以 Z 结尾的 ISO 8601 格式,与仪表板自身的格式一致:2026-07-21T02:02:47.000Z。

字面值 now 不进行转换。

章节归属

链接位于 Bake 日志 ## grafana 章节顶部,格式必须完全如下:

overall
<URL or [TBD]>

bulk ferment
<URL or [TBD]>

每次运行时都替换整个链接块,无论其中当前是什么内容——将其视为重新生成的输出,而不是要修补的文本。

## grafana 章节中的其他所有内容都归 [[grafana-bake-annotation]] 技能所有,尤其是围栏代码块中的 annotate-grafana.py 命令块。

更新链接时,绝不要删除、重新排序或编辑这些代码块。

不要假设该章节已有占位符或任何特定内容——它可能为空、只有链接、只有注释,或两者都有。

刷新已完成的 Bake

Bake 进行期间写入的链接带有 to=now,Bake 一结束就会过期。

如果结束时日志中的链接仍写着 to=now,请用固定的结束时间重写两个链接。

对于此组件,这是最常见的情况:它通常每次 Bake 运行两次,一次在早期,一次在 Bake 完成后。

提交

更新链接后,提交 Bake 日志。

评论

支持 Markdown