# Send Stormglass Surf & Ocean Data to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "stormglass",
    "name": "Stormglass Surf & Ocean Data",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/dgorissen/stormglass",
    "canonicalUrl": "https://clawhub.ai/dgorissen/stormglass",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/stormglass",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=stormglass",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "reference.md",
      "examples.md",
      "README.md",
      "scripts/test_surf_report.py",
      "scripts/normalize_surf_data.py"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "stormglass",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T06:17:40.815Z",
      "expiresAt": "2026-05-07T06:17:40.815Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=stormglass",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=stormglass",
        "contentDisposition": "attachment; filename=\"stormglass-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "stormglass"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/stormglass"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/stormglass",
    "downloadUrl": "https://openagent3.xyz/downloads/stormglass",
    "agentUrl": "https://openagent3.xyz/skills/stormglass/agent",
    "manifestUrl": "https://openagent3.xyz/skills/stormglass/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/stormglass/agent.md"
  }
}
```
## Documentation

### Purpose

Produce machine-readable surf condition data for cron-driven agent pipelines.

This skill resolves a surf spot name with Google Geocoding (or uses direct coordinates), queries Stormglass, and returns a stable JSON payload for downstream interpretation/rendering.

### Inputs

Provide exactly one location mode:

--location "Spot name" (optional country/region in string), or
--lat <float> --lon <float>

Optional controls:

--horizon now|24h|48h|72h (default 72h)
--output json|pretty (default json, recommended for automation)
--source <comma-separated provider list>
--mock (offline deterministic data; useful for tests)

### Required Environment Variables

STORMGLASS_API_KEY for Stormglass requests
GOOGLE_GEOCODING_API_KEY optional for --location (if absent, script falls back to OpenStreetMap Nominatim)

In --mock mode, no API keys are required.

### Credential Matrix

ModeSTORMGLASS_API_KEYGOOGLE_GEOCODING_API_KEY--mocknot requirednot requiredlive --lat/--lonrequirednot requiredlive --location with Googlerequiredoptional (preferred when set)live --location with OSM fallbackrequirednot required

Primary credential is STORMGLASS_API_KEY.

### Execution Commands

JSON output for cron:

python scripts/surf_report.py --location "Highcliffe Beach" --horizon 72h --output json

Direct coordinates:

python scripts/surf_report.py --lat 50.735 --lon -1.705 --horizon 24h --output json

Offline test run:

python scripts/surf_report.py --location "Highcliffe Beach" --horizon now --mock --output json

### Output Contract (JSON-first)

Top-level keys are stable:

meta: request metadata, timestamps, input mode, optional warnings
location: resolved place details and coordinates
now: instantaneous surf-relevant metrics
forecast: horizon summaries and best windows
tides: tide extremes and inferred current tide trend

Expected metric coverage (null if unavailable):

waveHeightM
swellHeightM
swellPeriodS
swellDirectionDeg
windSpeedMps
windDirectionDeg
windGustMps
waterTemperatureC

### Exit Codes

0: success
2: invalid CLI usage/arguments
3: missing API keys/configuration
4: external API failure (geocoding/Stormglass)
5: response parsing/normalization failure

### Agent Handoff Rules

Prefer --output json for downstream agents.
Treat null metrics as "not provided by source", not zero.
Read field-level details in reference.md.
Use examples.md for prompt and command patterns.
Use scripts/test_surf_report.py before cron rollout.
Optional: use scripts/normalize_surf_data.py to enforce strict schema defaults before rendering.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: dgorissen
- Version: 1.0.2
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T06:17:40.815Z
- Expires at: 2026-05-07T06:17:40.815Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/stormglass)
- [Send to Agent page](https://openagent3.xyz/skills/stormglass/agent)
- [JSON manifest](https://openagent3.xyz/skills/stormglass/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/stormglass/agent.md)
- [Download page](https://openagent3.xyz/downloads/stormglass)