Add San Diego Surf Watch example#15
Merged
Merged
Conversation
Monitors surf conditions at 9 San Diego area beaches every 30 minutes. Uses a web agent to check Surfline/Magic Seaweed, then an LLM evaluator to apply good-surf criteria (3ft+, 8s+ period, offshore/light wind, NW/W/SW swell) and write a SURF ALERT to memory when conditions qualify.
Replaces the hand-rolled Python validator with a Deno script that delegates to friday-studio's WorkspaceConfigSchema + validateWorkspace(). The Python validator hardcoded an `fsm` requirement and rejected the valid `execution` alternative, plus missed schema coverage for signal providers, agent types, memory enums, etc. Pointing at the canonical schema means examples are validated against exactly what the runtime accepts, and stays in sync as the schema evolves. CI clones friday-platform/friday-studio at tag 0.1.8 into .friday-studio and runs the validator with --config pointing at its deno.json so @atlas/* workspace imports resolve.
Validator (scripts/validate_examples.ts): - Sentinel-based example discovery: a folder is an example iff it contains workspace.yml. Drops the SKIP_DIRS denylist which had drifted (just caused docs/ to be misclassified) and which was duplicated with the folder-names workflow job. - Restore kebab-case job ID enforcement. The canonical schema accepts any MCP tool name; examples should be uniform. - Treat warnings as errors. Examples should be exemplary; a dead signal or orphan agent is a defect users would inherit. Verified all 12 existing examples are warning-clean. CI (.github/workflows/validate.yml): - Tighten Deno permissions from -A to --allow-read --allow-env --allow-sys. Validator only walks the filesystem and reads YAML; cron-parser pulls @vercel/oidc transitively, which needs --allow-sys. san-diego-surf-watch example (workspace.yml): - Set onMissed: skip explicitly on the schedule signal. Documents the option and avoids inheriting whatever the platform default is. - Close threshold gaps in the evaluator prompt. GOOD was ≥3ft/≥8s, POOR was <2ft/<7s — the 2-3ft and 7-8s middle bands forced the model to invent the boundary. Now: GOOD = all conditions met, POOR = anything else.
1c149e7 to
ce1cc46
Compare
ljagiello
approved these changes
May 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
A new
san-diego-surf-watchworkspace example that monitors surf conditions at 9 San Diego area beaches every 30 minutes and saves a surf alert to memory when conditions are good.Agents:
surf-checker— atlas web agent, checks Surfline/Magic Seaweed and similar for current conditionssurf-evaluator— LLM agent (Claude Sonnet), applies good/poor criteria and writes exactly one memory entry per runGood surf criteria: 3ft+ wave height, 8s+ period, offshore or light wind (<10 mph), NW/W/SW swell direction.
Trigger: cron every 30 minutes.
Files changed
san-diego-surf-watch/workspace.ymlsan-diego-surf-watch/workspace.locksan-diego-surf-watch/README.mdexamples.json— added entry for Discover SpacesNotes
assets/san-diego-surf-watch/folder — screenshots to be added