Skip to content

Add skill: city-weather - #76

Open
serokechan wants to merge 3 commits into
SELAT-AI:mainfrom
serokechan:add-skill-city-weather
Open

serokechan wants to merge 3 commits into
SELAT-AI:mainfrom
serokechan:add-skill-city-weather

Conversation

@serokechan

Copy link
Copy Markdown

Adds the city-weather skill (multi/routed).

Current conditions + 3-day forecast for any city via weather.payapi.market's x402 endpoints, routed through the SELAT Router. Paid per call (USDC on Base), no API key.

Live verification (selat-verify/v1 · probe-only, no spend)

  • step 1 [routed] routed-x402 $0.00105 / cap $0.005
  • step 2 [routed] routed-x402 $0.00105 / cap $0.005

Receipt: skills/city-weather/.selat/verify-receipt.json attached to this branch.

Notes

  • Schemas pinned from the upstream's own OpenAPI (weather.payapi.market/openapi.json) and corroborated against the live 402 bazaar schema.
  • days is hard-coded as the integer 3 in the manifest body (not wired through ${param}, since the runner substitutes params as strings only and an integer field sent as a string 422s).
  • Verified with selat skill validate, selat skill verify (free probe), and npm run validate (20 skills, 0 errors).

Generated by selat skill submit. A maintainer should paid-re-verify before merge.

@serokechan

Copy link
Copy Markdown
Author

Verification receipt (selat-verify/v1 — probe-only, no spend)

Attached by the contributor from skills/city-weather/.selat/verify-receipt.json (gitignored by repo policy).

{
  "schema": "selat-verify/v1",
  "verifiedAt": "2026-08-20T02:02:51.564Z",
  "skill": "city-weather",
  "paidMode": false,
  "ok": true,
  "steps": [
    {
      "index": 0,
      "label": "current conditions — weather.payapi.market /current (routed x402 via SELAT Router)",
      "rail": "routed",
      "method": "POST",
      "url": "https://weather.payapi.market/current",
      "maxAmount": 0.005,
      "mode": "routed-x402",
      "livePriceUsd": 0.00105,
      "reachable": true,
      "withinCap": true,
      "paid": null,
      "error": null
    },
    {
      "index": 1,
      "label": "3-day forecast — weather.payapi.market /forecast (routed x402 via SELAT Router)",
      "rail": "routed",
      "method": "POST",
      "url": "https://weather.payapi.market/forecast",
      "maxAmount": 0.005,
      "mode": "routed-x402",
      "livePriceUsd": 0.00105,
      "reachable": true,
      "withinCap": true,
      "paid": null,
      "error": null
    }
  ]
}

Both steps quote within cap (live $0.00105 vs $0.005/step, $0.01 run cap). A maintainer should paid-re-verify before merge.

@SELAT-DEV

Copy link
Copy Markdown
Collaborator

Reviewed against CONTRIBUTING.md and meta/skill-creator: ran npm run validate and selat skill validate on a checkout, checked each endpoint against the federated catalog, and live-probed the manifest steps (free 402 probes, no spend). Also read the receipt you pasted in the comment — thank you, that closes the gap.

Merge-ready after a small cleanup. POST params in body, real default (location=Jakarta), sane caps ($0.005/step vs $0.00105 live, $0.01 run), pinned schemas match the live 402s; the probe-only receipt (02:02:51Z, both steps $0.00105) is consistent with everything we can see.

Before merge:

  • index.json description and the SKILL.md Rails section say "USDC on Base" / "settled Gateway-batched in USDC on Base". Settlement follows wherever the Gateway balance sits, so please drop the chain from that prose (your own compatibility note already says this).
  • Heads-up: Add skill: current-weather #73 (current-weather) is a strict subset of this skill (same provider, your step 1). We intend to merge this one as the weather skill for that provider.

@serokechan

Copy link
Copy Markdown
Author

Thanks for the careful review — good catch on the chain prose.

Pushed in 2268c8e: dropped the chain from all settlement prose in this PR's scope — index.json entry, manifest.json description, SKILL.md frontmatter + Rails section, and references/endpoints.md. All now say "USDC" / "Gateway-batched in USDC" without naming a chain, consistent with the compatibility note (settlement follows wherever the funded Gateway balance sits). Verified npm run validate (20 skills, 0 errors) and selat skill validate still pass.

Noted on #73 — makes sense to consolidate on this one since it adds the forecast step and the pinned-schema/days-coercion guardrails. If it helps, I'm happy to fold anything unique from #73 into this skill before merge; from my read of it, step 1 is the same provider + endpoint, so I don't expect gaps.

Ready for another pass whenever you are.

iqiwf added a commit to iqiwf/selat-skills that referenced this pull request Sep 2, 2026
- Drop the IP-geolocation step; skill is now a coherent 2-step
  pre-travel brief: 7-day forecast + destination QR. SKILL.md
  justifies the bundle, scopes the QR step to the brief, and
  differentiates from city-weather (SELAT-AI#76). New notrigger-3 eval
  asserts IP lookups do not trigger.
- SKILL.md frontmatter kind: single -> multi (matches manifest/index).
- Remove description template leftover; rewrite description.
- Give required location a default (London) with an explicit
  pass-the-destination note.
- metadata.author -> iqiwf (PR account).
- Scope .gitattributes to skills/travel-brief/ instead of repo root.
- Bump selat-pay pin to >= 0.7.0.
- Re-verified: selat skill verify passes, fresh 2-step receipt.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants