RoadTrip Skill,
documented.
Install the agent skill behind this site, understand its two entry modes, and see exactly how a plain-English request turns into a map-first itinerary — daily drive segments, reservation countdowns, fuel/EV charging, and seasonal road risk, all in one offline-friendly HTML file.
Installation
The default install works with any agent that reads a SKILL.md file. In Claude Code, two commands and no API keys:
/plugin marketplace add Waybox-AI/roadtrip-skill
/plugin install roadtrip-navigator@roadtrip-skill
Then just ask in plain English:
$ "Plan a 7-day Southwest national-parks loop from Las Vegas — 2 adults, gas SUV, September."
The skill activates on its own when it spots a road-trip request. To force it explicitly, there's a slash command:
/roadtrip from Las Vegas, 7 days, 2 adults, gas SUV, Southwest loop
Other agents — Codex, Cursor, and anything that speaks SKILL.md
Any agent implementing the open skill standard can install the same package directly:
$ npx skills add Waybox-AI/roadtrip-skill
Or clone the repo and symlink it into an agent's skills directory by hand:
git clone https://github.com/Waybox-AI/roadtrip-skill
mkdir -p .claude/skills
cp -r roadtrip-skill .claude/skills/roadtrip-navigator
Everything runs and tests with no keys, no network.
NPS_API_KEY, OCM_API_KEY and OPENWEATHER_API_KEY are optional upgrades — read from environment variables only. Without them, every data client degrades to a structured web-search fallback instead of failing. NWS weather, OSRM routing and OpenStreetMap tiles need no key at all.
How it works
A North American road trip is won or lost in the car, not at the airport: how far do we drive today, where do we sleep, will the charge last, is the pass even open? The skill plans around exactly those questions instead of handing back a plain list of attractions.
Two entry modes
Light mode — "plan it for me." Give a start, a rough region or destination, day count, and party/vehicle. The skill designs the route itself, drafts two genuinely distinct candidates, and lets you pick before committing to a full itinerary.
Heavy mode — "verify my route." Paste, link, or screenshot a route you already have. The skill skips inventing a route and instead verifies and fills gaps: driving segmentation, overnight realism, fuel/charge coverage, reservation countdown, seasonal closures.
The five things that make this more than a list
These are where a raw model answer fails and where the skill earns its keep:
- Daily driving segmentation. Slice the route into days under a sane drive limit, place an overnight at each segment end, and validate: arrive before dark, no stop hits a closed gate, fatigue buffer respected.
- Reservation countdown. Campgrounds release ~6 months out, timed-entry a few days out, in-park lodges up to ~13 months out — the skill works backwards from your departure date into a "book by" checklist.
- Fuel / charge planning. Gas legs flag long empty stretches; EV legs get a charging corridor simulated against the vehicle's range, with a winter-derate option.
- Seasonal road conditions. Mountain passes that close in winter (Going-to-the-Sun, Tioga, Trail Ridge), wildfire and hurricane season — if your travel date hits one, the plan reroutes and says so.
- Timezones & borders. Correct arrival times across timezone lines, plus a documents / insurance / customs checklist for US↔CA↔MX crossings.
Compatible agents
RoadTrip Skill works with every agent that supports the open SKILL.md standard — no vendor lock-in, no required keys.
tripData schema
Planning never emits HTML directly — it produces one canonical tripData.json object, which assets/generate.py injects into assets/template.html to render trip.html. Data and view stay separate: edit the JSON, re-render, done.
{
"title": "Southwest Loop · 7 Days",
"vehicle": { "type": "gas", "mpg": 26 },
"loopType": "loop",
"totalMiles": 1180,
"region": "desert",
"days": [
{
"date": "09/12", "title": "Las Vegas → Zion",
"from": "Las Vegas, NV", "to": "Springdale, UT",
"driveMiles": 165, "driveTime": "2h45m",
"overnight": "Springdale, UT",
"stops": [ { "name": "Zion National Park", "type": "park", "lat": 37.30, "lng": -113.03 } ],
"fuelCharging": [ { "name": "Fuel @ St. George", "type": "gas" } ]
}
],
"bookingCountdown": [ { "item": "Watchman Campground", "bookBy": "2026-03-12", "where": "Recreation.gov" } ],
"budget": { "total": 3191, "items": [ { "label": "Fuel", "amount": 186, "reliability": "estimate" } ] }
}
Optional Phase-3 sections render only when present: routeOptions[] (multi-route comparison), crossBorder (per-crossing documents/insurance checklist), and evPlan (per-leg state-of-charge corridor).
Reliability grading
Every researched figure is tagged so you know how much to trust it. Default to the lowest grade honestly claimable — an honest estimate outranks a borrowed "verified."
| Grade | Meaning | Used for |
|---|---|---|
| verified | From an official/authoritative source this run | NPS fees, park-pass price, confirmed hours |
| reference | A real, indicative figure — not booked | Hotel nightly rates, tour prices, rental quotes |
| estimate | Computed or rough | Fuel cost, food totals, misc. |
Tool routing
Every data client hits a free/official API first and falls back to a structured web-search instruction — nothing crashes on a missing key or a dead connection.
| Concern | Client | Fallback |
|---|---|---|
| Route / drive time | routing_client.py | web search estimate |
| National parks & campgrounds | parks_client.py | nps.gov scrape / search |
| Weather per day | weather_client.py | OpenWeather / search |
| EV charging corridor | charging_client.py | search chargers |
| Cross-border checklist | border_client.py | search current rules |
| Fuel price | fuel_client.py | regional average estimate |
| Lodging / campgrounds | lodging_client.py | search reference price |
Daily drive limits
Step 3 of the workflow validates every day against these defaults (user-adjustable), plus arrival-before-dark and gate-hours checks.
| Party | Relaxed daily drive | Hard cap |
|---|---|---|
| Adults only | 4–5 h | ~6.5 h |
| With kids / seniors | 3–4 h | ~5 h |
| RV / towing | 3–4 h | ~5 h |
Seasonal closures
Verified each trip against live park alerts and state DOT 511 — this is a starting prompt, not a live source.
| Road / pass | Typical closure |
|---|---|
| Going-to-the-Sun Rd (Glacier) | ~mid-Oct → late Jun/Jul |
| Tioga Pass (Yosemite, CA-120) | ~Nov → late May/Jun |
| Trail Ridge Rd (RMNP) | ~mid-Oct → late May |
| Beartooth Hwy (US-212) | ~mid-Oct → late May |