Surf Check
Surf forecast decision engine.
- Rating
- 5 (300 reviews)
- Downloads
- 2,339 downloads
- Version
- 1.0.0
Overview
Surf forecast decision engine.
Complete Documentation
View Source →
surf-check
Checks surf forecasts and tells you when conditions are worth paddling out.
Quick Start
cd {baseDir} && npm install
npm run check
Commands
Run from the skill directory:
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 |
src/types.ts)Your Job
When conditions are surfable:
- Summarize naturally — "Looks like Saturday could be good at Belmar, 2-3ft and Fair conditions"
- Include the day and spot — user needs to know when and where
- Don't over-explain the ratings — surfers know what Fair/Good means
- Run
npm run checkand summarize the output - If nothing's showing up, check
npm run check:debugto see why
Configuration
Default spots: Belmar (16th Ave), Long Branch (NJ)
To customize, create ~/.surf-check.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
{
"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.
Installation
openclaw install surf-check
💻Code Examples
npm run check
## Commands
Run from the skill directory: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• 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`:🏄 **Surf Forecast Summary**
**Belmar (16th Ave)**
• Saturday: 2-3ft (Fair)
**Long Branch**
• Saturday: 2-3ft (Fair){
"spots": [
{ "id": "5842041f4e65fad6a7708a01", "name": "My Local Break" }
],
"waveMin": 2,
"waveMax": 6
}{
"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"
}Tags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
Adversarial Prompting
Adversarial analysis to critique, fix.