关于 pp-weather-goat
pp-weather-goat 是用于操作 Weather GOAT CLI 的技能,面向需要天气查询和基于天气的活动建议的 Agent。它将预报、美国国家气象局警报、空气质量与活动专属的行动判断整合在一起。
主要功能
- 01查询当前天气和多日预报
- 02按活动给出行动判断及理由
- 03查看并持续监测恶劣天气警报
- 04比较天气与历史同期水平
- 05查询空气质量、花粉和 UV
适用场景
- 01判断当天是否适合骑行或徒步
- 02获取所在地的早间天气简报
- 03比较旅行目的地的天气
- 04监测风暴期间更新的警报
MCP 相关
README 提供 weather-goat-pp-mcp 的安装和客户端配置命令。此服务将 Weather GOAT 的天气与警报能力提供给 MCP 客户端。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-weather-goat安装后在 Claude Code 中输入/pp-weather-goat确认已加载。
详细介绍
Weather GOAT — Printing Press 命令行工具
前置条件:安装命令行工具
此技能由 weather-goat-pp-cli 二进制文件驱动。**调用此技能中的任何命令前,必须确认命令行工具已安装。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install weather-goat --cli-only - 验证:
weather-goat-pp-cli --version - 确保报告的安装目录位于将调用此技能的 Agent/运行时的
$PATH中。
如果 npx 安装失败(没有 Node、离线等),请改用直接 Go 安装(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/other/weather-goat/cmd/weather-goat-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法访问 $PATH 中的二进制文件目录。验证成功前,请勿执行技能命令。
何时使用此命令行工具
当用户想查询天气、查看风暴或警报、了解空气质量、根据当前状况获取活动建议(骑车、徒步、散步、通勤、驾车),或比较“今天在每年这个时候是否正常”时,请使用此工具。它尤其适合作为晨间简报信息源:使用 weather-goat-pp-cli(不带参数时,会显示配置的居家位置当前天气、今日预报和有效警报)。
如果用户需要超本地或商业级气象信息(请使用 Tomorrow.io 或 ECMWF 等付费服务),或国际严重天气警报(NWS 仅覆盖美国),则不应使用此工具。
独特功能
活动判定 — 差异化优势
-
go walk|bike|hike|commute|drive [location]— 针对特定活动给出 GO / CAUTION / STOP 判定,并说明原因。将“看看天气”变成“我该做什么”。每种活动都有各自的判定阈值。
- walk — 准备建议(带伞?穿夹克?涂防晒霜?穿多层衣物?)
- bike — 针对骑行优化的风力、降雨、AQI 和结冰阈值
- hike — 雷电、失温风险、高海拔紫外线
- commute — 比较早晨出发和傍晚返程时的天气(考虑时间)
- drive — 能见度、结冰、阵风、NWS 警告
严重天气信息
-
alerts [location]— 当前有效的 NWS 警告:龙卷风、风暴、洪水、高温。以结构化格式输出严重程度和区域多边形。 -
watch [location]— 严重天气期间,每 60 秒轮询一次 NWS。收到新警报或更新警报时打印出来。适用于风暴期间运行。
情境与比较
-
normal [location]— 今天在每年这个时候是否正常?将今天的最高温、最低温和降水量与同一日期的历史平均值进行比较。 -
compare <location1> <location2> [...]— 并排比较 2 个或更多地点的天气预报。适用于旅行规划,或比较“这个周末哪个城市的天气更好”。 -
morning-brief(或者,如果已运行config set-location,则直接运行不带参数的weather-goat-pp-cli)— 一次调用即可获取当前天气、今日预报和有效的 NWS 警报。每日晨间启动命令。
空气、紫外线和花粉
-
breathe [location]— AQI、花粉和紫外线信息,以及运动建议。 -
air-quality [location]— 详细 AQI 信息,包括 PM2.5、臭氧等。 -
weather_codes— Open-Meteo 天气代码映射参考(内部参考,但处理--json输出时很有用)。
命令参考
核心:
weather-goat-pp-cli— 晨间简报(需要先运行config set-location,或传入[location])weather-goat-pp-cli forecast [location]— 多日预报weather-goat-pp-cli alerts [location]— 当前有效的 NWS 恶劣天气警报weather-goat-pp-cli history [location]— 历史天气
活动:
weather-goat-pp-cli go <activity> [location]—walk、bike、hike、commute、drive
空气 / 环境:
weather-goat-pp-cli breathe [location]— AQI + 花粉 + UV 简报weather-goat-pp-cli air-quality [location]— 详细 AQI
背景信息:
weather-goat-pp-cli normal [location]— 今日天气与历史平均值对比weather-goat-pp-cli compare <loc1> <loc2>— 并列对比weather-goat-pp-cli watch [location]— 实时 NWS 监控循环
配置 + 实用工具:
weather-goat-pp-cli config set-location <place>— 设置家庭位置weather-goat-pp-cli geocoding <name>— 将地名解析为坐标weather-goat-pp-cli doctor— 验证连接
使用示例
“今天适合骑车上班吗?”
weather-goat-pp-cli go bike --agent
返回结构化的 GO/CAUTION/STOP 判定及理由,综合考虑风速、降水、AQI、气温和结冰风险,并针对骑行情况进行加权评估。
设置家庭位置后的晨间简报
weather-goat-pp-cli config set-location "Seattle, WA"
weather-goat-pp-cli --agent # morning brief — no args
保存位置后,不带参数运行即可返回当前天气状况、今日预报和当前有效的 NWS 警报。可在 shell 启动脚本或 cron 中设置为早上 7 点运行。
旅行决策 — 这个周末去哪个城市更好?
weather-goat-pp-cli compare "Portland, OR" "San Francisco, CA" --agent
并列显示两地的当前天气状况。一眼即可选出旅行目的地。
天气预警期间监控恶劣天气
weather-goat-pp-cli watch --agent & # background poll every 60s
持续运行;警报发生变化时,将 JSON 事件输出到 stdout。可将输出传入日志工具或 Slack webhook,以便接收警报。
今天是不是异常炎热?
weather-goat-pp-cli normal --agent
返回今日最高 / 最低气温和降水情况,并与同一日历日期的 30 年历史平均值对比。可轻松判断“这是不是热浪”。
身份验证设置
无需身份验证。 Open-Meteo 免费且不限量;NWS 免费,使用美国公开数据。auth 命令仅为保持一致而存在,实际不执行任何操作。
可选配置:
WEATHER_GOAT_CONFIG— 覆盖配置文件路径- 家庭位置通过
config set-location持久化保存至~/.config/weather-goat-pp-cli/config.toml
Agent 模式
在任何命令中添加 --agent。它会展开为 --json --compact --no-input --no-color --yes。在 forecast 中使用 --forecast-days N,使用 --no-cache 可绕过 15 分钟的 GET 缓存。
筛选输出
--select 接受点分隔路径,用于深入访问嵌套响应;遍历数组时会逐项处理:
weather-goat-pp-cli <command> --agent --select id,name
weather-goat-pp-cli <command> --agent --select items.id,items.owner.name
使用此选项可将庞大的负载缩小到实际所需的字段,对于深度嵌套的 API 响应尤其重要。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误 |
| 3 | 未找到位置(地理编码失败) |
| 5 | API 错误(Open-Meteo 或 NWS 出现问题) |
| 7 | 请求受限(极少见;Open-Meteo 不限量) |
安装
go install github.com/mvanhorn/printing-press-library/library/other/weather-goat/cmd/weather-goat-pp-cli@latest
weather-goat-pp-cli config set-location "Your City, ST"
weather-goat-pp-cli doctor
MCP 服务
go install github.com/mvanhorn/printing-press-library/library/other/weather-goat/cmd/weather-goat-pp-mcp@latest
claude mcp add weather-goat-pp-mcp -- weather-goat-pp-mcp
参数解析
给定 $ARGUMENTS:
- 为空、
help或--help→ 运行weather-goat-pp-cli --help install→ CLI;install mcp→ MCP- 活动相关查询(“should I bike/walk/hike...”) →
go <activity> [location] --agent - 恶劣天气(“any tornado warnings”、“storms coming”) →
alerts [location] --agent - 地点对比(“better weather in X or Y”) →
compare <loc1> <loc2> --agent - 其他所有情况 →
forecast [location](如果未传入位置且已配置家庭位置,则运行晨间简报)
Agent 工作流功能
此 CLI 提供了三项共享的 Agent 工作流能力,移植自 cli-printing-press PR #218。
命名配置
按名称保存一组标志,并在多次调用时重复使用。
# Save the current non-default flags as a named profile
weather-goat-pp-cli profile save <name>
# Use a profile — overlays its values onto any flag you don't set explicitly
weather-goat-pp-cli --profile <name> <command>
# List / inspect / remove
weather-goat-pp-cli profile list
weather-goat-pp-cli profile show <name>
weather-goat-pp-cli profile delete <name> --yes
标志优先级:显式标志 > 环境变量 > 配置 > 默认值。
--deliver
将命令输出路由到 stdout 以外的接收端。当 Agent 需要将结果交给文件、webhook 或其他进程,而不想手动接线时,此功能很有用。
weather-goat-pp-cli <command> --deliver file:/path/to/out.json
weather-goat-pp-cli <command> --deliver webhook:https://hooks.example/in
文件接收端会以原子方式写入(临时文件 + 重命名)。Webhook 接收端会发送 application/json(设置 --compact 时则发送 application/x-ndjson)。遇到未知协议时,会返回结构化拒绝信息,并列出支持的协议。
feedback
从 Agent 端记录有关此 CLI 的带内反馈。默认仅限本地,无需配置即可安全调用。
weather-goat-pp-cli feedback "what surprised you or tripped you up"
weather-goat-pp-cli feedback list # show local entries
weather-goat-pp-cli feedback clear --yes # wipe
条目会以 JSON 行格式追加到 ~/.weather-goat-pp-cli/feedback.jsonl。设置 WEATHER_GOAT_FEEDBACK_ENDPOINT 且传入 --send 或设置 WEATHER_GOAT_FEEDBACK_AUTO_SEND=true 时,也会将条目 POST 到上游(非阻塞——本地写入始终成功)。