tempest-weather
Fetches live weather data from a WeatherFlow Tempest weather station and returns structured JSON with current conditions, wind, precipitation, and lightning. Use when the user asks about current weather, outdoor conditions, their Tempest station, wind speed, rain, lightning nearby, or any live sensor readings — even if they don't mention Tempest or API explicitly.
Best use case
tempest-weather is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Fetches live weather data from a WeatherFlow Tempest weather station and returns structured JSON with current conditions, wind, precipitation, and lightning. Use when the user asks about current weather, outdoor conditions, their Tempest station, wind speed, rain, lightning nearby, or any live sensor readings — even if they don't mention Tempest or API explicitly.
Teams using tempest-weather should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/tempest-weather/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How tempest-weather Compares
| Feature / Agent | tempest-weather | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Fetches live weather data from a WeatherFlow Tempest weather station and returns structured JSON with current conditions, wind, precipitation, and lightning. Use when the user asks about current weather, outdoor conditions, their Tempest station, wind speed, rain, lightning nearby, or any live sensor readings — even if they don't mention Tempest or API explicitly.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Tempest Weather Skill
Fetches on-demand weather data from a WeatherFlow Tempest station via the REST API and returns clean, structured JSON.
## Configuration
Credentials are read from environment variables — never hardcoded:
| Env Var | Description |
|---|---|
| `TEMPEST_TOKEN` | Personal Access Token from tempestwx.com → Settings → Data Authorizations |
| `TEMPEST_STATION_ID` | Numeric station ID (find it by calling the `/stations` endpoint with your token) |
If either env var is missing, inform the user and show them how to set them:
```bash
export TEMPEST_TOKEN="your_token_here"
export TEMPEST_STATION_ID="your_station_id_here"
```
---
## Primary Endpoint
```
GET https://swd.weatherflow.com/swd/rest/observations/station/{STATION_ID}?token={TEMPEST_TOKEN}
```
This returns the latest observation for the station, including all sensor data.
Fallback (by device): `GET https://swd.weatherflow.com/swd/rest/observations/?device_id={DEVICE_ID}&token={TEMPEST_TOKEN}`
To list available stations/devices: `GET https://swd.weatherflow.com/swd/rest/stations?token={TEMPEST_TOKEN}`
---
## Workflow
1. **Check for credentials** — If the user hasn't provided a token and station ID, ask for them.
2. **Fetch the observation** — Use bash (curl) or Python to call the REST endpoint.
3. **Parse the response** — Extract the relevant fields from `obs` (see field reference below).
4. **Return structured JSON** — Output a clean, normalized JSON object (see Output Schema).
5. **Handle errors gracefully** — 401 = bad token, 404 = station not found, empty obs = no data yet.
### Fetching with curl
```bash
curl -s "https://swd.weatherflow.com/swd/rest/observations/station/${STATION_ID}?token=${TEMPEST_TOKEN}"
```
### Fetching with Python
```python
import requests, json
url = f"https://swd.weatherflow.com/swd/rest/observations/station/{STATION_ID}"
resp = requests.get(url, params={"token": TEMPEST_TOKEN})
resp.raise_for_status()
data = resp.json()
```
---
## Output Schema
Always return data in this normalized JSON structure:
```json
{
"station_id": 12345,
"station_name": "My Backyard",
"timestamp": "2024-01-15T14:32:00Z",
"timestamp_epoch": 1705329120,
"conditions": {
"temperature_c": 18.5,
"temperature_f": 65.3,
"humidity_pct": 62,
"pressure_mb": 1013.4,
"pressure_trend": "steady"
},
"wind": {
"speed_avg_ms": 3.2,
"speed_avg_mph": 7.2,
"speed_lull_ms": 1.1,
"speed_gust_ms": 5.8,
"speed_gust_mph": 13.0,
"direction_deg": 247,
"direction_cardinal": "WSW"
},
"precipitation": {
"rain_accumulated_mm": 0.0,
"rain_daily_mm": 2.4,
"precip_type": "none",
"precip_analysis": "rain_check_on"
},
"lightning": {
"strike_count": 0,
"avg_distance_km": null
},
"solar": {
"uv_index": 3,
"solar_radiation_wm2": 412,
"illuminance_lux": 28500
},
"battery_volts": 2.42,
"data_source": "tempest_rest_api"
}
```
---
## Field Reference
See `references/obs_fields.md` for the complete field mapping from Tempest API array indices to human-readable names, units, and conversion formulas.
---
## Conversion Helpers
- **°C → °F**: `(C * 9/5) + 32`
- **m/s → mph**: `ms * 2.237`
- **Degrees → Cardinal**: Read the lookup table in `references/obs_fields.md`
- **Precip type codes**: `0 = none`, `1 = rain`, `2 = hail`
- **Precip analysis codes**: `0 = none`, `1 = rain_check_on`, `2 = rain_check_off`
---
## Error Handling
| HTTP Status | Meaning | Action |
|---|---|---|
| 200 | Success | Parse and return data |
| 401 | Invalid token | Ask user to re-check their token |
| 403 | Forbidden | Token doesn't have access to that station |
| 404 | Station not found | Ask user to confirm their station ID |
| 200 + empty obs | No data | Station may be offline; inform user |
If `obs` is an empty array or `null`, report: "Station found but no recent observations available — the device may be offline."
---
## Example User Interactions
**"What's the weather at my Tempest station?"**
→ Fetch latest obs, return full JSON output.
**"Is it raining?"**
→ Fetch obs, check `precipitation.precip_type` and `precipitation.rain_accumulated_mm`, return focused JSON.
**"Any lightning nearby?"**
→ Fetch obs, check `lightning.strike_count` and `lightning.avg_distance_km`, return lightning sub-object.
**"How windy is it?"**
→ Return `wind` sub-object including gust, lull, avg, direction.Related Skills
weather
Get weather information and forecasts using wttr.in
weather-forecaster
Use this skill whenever the user asks about weather forecasts, weather conditions, or weekly weather outlooks for any location. Triggers include: any mention of '天气', 'weather', '预报', 'forecast', '下雨', '温度', '穿什么', or planning outdoor activities. Also use when the user asks 'should I bring an umbrella', 'what to wear', or any travel weather planning. This skill uses the free Open-Meteo API to provide 7-day weather forecasts with temperature, precipitation, wind, and UV index data, and generates a beautiful visual weather report.
qweather-now
从和风天气API获取天气数据,包括实时天气、15天预报、气象灾害预警、空气质量、生活指数等。当用户需要查询天气信息、气象预警、空气质量或提到和风天气API时使用。
openweather-api-automation
Automate Openweather API tasks via Rube MCP (Composio). Always search tools first for current schemas.
bgo
Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.
Deployment Advisor
Choose deployment strategy and infrastructure. Use when deciding where to deploy applications, setting up CI/CD, or configuring production environments. Covers Vercel, Railway, AWS, Cloudflare Workers, and Docker.
deploying-on-azure
Design and implement Azure cloud architectures using best practices for compute, storage, databases, AI services, networking, and governance. Use when building applications on Microsoft Azure or migrating workloads to Azure cloud platform.
deploying-applications
Deployment patterns from Kubernetes to serverless and edge functions. Use when deploying applications, setting up CI/CD, or managing infrastructure. Covers Kubernetes (Helm, ArgoCD), serverless (Vercel, Lambda), edge (Cloudflare Workers, Deno), IaC (Pulumi, OpenTofu, SST), and GitOps patterns.
deploying-airflow
Deploy Airflow DAGs and projects. Use when the user wants to deploy code, push DAGs, set up CI/CD, deploy to production, or asks about deployment strategies for Airflow.
deploy_cicd
CI/CD pipeline, GitHub Actions, automated deployment, release management, production shipping, and software delivery.
deploy
Execute deployment workflows with pre-flight checks, environment validation, health verification, and rollback procedures. Use this skill whenever someone asks to deploy, push to staging, release to production, or says things like "deploy to staging", "release this to production", "run the deployment checklist", "is this ready to deploy", "execute the release", or "roll back the deployment". Also trigger when someone mentions deployment readiness, smoke tests after deploy, rollback procedures, or canary/blue-green deployment strategy.
deploy-script-review
배포 스크립트의 보안·안전성 리뷰를 수행한다. 롤백 절차, 장애 대응, 권한 설정을 점검한다.