skills/air-quality/SKILL.md
Check current air quality and pollution levels at NSW monitoring stations. Use this skill when the user asks about air quality, AQI, PM2.5, PM10, pollution levels, smoke, haze, whether it's safe to run or exercise outside, bushfire smoke, or air quality health advice. Works with zero configuration — no API keys needed.
npx skillsauth add agairola/life-skills air-qualityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Check current air quality and pollution levels at NSW monitoring stations. Zero config — no API keys, no setup.
npx skills add agairola/life-skills --skill air-quality
Trigger this skill when the user:
brew install uv (macOS) or pip install uv (all platforms)uv run.!command -v uv > /dev/null 2>&1 && echo "uv: installed" || echo "uv: NOT INSTALLED"
Follow the standard location resolution steps in ../../references/location-flow.md before running the script. Skill-specific additions:
--site instead of location flags.uv run "${CLAUDE_SKILL_DIR}/scripts/air_quality.py" [LOCATION_FLAGS] [OPTIONS]
| Flag | Values | Default | Purpose |
|------|--------|---------|---------|
| --location | suburb/city name | (none) | Specify location by name |
| --lat | decimal degrees | (none) | Latitude |
| --lng | decimal degrees | (none) | Longitude |
| --site | monitoring site name | (none) | Direct site lookup (fuzzy matched) |
| --pollutant | PM2.5 PM10 O3 NO2 CO NEPH | (all) | Filter to a specific pollutant |
| --no-cache | (flag) | off | Force fresh data |
Only parse stdout (JSON). Stderr contains diagnostics only.
# User shared location via chat platform
uv run "${CLAUDE_SKILL_DIR}/scripts/air_quality.py" --lat -33.92 --lng 151.23
# User mentioned a place
uv run "${CLAUDE_SKILL_DIR}/scripts/air_quality.py" --location "Randwick"
# User asked about a specific monitoring station
uv run "${CLAUDE_SKILL_DIR}/scripts/air_quality.py" --site "RANDWICK"
# Auto-detect location (terminal — opens browser on first run)
uv run "${CLAUDE_SKILL_DIR}/scripts/air_quality.py"
# Specific pollutant
uv run "${CLAUDE_SKILL_DIR}/scripts/air_quality.py" --location "Parramatta" --pollutant PM2.5
# Force fresh data
uv run "${CLAUDE_SKILL_DIR}/scripts/air_quality.py" --location "Chullora" --no-cache
Follow the formatting rules in ../../references/platform-formatting.md. Key skill-specific formatting below.
General mode (no pollutant filter): Show all readings + overall category + health advice.
For platforms with hyperlinks (Telegram, Discord, terminal):
Air quality near [location] ([site name], [distance]km away):
Overall: Good
Health: Air quality is good. Enjoy outdoor activities.
Exercise: Safe to exercise outdoors.
Readings (10:00-11:00):
PM2.5 — 8.2 µg/m³ (Good)
PM10 — 15.0 µg/m³ (Good)
O3 — 3.1 pphm (Good)
NO2 — 0.8 pphm (Good)
CO — 0.2 ppm (Good)
NEPH — 0.5 10⁻⁴ m⁻¹ (Good)
Station: RANDWICK · Sydney East
For platforms without hyperlinks (WhatsApp, Signal, SMS):
Air quality near [location] ([site name], [distance]km away):
Overall: Good
Health: Air quality is good. Enjoy outdoor activities.
Exercise: Safe to exercise outdoors.
Readings (10:00-11:00):
PM2.5 — 8.2 µg/m³ (Good)
PM10 — 15.0 µg/m³ (Good)
O3 — 3.1 pphm (Good)
NO2 — 0.8 pphm (Good)
CO — 0.2 ppm (Good)
NEPH — 0.5 10⁻⁴ m⁻¹ (Good)
Station: RANDWICK · Sydney East
Exercise mode (user asked "is it safe to run/exercise outside?"): Lead with the exercise safety answer, then category + exercise advice.
Safe to exercise outdoors? Yes — air quality is Good.
Exercise advice: Safe to exercise outdoors.
Health advice: Air quality is good. Enjoy outdoor activities.
Current readings at RANDWICK (10:00-11:00):
PM2.5 — 8.2 µg/m³ (Good)
PM10 — 15.0 µg/m³ (Good)
confidence: "low"): Do not silently show results. Tell the user: "I got an approximate location of [city] but it may not be exact. What suburb or postcode are you near?" Rerun with their answer.bushfire_smoke: true): Lead with the bushfire advisory prominently. Use emphasis/bold. Then show the full readings. Recommend staying indoors.| Category | Health Advice | Exercise Advice | |----------|--------------|-----------------| | Good | Air quality is good. Enjoy outdoor activities. | Safe to exercise outdoors. | | Fair | Acceptable. Sensitive people should consider reducing prolonged outdoor exertion. | Generally safe. Sensitive individuals may want to reduce intensity. | | Poor | Sensitive groups may experience health effects. Consider reducing prolonged outdoor exertion. | Consider indoor exercise. Sensitive groups should avoid outdoor exertion. | | Very Poor | Health effects likely for everyone. Reduce prolonged outdoor exertion. | Exercise indoors only. Outdoor activity not recommended. | | Extremely Poor | Health alert — everyone may experience serious health effects. Avoid outdoor activity. | Do not exercise outdoors. Stay indoors. | | Hazardous | Health emergency. Stay indoors with windows closed. Run air purifiers if available. | Do not exercise. Minimise all physical exertion. |
| Code | Name | Unit | |------|------|------| | PM2.5 | Fine Particulate Matter | µg/m³ | | PM10 | Coarse Particulate Matter | µg/m³ | | O3 | Ozone | pphm | | NO2 | Nitrogen Dioxide | pphm | | CO | Carbon Monoxide | ppm | | NEPH | Nephelometer (visibility/haze) | 10⁻⁴ m⁻¹ |
Bushfire smoke is flagged when PM2.5 > 25 µg/m³ AND (NEPH > 2.0 OR PM2.5 > 50). When detected, the JSON includes bushfire_smoke: true and a bushfire_advisory message.
When the script runs, it resolves location internally in this order:
--lat/--lng or --location (Nominatim geocoding)navigator.geolocation (WiFi, ~15-50ft accuracy, cached 24hrs)The agent should almost never reach step 3. The Location Flow above ensures the user provides location info before the script runs.
content-media
Extract transcripts from YouTube videos. Use when the user asks for a transcript, subtitles, or captions of a YouTube video and provides a YouTube URL (youtube.com/watch?v=, youtu.be/, or similar). Supports output with or without timestamps.
development
Check the current UV index and sun safety advice for Australian cities. Use this skill when the user asks about UV index, sunscreen, sun protection, sunburn risk, whether it's safe to be outside in the sun, SPF recommendation, or sun safety for any Australian city. Works with zero configuration — no API keys needed.
development
Check live traffic incidents, roadworks, and hazards in Sydney. Use this skill when the user asks about traffic jams, road closures, accidents, roadworks, traffic conditions, how the traffic is, M5 traffic, highway conditions, or any Sydney traffic question. Works without API keys (provides Live Traffic NSW/Google Maps links) but best with a free TfNSW API key for real-time incident data.
development
Check Sydney toll road prices and calculate route toll costs. Use this skill when the user asks about toll prices, toll costs, how much the toll is, M2 toll, harbour bridge toll, tunnel toll, cheapest route, toll calculator, E-Tag, Linkt, or any Sydney toll road question. Works with zero configuration — no API keys needed.