Weather Now Skill
Weather is the perfect agent utility: everyone asks, and two excellent services answer over plain HTTPS with no keys, no signup, no SDK. This skill knows both — wttr.in for beautiful one-line and full-terminal answers, Open-Meteo for structured JSON when the task needs numbers — plus the format codes and fallback discipline that make the answer reliable instead of lucky.
What This Skill Produces
- The answer — current conditions or forecast, interpreted in one plain sentence before any raw data
- The data — the relevant fields (temp, precipitation, wind, humidity) at the units the user lives in
- The command — the exact curl used, shown so the user can rerun or script it
- The caveat line — data source and its timestamp; weather data is advisory, not aviation/safety-grade
Required Inputs
Ask for these if not provided:
- Location — city name, airport code (wttr.in takes IATA), lat/lon, or "here" (ask rather than guess the user's location)
- What they actually want — right-now vs. today vs. multi-day; "will it rain" wants precipitation timing, not a temperature
- Units — metric/imperial if ambiguous from the location
Framework: The Two Services
- wttr.in — primary for human answers:
curl -s "wttr.in/Tokyo?format=3" → one line. Format codes: %c condition icon, %t temp, %h humidity, %w wind, %p precipitation, %m moon phase — compose as ?format="%l:+%c+%t,+wind+%w". Full 3-day panel: curl -s "wttr.in/Tokyo" (add ?m metric, ?u imperial, ?T no-color for parsing). Airport codes work: wttr.in/nrt. PNG for sharing: wttr.in/Tokyo.png.
- Open-Meteo — primary for data, fallback for everything:
curl -s "https://api.open-meteo.com/v1/forecast?latitude=35.68&longitude=139.69¤t_weather=true" → JSON. Rich forecasts: append &hourly=temperature_2m,precipitation_probability&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=auto&forecast_days=3. Geocode names first when needed: https://geocoding-api.open-meteo.com/v1/search?name=Tokyo&count=1.
- Fallback discipline: wttr.in rate-limits and occasionally naps — on any non-weather response, switch to Open-Meteo silently and say which source answered. Never present a failed fetch as "no data exists."
- Interpret, don't dump: the deliverable is "light rain from ~3pm, carry the umbrella" with the numbers beneath — not a JSON blob. Weather codes from Open-Meteo (WMO codes: 0 clear, 1–3 clouds, 51–67 rain, 71–77 snow, 95+ thunderstorm) get translated to words.
- Timestamp honesty: quote the observation/forecast time from the response; if the tool environment has no network, say so and provide the command for the user to run — never recite remembered weather.
Output Format
Weather: [location, resolved]
[The one-sentence answer to what they actually asked.]
[Conditions table or forecast lines, right units]
Source: [wttr.in / Open-Meteo] at [response timestamp] · rerun: [the exact curl]
Live data, advisory only — for safety-critical decisions use official meteorological services.
Quality Checks
Anti-Patterns
1---2name: weather-now3description: Get current weather and forecasts with zero API keys — wttr.in one-liners for humans, Open-Meteo JSON for data, with the exact curl commands and format codes. Use when asked what's the weather, will it rain today, forecast for a city, or get me weather data for a location. Produces the live conditions or forecast pulled via curl, interpreted plainly, with the source timestamp and the command used shown so the user can rerun it.4---5
6# Weather Now Skill
7
8Weather is the perfect agent utility: everyone asks, and two excellent services answer over plain HTTPS with no keys, no signup, no SDK. This skill knows both — wttr.in for beautiful one-line and full-terminal answers, Open-Meteo for structured JSON when the task needs numbers — plus the format codes and fallback discipline that make the answer reliable instead of lucky.
9
10## What This Skill Produces
11
12- **The answer** — current conditions or forecast, interpreted in one plain sentence before any raw data
13- **The data** — the relevant fields (temp, precipitation, wind, humidity) at the units the user lives in
14- **The command** — the exact curl used, shown so the user can rerun or script it
15- **The caveat line** — data source and its timestamp; weather data is advisory, not aviation/safety-grade
16
17## Required Inputs
18
19Ask for these if not provided:
20- **Location** — city name, airport code (wttr.in takes IATA), lat/lon, or "here" (ask rather than guess the user's location)
21- **What they actually want** — right-now vs. today vs. multi-day; "will it rain" wants precipitation timing, not a temperature
22- **Units** — metric/imperial if ambiguous from the location
23
24## Framework: The Two Services
25
261. **wttr.in — primary for human answers:** `curl -s "wttr.in/Tokyo?format=3"` → one line. Format codes: `%c` condition icon, `%t` temp, `%h` humidity, `%w` wind, `%p` precipitation, `%m` moon phase — compose as `?format="%l:+%c+%t,+wind+%w"`. Full 3-day panel: `curl -s "wttr.in/Tokyo"` (add `?m` metric, `?u` imperial, `?T` no-color for parsing). Airport codes work: `wttr.in/nrt`. PNG for sharing: `wttr.in/Tokyo.png`.
272. **Open-Meteo — primary for data, fallback for everything:** `curl -s "https://api.open-meteo.com/v1/forecast?latitude=35.68&longitude=139.69¤t_weather=true"` → JSON. Rich forecasts: append `&hourly=temperature_2m,precipitation_probability&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=auto&forecast_days=3`. Geocode names first when needed: `https://geocoding-api.open-meteo.com/v1/search?name=Tokyo&count=1`.
283. **Fallback discipline:** wttr.in rate-limits and occasionally naps — on any non-weather response, switch to Open-Meteo silently and say which source answered. Never present a failed fetch as "no data exists."
294. **Interpret, don't dump:** the deliverable is "light rain from ~3pm, carry the umbrella" with the numbers beneath — not a JSON blob. Weather codes from Open-Meteo (WMO codes: 0 clear, 1–3 clouds, 51–67 rain, 71–77 snow, 95+ thunderstorm) get translated to words.
305. **Timestamp honesty:** quote the observation/forecast time from the response; if the tool environment has no network, say so and provide the command for the user to run — never recite remembered weather.
31
32## Output Format
33
34# Weather: [location, resolved]
35
36**[The one-sentence answer to what they actually asked.]**
37
38[Conditions table or forecast lines, right units]
39
40Source: [wttr.in / Open-Meteo] at [response timestamp] · rerun: `[the exact curl]`
41*Live data, advisory only — for safety-critical decisions use official meteorological services.*
42
43## Quality Checks
44
45- [ ] The first line answers the actual question (rain timing, not temperature, if rain was asked)
46- [ ] Units match the user's locale or stated preference
47- [ ] The source and its timestamp are quoted
48- [ ] The rerunnable curl appears
49- [ ] Fallback engaged silently on primary failure, and the answer names which source spoke
50
51## Anti-Patterns
52
53- [ ] Do not answer from memory — no network means no weather; say so and hand over the command
54- [ ] Do not dump raw JSON as the answer — interpret first, data second
55- [ ] Do not guess the user's location — ask, or use the location they named
56- [ ] Do not present a rate-limited wttr.in error page as weather
57- [ ] Do not oversell precision — hour-level precipitation timing is a forecast, and the wording should sound like one