Air Quality Skill
Air quality is a daily decision input — run outside or inside, windows open or closed, mask or not — and Open-Meteo serves it globally over plain HTTPS, no key, no signup. This skill fetches it, then does the part the raw number doesn't: translating PM2.5 and AQI into the standard health bands, matched to what the user was actually deciding.
What This Skill Produces
- The read — one sentence: the air right now and what it suggests for the stated activity
- The numbers — AQI plus the pollutants that matter (PM2.5, PM10, ozone, NO₂), with the timestamp
- The bands — where today sits on the standard scale, so the number has meaning
- The command — the exact curl, rerunnable
Required Inputs
Ask for these if not provided:
- Location — lat/lon or a place name (geocode first:
https://geocoding-api.open-meteo.com/v1/search?name=Delhi&count=1)
- The decision behind the question — a run, a bike commute, a sensitive-lungs household, open windows — the read is calibrated to it
- Which index they think in — US AQI or European AQI (the API serves both; the numbers differ substantially for the same air)
Framework: The Fetch and the Read
- The call:
curl -s "https://air-quality-api.open-meteo.com/v1/air-quality?latitude=28.61&longitude=77.21¤t=pm2_5,pm10,ozone,nitrogen_dioxide,us_aqi,european_aqi" — add &hourly=pm2_5,us_aqi&forecast_days=2 when the question is "when today will it be best."
- The US AQI bands, stated every time: 0–50 good · 51–100 moderate · 101–150 unhealthy for sensitive groups · 151–200 unhealthy · 201–300 very unhealthy · 301+ hazardous. A bare "AQI 137" is not an answer; "137 — unhealthy for sensitive groups; fine for most, skip the long run if asthmatic" is.
- PM2.5 is the headline pollutant for health questions (it reaches deep lung tissue); ozone matters for afternoon exercise; NO₂ tracks traffic. Match the pollutant discussed to the question asked.
- Timing beats averages: pollution has a daily shape (traffic peaks, afternoon ozone) — for exercise questions, pull the hourly series and name the cleanest window rather than judging the day by one reading.
- Model honesty: Open-Meteo's air quality is model-derived (CAMS), not a monitor on the user's street — excellent for bands and trends, not for litigation. Say "modeled" when precision is being leaned on, and point sensitive-health decisions to local official monitors.
Output Format
Air Quality: [location] — [timestamp]
[One sentence: the band, and the answer to their actual decision.]
| Metric |
Now |
Band |
| [US or EU AQI per preference · PM2.5 · the pollutant relevant to their question] |
|
|
[If timing asked: the hourly shape and the recommended window]
Source: Open-Meteo air-quality API (modeled/CAMS) · rerun: [exact curl]
Advisory reading — for medical-grade decisions use official local monitoring.
Quality Checks
Anti-Patterns
1---2name: air-quality3description: Check live air quality anywhere with zero API keys — Open-Meteo's air-quality API via curl, decoded from raw PM2.5 and AQI numbers into what they mean for going outside. Use when asked what's the air quality, is it safe to run outside, AQI in my city, or pollution levels right now. Produces the current AQI and pollutant levels, the plain-language health read with the standard bands, and the rerunnable command.4---5
6# Air Quality Skill
7
8Air quality is a daily decision input — run outside or inside, windows open or closed, mask or not — and Open-Meteo serves it globally over plain HTTPS, no key, no signup. This skill fetches it, then does the part the raw number doesn't: translating PM2.5 and AQI into the standard health bands, matched to what the user was actually deciding.
9
10## What This Skill Produces
11
12- **The read** — one sentence: the air right now and what it suggests for the stated activity
13- **The numbers** — AQI plus the pollutants that matter (PM2.5, PM10, ozone, NO₂), with the timestamp
14- **The bands** — where today sits on the standard scale, so the number has meaning
15- **The command** — the exact curl, rerunnable
16
17## Required Inputs
18
19Ask for these if not provided:
20- **Location** — lat/lon or a place name (geocode first: `https://geocoding-api.open-meteo.com/v1/search?name=Delhi&count=1`)
21- **The decision behind the question** — a run, a bike commute, a sensitive-lungs household, open windows — the read is calibrated to it
22- **Which index they think in** — US AQI or European AQI (the API serves both; the numbers differ substantially for the same air)
23
24## Framework: The Fetch and the Read
25
261. **The call:** `curl -s "https://air-quality-api.open-meteo.com/v1/air-quality?latitude=28.61&longitude=77.21¤t=pm2_5,pm10,ozone,nitrogen_dioxide,us_aqi,european_aqi"` — add `&hourly=pm2_5,us_aqi&forecast_days=2` when the question is "when today will it be best."
272. **The US AQI bands, stated every time:** 0–50 good · 51–100 moderate · 101–150 unhealthy for sensitive groups · 151–200 unhealthy · 201–300 very unhealthy · 301+ hazardous. A bare "AQI 137" is not an answer; "137 — unhealthy for sensitive groups; fine for most, skip the long run if asthmatic" is.
283. **PM2.5 is the headline pollutant** for health questions (it reaches deep lung tissue); ozone matters for afternoon exercise; NO₂ tracks traffic. Match the pollutant discussed to the question asked.
294. **Timing beats averages:** pollution has a daily shape (traffic peaks, afternoon ozone) — for exercise questions, pull the hourly series and name the cleanest window rather than judging the day by one reading.
305. **Model honesty:** Open-Meteo's air quality is model-derived (CAMS), not a monitor on the user's street — excellent for bands and trends, not for litigation. Say "modeled" when precision is being leaned on, and point sensitive-health decisions to local official monitors.
31
32## Output Format
33
34# Air Quality: [location] — [timestamp]
35
36**[One sentence: the band, and the answer to their actual decision.]**
37
38| Metric | Now | Band |
39|---|---|---|
40[US or EU AQI per preference · PM2.5 · the pollutant relevant to their question]
41
42[If timing asked: the hourly shape and the recommended window]
43
44Source: Open-Meteo air-quality API (modeled/CAMS) · rerun: `[exact curl]`
45*Advisory reading — for medical-grade decisions use official local monitoring.*
46
47## Quality Checks
48
49- [ ] The band appears with the number — never a bare AQI value
50- [ ] US vs European AQI is disambiguated
51- [ ] The read addresses the stated activity, not generic health advice
52- [ ] Timing questions get the hourly series, not a single reading
53- [ ] The modeled-data caveat appears when precision matters
54
55## Anti-Patterns
56
57- [ ] Do not answer from memory — fetch or hand over the command
58- [ ] Do not mix up the two AQI scales — a European 80 and a US 80 are different airs
59- [ ] Do not medicalize — bands and general guidance, with sensitive cases routed to official sources
60- [ ] Do not judge a whole day by one hour when the question is "when"
61- [ ] Do not dump all pollutants undigested — lead with the one the question is about