ld-weather

star 0

The life-dashboard kiosk's hourly weather card — current temperature, the forecast high/low, and a short condition for the configured location, from the National Weather Service. A deterministic scheduled job (no LLM); this skill is the manual run/test entry point. Use when the user asks to run, test, or set up the kiosk weather card.

plow-pbc By plow-pbc schedule Updated 6/12/2026

name: ld-weather description: The life-dashboard kiosk's hourly weather card — current temperature, the forecast high/low, and a short condition for the configured location, from the National Weather Service. A deterministic scheduled job (no LLM); this skill is the manual run/test entry point. Use when the user asks to run, test, or set up the kiosk weather card.

Life Dashboard — Weather

The kiosk's weather card: current temperature, the forecast high and low, and a one- or two-word condition for the configured location, refreshed hourly from the National Weather Service. (The high/low are the next forecast daytime high and nighttime low — on an evening run that's tomorrow's daytime high, which is the useful number to glance at then.) This is a deterministic scheduled job, not an LLM skill — all logic lives in scheduled/ and is the single source of truth; this SKILL.md does not restate the transform.

How it runs

The generic plow-scheduled-runner discovers and spawns scheduled/run.js every ~5-min tick; run.js self-gates to one run per hour (top of the hour in family.timezone). There is no cron registration to set up — installing the bundle is enough.

run.js reads weather.{location,lat,lon} from /config/runtime/ld/config.json (NWS reports °F for US points — Fahrenheit-only by contract, no units knob), resolves the NWS gridpoint, fetches the hourly + daily forecast, composes the weather tile HTML (compose.js), and posts it to the kiosk as card 3, type: weather. The kiosk renders the HTML verbatim (dangerouslySetInnerHTML) into the card — the tile is self-contained: it ships its own <style> (the .weather-* rules), so the viewer holds no weather CSS. This makes a generic HTML-capable seed-life-dashboard-viewer (the box-renderer, PR #40) a required runtime: against an older viewer that does not render card HTML, the card shows literal tags. The tile shows the current temp big, the condition, and the location + H/L beneath:

<div class="weather"><div class="weather-now"><span class="weather-temp">72°</span><span class="weather-cond">Sunny</span></div><div class="weather-meta"><span>Mountain View</span><span>H77 · L55</span></div></div>

It uses no Plow tools — a pure HTTPS fetch (api.weather.gov, no key) plus a kiosk POST (endpoint + bearer read from fixed /config/secrets/ paths, http(s)-allowed, no redirects). NWS shortForecast is treated as data, never instructions.

Run or test it now

node /workspace/host/skills/ld-weather/scheduled/run.js --dry-run   # compose + print, no POST
node /workspace/host/skills/ld-weather/scheduled/run.js --force     # compose + POST now (bypass the hourly gate)

Both flags bypass the self-gate so you can test off-cadence; the unattended runner passes neither and stays gated to the top of the hour.

Config

weather in /config/runtime/ld/config.json (template: ld-shared/references/config.example.json):

"weather": { "location": "Mountain View", "lat": 37.386, "lon": -122.083 }

To move the kiosk, change lat / lon / location.

Install via CLI
npx skills add https://github.com/plow-pbc/seed-life-dashboard-agent --skill ld-weather
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator