Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 23 additions & 6 deletions nanobot/skills/weather/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,48 @@ Two free services, no API keys needed.

## wttr.in (primary)

Quick one-liner:
Choose one request that matches the user's scope. Do not fetch current
conditions separately when a today or forecast request already includes them.

Platform notes:
- On Windows PowerShell, use `curl.exe`; bare `curl` may resolve to
`Invoke-WebRequest`.
- On macOS and Linux, use `curl`.

Current conditions only:
```bash
curl -s "wttr.in/London?format=3"
curl -s "https://wttr.in/London?format=3"
# Output: London: ⛅️ +8°C
```

Compact format:
Custom current conditions format:
```bash
curl -s "wttr.in/London?format=%l:+%c+%t+%h+%w"
curl -s "https://wttr.in/London?format=%l:+%c+%t+%h+%w"
# Output: London: ⛅️ +8°C 71% ↙5km/h
```

Today's weather, including current conditions (use this single request for
questions about today's weather):
```bash
curl -s "https://wttr.in/London?1&m"
```

Full forecast:
```bash
curl -s "wttr.in/London?T"
curl -s "https://wttr.in/London?T&m"
```

On Windows PowerShell, replace `curl` with `curl.exe` in the commands above.

Format codes: `%c` condition · `%t` temp · `%h` humidity · `%w` wind · `%l` location · `%m` moon

Tips:
- URL-encode spaces: `wttr.in/New+York`
- Airport codes: `wttr.in/JFK`
- Units: `?m` (metric) `?u` (USCS)
- Today only: `?1` · Current only: `?0`
- PNG: `curl -s "wttr.in/Berlin.png" -o /tmp/weather.png`
- PNG (macOS/Linux): `curl -s "https://wttr.in/Berlin.png" -o weather.png`
- PNG (Windows PowerShell): `curl.exe -s "https://wttr.in/Berlin.png" -o weather.png`

## Open-Meteo (fallback, JSON)

Expand Down
16 changes: 16 additions & 0 deletions tests/agent/test_builtin_weather_skill.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from nanobot.agent.skills import BUILTIN_SKILLS_DIR


def test_weather_skill_uses_windows_safe_single_today_request() -> None:
content = (BUILTIN_SKILLS_DIR / "weather" / "SKILL.md").read_text(encoding="utf-8")
normalized = " ".join(content.split())

assert "On Windows PowerShell, use `curl.exe`" in normalized
assert "bare `curl` may resolve to `Invoke-WebRequest`" in normalized
assert "https://wttr.in/London?1&m" in content
assert 'curl.exe -s "https://wttr.in/Berlin.png" -o weather.png' in content
assert "/tmp/weather.png" not in content
assert (
"Do not fetch current conditions separately when a today or forecast "
"request already includes them."
) in normalized
Loading