Skip to content
Back to skills

Surf Check

ASecurity

Surf forecast decision engine. Outputs surfable conditions for agent alerting.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
code-qualitygobashnodedebugginggit

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 15 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add johnalbertini14-glitch/openclaw-skills --skill surf-check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Surf Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Surf Check
[![Security: A โ€” Skills Directory](https://www.skillsdirectory.com/api/skills/johnalbertini14-glitch-surf-check/badge)](https://www.skillsdirectory.com/skills/johnalbertini14-glitch-surf-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: surf-check
description: Surf forecast decision engine. Outputs surfable conditions for agent alerting.
metadata: {"openclaw":{"emoji":"๐Ÿ„","homepage":"https://github.com/kevinmcnamee/surf-check","requires":{"bins":["node","npx"],"env":[]},"config":[{"id":"surfline_email","label":"Surfline Email","type":"string","env":"SURFLINE_EMAIL","optional":true},{"id":"surfline_password","label":"Surfline Password","type":"secret","env":"SURFLINE_PASSWORD","optional":true}]}}
---

# surf-check

Checks surf forecasts and tells you when conditions are worth paddling out.

## Quick Start

```bash
cd {baseDir} && npm install
npm run check
```

## Commands

Run from the skill directory:

```bash
cd {baseDir} && npm run check
```

| Command | When to Use |
|---------|-------------|
| `npm run check` | User asks about surf conditions |
| `npm run check:debug` | Debugging why a day did/didn't qualify |
| `npm run check:json` | When you need structured data |
| `npm run check:cron` | Automated checks (cron job uses this) |

## Sample Output

```
๐Ÿ„ **Surf Forecast Summary**

**Belmar (16th Ave)**
โ€ข Saturday: 2-3ft (Fair)

**Long Branch**
โ€ข Saturday: 2-3ft (Fair)
```

If nothing meets thresholds, output is empty (cron mode) or shows "No surfable conditions in the forecast."

## Decision Thresholds

| Days Out | Minimum Rating | Why |
|----------|----------------|-----|
| 4+ days | Fair-Good+ | Forecasts are fuzzy, need high confidence |
| 1-3 days | Fair+ | Sweet spot for planning |
| Day of | Good+ (before 8am) | Only if it's actually firing |

Wave height: 2-6ft (configured in `src/types.ts`)

## Your Job

When conditions are surfable:
1. **Summarize naturally** โ€” "Looks like Saturday could be good at Belmar, 2-3ft and Fair conditions"
2. **Include the day and spot** โ€” user needs to know when and where
3. **Don't over-explain the ratings** โ€” surfers know what Fair/Good means

When user asks about surf:
- Run `npm run check` and summarize the output
- If nothing's showing up, check `npm run check:debug` to see why

## Configuration

Default spots: Belmar (16th Ave), Long Branch (NJ)

To customize, create `~/.surf-check.json`:

```json
{
  "spots": [
    { "id": "5842041f4e65fad6a7708a01", "name": "My Local Break" }
  ],
  "waveMin": 2,
  "waveMax": 6
}
```

Find spot IDs from Surfline URLs:
```
https://www.surfline.com/surf-report/spot-name/5842041f4e65fad6a7708a01
                                              โ””โ”€โ”€ spot ID
```

## OpenClaw Cron Integration

```json
{
  "name": "surf-check",
  "schedule": { "kind": "cron", "expr": "0 */6 * * *", "tz": "America/New_York" },
  "payload": {
    "kind": "systemEvent",
    "text": "Run: cd {baseDir} && npm run check:cron"
  },
  "sessionTarget": "main"
}
```

When cron fires:
- You receive output as a system event
- Only *new* conditions are shown (state tracking prevents duplicates)
- If output is empty, nothing qualified or already reported

## Troubleshooting

**No output from cron:** Normal if nothing qualifies or already reported. Run `npm run check:debug` to see evaluation.

**Reset state:** `rm {baseDir}/data/state.json` to re-report all conditions.

**Add a spot:** Edit `src/types.ts` or use `~/.surf-check.json` config.

Files in this skill

  • README.md7.1 KB
  • SKILL.md3.2 KB
  • _meta.json278 B
  • package-lock.json18.8 KB
  • package.json1.1 KB
  • scripts/check-forecast.ts4.1 KB
  • scripts/login-surfline.ts3.7 KB
  • src/config.ts3.1 KB
  • src/providers/noaa.ts5 KB
  • src/providers/surfline-premium.ts5.9 KB
  • src/providers/surfline.ts5.9 KB
  • src/services/alerts.ts8.7 KB
  • src/services/state.ts3 KB
  • src/types.ts5.6 KB
  • tsconfig.json492 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in code-quality โ†’

Comments

Loading commentsโ€ฆ

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.