Skills marine-forecast

Marine and sailing weather via Open-Meteo. Waves, swell, sea temperature, wind, tides, ocean currents, and sailing assessments. Free, no API key, global coverage.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/alexissan/marine-forecast" ~/.claude/skills/clawdbot-skills-marine-forecast && rm -rf "$T"
manifest: skills/alexissan/marine-forecast/SKILL.md
source content

Marine Forecast

Marine and sailing weather using Open-Meteo Marine API + Weather API. Free, no API key required, works worldwide.

Two APIs are used together — replace

LAT
,
LON
, and
TZ
in all commands:

  • Marine API (
    marine-api.open-meteo.com
    ) — waves, swell, sea temp, currents, tides
  • Weather API (
    api.open-meteo.com
    ) — wind, gusts, air temp, pressure, visibility

Find coordinates for any location using web search or the user's input. Use the nearest timezone (IANA format, e.g.

Europe/London
,
America/New_York
,
Atlantic/Canary
).

Current conditions

Sea state:

curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&current=wave_height,wave_direction,wave_period,swell_wave_height,swell_wave_direction,swell_wave_period,sea_surface_temperature&timezone=TZ"

Wind and atmosphere:

curl -s "https://api.open-meteo.com/v1/forecast?latitude=LAT&longitude=LON&current=temperature_2m,wind_speed_10m,wind_direction_10m,wind_gusts_10m,apparent_temperature,pressure_msl,cloud_cover,visibility&timezone=TZ"

Run both and combine the results into a single briefing.

Hourly forecast

Marine (up to 16 days, adjust

forecast_days
):

curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&hourly=wave_height,wave_direction,wave_period,swell_wave_height,swell_wave_direction,swell_wave_period,swell_wave_peak_period,wind_wave_height,wind_wave_direction,sea_surface_temperature,ocean_current_velocity,ocean_current_direction,sea_level_height_msl&forecast_days=3&timezone=TZ"

Wind (up to 16 days):

curl -s "https://api.open-meteo.com/v1/forecast?latitude=LAT&longitude=LON&hourly=wind_speed_10m,wind_direction_10m,wind_gusts_10m,temperature_2m,pressure_msl,visibility,cloud_cover,precipitation_probability&forecast_days=3&timezone=TZ"

Daily summary

Marine:

curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&daily=wave_height_max,wave_direction_dominant,wave_period_max,swell_wave_height_max,swell_wave_direction_dominant,swell_wave_period_max&forecast_days=7&timezone=TZ"

Weather:

curl -s "https://api.open-meteo.com/v1/forecast?latitude=LAT&longitude=LON&daily=wind_speed_10m_max,wind_gusts_10m_max,wind_direction_10m_dominant,temperature_2m_max,temperature_2m_min,sunrise,sunset,uv_index_max,precipitation_probability_max&forecast_days=7&timezone=TZ"

Tides (sea level)

curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&hourly=sea_level_height_msl&forecast_days=3&timezone=TZ"

High/low tide: find local maxima and minima in the

sea_level_height_msl
array. Sea level includes tidal signal + inverted barometer effect.

Ocean currents

curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&hourly=ocean_current_velocity,ocean_current_direction&forecast_days=3&timezone=TZ"

Presenting results

Always present marine data as a structured sailing briefing:

Current conditions format

Sea:    [wave_height]m waves, [wave_period]s period, from [direction]
Swell:  [swell_wave_height]m from [direction], [swell_wave_period]s period
Wind:   [wind_speed] km/h [direction], gusts [wind_gusts] km/h
Temp:   Air [temperature]C (feels [apparent_temperature]C), Sea [sea_surface_temperature]C
Sky:    [cloud_cover]% cloud, [visibility/1000]km visibility

Sailing assessment

Rate conditions based on the data:

  • Calm — waves < 0.5m, wind < 12 km/h (Beaufort 0-2)
  • Light — waves 0.5-1m, wind 12-19 km/h (Beaufort 3)
  • Moderate — waves 1-2m, wind 20-38 km/h (Beaufort 4-5)
  • Rough — waves 2-3m, wind 39-49 km/h (Beaufort 6)
  • Very Rough — waves 3-4m, wind 50-61 km/h (Beaufort 7)
  • Dangerous — waves > 4m or wind > 62 km/h (Beaufort 8+)

Flag warnings:

  • Small craft advisory: wind gusts > 50 km/h or wave height > 3m
  • Gale warning: sustained wind > 62 km/h or wave height > 5m
  • Suggest activity suitability: sailing, diving, fishing, swimming, surfing

Beaufort scale

Forcekm/hDescriptionSea State
00-1CalmFlat
12-5Light airRipples
26-11Light breezeSmall wavelets
312-19Gentle breezeLarge wavelets
420-28Moderate breezeSmall waves
529-38Fresh breezeModerate waves
639-49Strong breezeLarge waves
750-61Near galeBreaking waves
862-74GaleHigh waves
975-88Severe galeVery high waves
1089-102StormExceptionally high waves

Wind direction conversion

Convert degrees to compass: divide by 22.5, round, index into

[N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW]
.

Quick reference: 0=N, 45=NE, 90=E, 135=SE, 180=S, 225=SW, 270=W, 315=NW.

Units

MeasurementUnit
Wave heightmeters (m)
Wave periodseconds (s)
Wind speedkm/h
TemperatureCelsius (C)
Current velocitykm/h
Directionsdegrees (0=N, 90=E, 180=S, 270=W)
Sea levelmeters relative to MSL
Visibilitymeters
PressurehPa

Users may prefer knots for wind. Convert:

knots = km/h * 0.539957
. Add
&wind_speed_unit=kn
to the weather API URL to get knots directly.

Popular sailing locations (reference)

RegionExampleLatLon
Canary IslandsLas Palmas28.1-15.4
BalearicsPalma de Mallorca39.572.65
Greek IslandsPiraeus37.9423.65
CroatiaSplit43.5116.44
CaribbeanSt. Maarten18.04-63.05
South PacificTahiti-17.53-149.57
Southeast AsiaPhuket7.8898.39
East AfricaZanzibar-6.1639.19
AustraliaSydney-33.87151.21
US East CoastAnnapolis38.97-76.49
UKSolent50.77-1.30
ScandinaviaGothenburg57.7111.97

Data sources

  • ECMWF WAM (European Centre for Medium-Range Weather Forecasts)
  • NOAA GFS Wave (Global Forecast System)
  • DWD GWAM/EWAM (German Weather Service)
  • Resolution: 5-25 km depending on region and model
  • Updates: multiple times per day
  • Forecast range: up to 16 days (
    forecast_days=16
    )

Notes

  • All data is JSON. Parse with
    jq
    if available, otherwise read raw JSON.
  • Hourly data returns large arrays. For quick checks, use
    current
    parameters. For planning, use
    daily
    . Use
    hourly
    only when the user needs detailed breakdowns.
  • Combine marine + weather API calls to give a complete picture. Neither alone is sufficient for a full sailing briefing.
  • Sea level data approximates tides but does not label high/low explicitly. Derive from local maxima/minima in the hourly array.
  • For coastal areas, data accuracy depends on proximity to the nearest grid point. Open ocean coverage is excellent; harbors and bays may be less precise.

Docs: https://open-meteo.com/en/docs/marine-weather-api