Documentation

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
Zero API keys required

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.

request └─ scripts/helper.py slot-fill + entry-mode / region detection └─ 7-step workflow (SKILL.md) ├─ route + daily driving segmentation ├─ parallel research (tools/, web search) ├─ reservation countdown └─ graded budget └─ tripData.json └─ assets/generate.py ──► trip.html

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.

Claude Code
Codex
Cursor
Any SKILL.md agent
This webapp (browser)

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."

GradeMeaningUsed for
verifiedFrom an official/authoritative source this runNPS fees, park-pass price, confirmed hours
referenceA real, indicative figure — not bookedHotel nightly rates, tour prices, rental quotes
estimateComputed or roughFuel 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.

ConcernClientFallback
Route / drive timerouting_client.pyweb search estimate
National parks & campgroundsparks_client.pynps.gov scrape / search
Weather per dayweather_client.pyOpenWeather / search
EV charging corridorcharging_client.pysearch chargers
Cross-border checklistborder_client.pysearch current rules
Fuel pricefuel_client.pyregional average estimate
Lodging / campgroundslodging_client.pysearch 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.

PartyRelaxed daily driveHard cap
Adults only4–5 h~6.5 h
With kids / seniors3–4 h~5 h
RV / towing3–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 / passTypical 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

Learn more

RoadTrip Skill is MIT-licensed and runs with zero required API keys. Built by Waybox.