orthogonal-weather-forecast

Get weather forecasts - temperature, precipitation, wind, and conditions

380 stars

Best use case

orthogonal-weather-forecast is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Get weather forecasts - temperature, precipitation, wind, and conditions

Teams using orthogonal-weather-forecast 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

$curl -o ~/.claude/skills/orthogonal-weather-forecast/SKILL.md --create-dirs "https://raw.githubusercontent.com/gooseworks-ai/goose-skills/main/skills/capabilities/orthogonal-weather-forecast/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/orthogonal-weather-forecast/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How orthogonal-weather-forecast Compares

Feature / Agentorthogonal-weather-forecastStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Get weather forecasts - temperature, precipitation, wind, and conditions

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

# Weather Forecast

## Setup

Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```

If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`

All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`


Get weather forecasts including temperature, precipitation, wind, and humidity for any location.

## When to Use

- User asks about weather
- User wants to know if it will rain
- User asks "what's the weather in [location]?"
- Planning outdoor activities
- Travel weather checks

## How It Works

Uses the Precip API to get weather data from meteorological sources.

## Usage

### Get Daily Forecast

```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/daily","query":{"latitude":"37.7749","longitude":"-122.4194","start":"2026-02-14","end":"2026-02-21"}}'
```

<details>
<summary>curl equivalent</summary>

```bash
curl -X POST "https://api.orth.sh/v1/run" \

  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/daily","query":{"latitude":"37.7749","longitude":"-122.4194","start":"2026-02-14","end":"2026-02-21"}}'
```
</details>

### Get Hourly Forecast

```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/hourly","query":{"latitude":"37.7749","longitude":"-122.4194","start":"2026-02-14","end":"2026-02-15"}}'
```

### Get Temperature by Hour

```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/temperature-hourly","query":{"latitude":"37.7749","longitude":"-122.4194","start":"2026-02-14","end":"2026-02-15"}}'
```

### Get Recent Rain Data

```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/recent-rain","query":{"latitude":"37.7749","longitude":"-122.4194"}}'
```

### Get Last 48 Hours

```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/last-48","query":{"latitude":"37.7749","longitude":"-122.4194"}}'
```

## Parameters

- **latitude** (required) - Latitude (e.g., 37.7749)
- **longitude** (required) - Longitude (e.g., -122.4194)
- **start** (required for forecasts) - Start date (YYYY-MM-DD format)
- **end** (required for forecasts) - End date (YYYY-MM-DD format)

## Common Coordinates

- San Francisco: latitude=37.7749, longitude=-122.4194
- New York: latitude=40.7128, longitude=-74.0060
- Los Angeles: latitude=34.0522, longitude=-118.2437
- London: latitude=51.5074, longitude=-0.1278
- Tokyo: latitude=35.6762, longitude=139.6503

## Response

All endpoints return GeoJSON `FeatureCollection` with coordinates in `geometry` and weather data in `properties`.

### `/api/v1/daily` — properties.days[] array
- **precip** (number) - Total precipitation in mm
- **rain** / **snow** (number) - Rain and snow amounts in mm
- **precip_probability** (number|null) - Probability 0-100 (null for observations)
- **precip_type** (string) - `rain`, `snow`, `sleet`, or `freezing_rain`
- **startTime** (string) - ISO 8601 timestamp
- **source** (string) - `observation` or `forecast`

### `/api/v1/hourly` — properties.hours[] array
Same fields as daily, plus:
- **slr** (number) - Snow-to-liquid ratio

### `/api/v1/temperature-hourly` — properties.hours[] array
- **temperature** (number) - Temperature in °C
- **startTime** (string) - ISO 8601 timestamp

### `/api/v1/recent-rain` — properties (single object)
- **precip** (number) - Total precipitation in mm
- **rain** / **snow** / **sleet** / **freezing_rain** (number) - Breakdown by type in mm
- **precip_type** (string) - Dominant precipitation type
- **startTime** / **endTime** (string) - Time window of the observation
- **ago** (string) - Human-readable time since last data (e.g., "2 hours")
- **details** (string) - Data freshness note

### `/api/v1/last-48` — properties (single object)
- **precip** (number) - Total precipitation in last 48 hours in mm
- **rain** / **snow** / **sleet** / **freezing_rain** (number) - Breakdown by type in mm
- **precip_type** (string) - Dominant precipitation type
- **slr** (number) - Snow-to-liquid ratio
- **endTime** (string) - End of the 48-hour window

## Examples

**User:** "What's the weather in San Francisco this week?"
```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/daily","query":{"latitude":"37.7749","longitude":"-122.4194","start":"2026-02-14","end":"2026-02-21"}}'
```

**User:** "Will it rain in NYC tomorrow?"
```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/hourly","query":{"latitude":"40.7128","longitude":"-74.0060","start":"2026-02-15","end":"2026-02-16"}}'
```

**User:** "How much rain fell in Seattle recently?"
```bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"precip","path":"/api/v1/recent-rain","query":{"latitude":"47.6062","longitude":"-122.3321"}}'
```

## Error Handling

- **400** - Missing required parameters (`latitude`, `longitude`, or date range for daily/hourly)
- **422** - Invalid date format — must be `YYYY-MM-DD`
- `precip_probability: null` means the data is from observations, not forecasts
- `source: "observation"` = historical data; `source: "forecast"` = predicted
- All precipitation values are in millimeters (mm), temperatures in Celsius (°C)

## Tips

- Convert city names to coordinates before calling
- Use current date for start, add days for end
- Date format must be YYYY-MM-DD
- recent-rain and last-48 don't need date parameters

Related Skills

orthogonal-yc-batch-evaluator

380
from gooseworks-ai/goose-skills

Evaluate YC batch companies for investment — scrapes the YC directory, researches each company and its founders (work history, LinkedIn, website), assesses founder-company fit, and exports to Google Sheets with priority rankings. Use when asked to evaluate YC companies, research a YC batch, screen startups, or do due diligence on YC companies.

orthogonal-website-screenshot

380
from gooseworks-ai/goose-skills

Take screenshots of websites and web pages

orthogonal-weather

380
from gooseworks-ai/goose-skills

Get current weather and forecasts using free APIs (no API key required). Use when asked about weather, temperature, forecasts, or climate conditions for any location.

orthogonal-vhs-terminal-recordings

380
from gooseworks-ai/goose-skills

Create polished terminal GIF recordings using VHS (Video Hardware Software) by Charmbracelet. Use when asked to create terminal demos, CLI gifs, command-line recordings, or animated terminal screenshots for documentation, READMEs, or marketing.

orthogonal-verify-email

380
from gooseworks-ai/goose-skills

Verify if an email address is valid and deliverable

orthogonal-valyu

380
from gooseworks-ai/goose-skills

Web search, AI answers, content extraction, and async deep research

orthogonal-uptime-monitor

380
from gooseworks-ai/goose-skills

Monitor website uptime - check availability, response times, and status

orthogonal-twitter-profile-lookup

380
from gooseworks-ai/goose-skills

Look up Twitter/X profiles - get bio, followers, tweets, and engagement

orthogonal-tomba

380
from gooseworks-ai/goose-skills

Email finder and verifier - find emails from domains, LinkedIn, or company search

orthogonal-tiktok-search

380
from gooseworks-ai/goose-skills

Search TikTok - find profiles, videos, hashtags, and trending content

orthogonal-textbelt

380
from gooseworks-ai/goose-skills

Send SMS messages programmatically - simple HTTP API for text messaging

orthogonal-team-linkedin-profiles

380
from gooseworks-ai/goose-skills

Find LinkedIn profiles of a specific team or department at a company. Use when asked to get LinkedIn profiles, find team members, or look up people in a particular team/department/group at a company.