Skip to content
Back to skills

Trip Planner

ASecurity

Plan a complete, realistic multi-stop road/air trip end to end, then ship it as a beautiful shareable PDF with tappable Google Maps links. Use for trip planning, itineraries, vacation/road-trip routing, "plan our trip", multi-city day-by-day schedules, and travel logistics. Geography-first, red-teamed, date-verified.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 11, 2026
ai-agentsgospringapifrontend

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 11, 2026

npx -y skills add thisizmsk-png/vajra --skill trip-planner --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Trip Planner?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Trip Planner
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thisizmsk-png-trip-planner/badge)](https://www.skillsdirectory.com/skills/thisizmsk-png-trip-planner)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: trip-planner
description: Plan a complete, realistic multi-stop road/air trip end to end, then ship it as a beautiful shareable PDF with tappable Google Maps links. Use for trip planning, itineraries, vacation/road-trip routing, "plan our trip", multi-city day-by-day schedules, and travel logistics. Geography-first, red-teamed, date-verified.
user-invocable: true
---

# trip-planner

Turn a loose set of wishes ("fly into LA, do Universal, then Vegas") into a tight, day-by-day itinerary that actually survives contact with reality, then deliver it as a polished, shareable PDF the whole group can navigate from their phones.

Built from a real 7-person SoCal + Vegas plan. The hard-won lesson: **the trip breaks on geography, dates, and logistics, not on the list of fun things.** This skill front-loads those.

## When to use
Any "plan a trip / itinerary / road trip / vacation" request, single or multi-city, with cars, flights, or both. Also for auditing an existing plan for failure modes.

## Communication style
Be brutal and unhedged. Name the tradeoffs and biases out loud, give a recommendation (not a survey), and quantify (drive times, dollars, buffers). If a stated plan is geographically or logistically broken, say so plainly and propose the fix.

---

## The method (run the phases in order)

### Phase 1. Pin the hard constraints before planning anything
Get these explicitly; do not assume:
- **Dates** (and convert to days-of-week; it decides what's open).
- **Party size** + **vehicle** (and whether luggage actually fits, see Phase 3).
- **Flights in and out**: airports + **times**. The return flight + its time is usually the single biggest constraint.
- **Lodging location, the EXACT spot**, not just the city. This is the hidden variable that dictates every drive. Geocode it.
- **Budget tier**, and any must-dos vs nice-to-haves.

A login-gated booking link (Airbnb, etc.) usually 403s on fetch; just ask the user for the neighborhood / nearest landmark.

### Phase 2. Geography first (this is where plans are won or lost)
- Locate the **base** and compute rough drive times to every cluster of attractions.
- **Surface immediately if the base is far from the sights.** (Real example: a "Los Angeles" trip whose Airbnb was near Shandin Hills Golf Club, actually San Bernardino, ~70 mi EAST of LA. Every LA sight became a 1.5 to 2 hr commute; Vegas/San Diego got closer.) The base reshapes the whole trip.
- **Front-load** attractions that are only reachable on one day (e.g., the airport-arrival day is often the only time you're on the "right" side of a sprawl); stack the far-side icons there.
- Kill backtracks: order stops so each day flows one direction. Merge a "beach morning + city evening" into a single directional sweep, not a there-and-back.
- For each long leg, give a realistic range, not the Google-best-case (holiday traffic, mountain passes, desert gaps).

### Phase 3. Red-team the plan (always, before delivering)
Spawn an adversarial pass (the `duryodhana` red-team agent, or a disciplined self-critique) and return **P0 (trip-breaking) / P1 (serious) / P2 (annoyance)** with concrete fixes. The recurring failure modes:
- **Worst-traffic days.** Holiday return days are landmines. (Jul 5, Sunday after July 4: Vegas→LA's worst day of the year; a 4.5 hr drive becomes 7 to 9 hr. If a fixed flight sits on the far end, the departure time is *load-bearing*, name it.)
- **Perishable bookings.** Holiday hotels and dated theme-park/club tickets sell out and spike. List what must be booked *today*, with all-in pricing (resort fees, parking, surcharges), not headline rates.
- **Vehicle vs luggage.** A 12-passenger van seats 12 people but has ~no cargo room; N people + N bags for a week need an *extended* SUV (Suburban/Yukon XL/Expedition MAX) or two vehicles. Confirm cubic feet, not seat count. Always 2 named drivers for long legs; request gas not EV for desert routes; keep collision/roadside coverage; carry water.
- **Late-night vs early-departure collisions.** A big party night that bumps against a fixed early departure is a missed-flight risk. Resolve it explicitly: designate rested/sober drivers, hard departure time, pre-pack the night before.
- **Single-vehicle desert breakdown** equals whole group stranded; favor redundancy or take the coverage seriously.
- **Arrival-time / unknowns** that quietly add 1 to 2 hr/day. Flag the assumptions.

### Phase 4. Verify open + hours for the ACTUAL dates (non-negotiable)
The user's rule: **always check that places are open on the specific dates.** Web-search every operator-run or timed place; do not assume:
- **Day-of-week closures** (e.g., many museums close Mon or Wed; LACMA is closed Wednesdays; Griffith Observatory closed Mondays). Outdoor installations (Urban Light, Seven Magic Mountains) stay accessible even when the parent museum is closed.
- **Seasonal / annual maintenance closures** (e.g., Palm Springs Tramway closes ~Sep to Oct).
- **Holiday hours** and reduced **summer heat hours** (desert zoos may close ~1:30 PM).
- **Heat & season.** Desert in July hits 100 to 110°F: dawn/dusk only, no midday hikes; pivot to **mountains** (~30°F cooler) for a full active day. Always add a hydration/sun note.
Cite the source links you used so the user can re-check.

### Phase 5. Build the deliverable (a shareable PDF with map links)
Default output is a **one-to-three-page PDF** the group can tap to navigate. Two build paths (prefer the first):

1. **Designed (HTML to headless Chrome).** Best typography + clickable links. Write a self-contained HTML file, render with:
   ```
   "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless --disable-gpu \
     --run-all-compositor-stages-before-draw --virtual-time-budget=3000 \
     --print-to-pdf="OUT.pdf" "file:///path/itin.html"
   ```
   Use the bundled `assets/itinerary_template.html` as the starting structure. `<a href>` links become tappable PDF annotations.
2. **Simple (reportlab fallback)** when no browser is available, Platypus tables, `<a href>` for links. Less pretty, fully portable.

**Every stop gets a Google Maps link; every long drive gets a directions link:**
- Place: `https://www.google.com/maps/search/?api=1&query=<URL-encoded name>`
- Route: `https://www.google.com/maps/dir/?api=1&origin=<A>&destination=<B>`

Save to the user's Desktop (or chosen folder) and send the file. Verify pages + clickable-link count with `pypdf` before claiming done.

### Phase 6. Iterate
Expect rapid edits (party size, swapped days, new stops, recolor). Keep **one source of truth per variant** and re-render all variants together so they never drift. When you derive a color variant, generate it from the primary HTML via string-replace of the palette so content stays in sync.

---

## PDF design spec (taste rules, applied via design-taste-frontend discipline)
- **One locked accent** for the whole document; type-driven hierarchy, not boxes everywhere.
- **Zero em-dashes or en-dashes** anywhere visible (use hyphens). This is the #1 AI tell.
- Big day numerals (01-05) in the accent, a tabular time rail, a route strip, a base-note callout, and two alert cards: a filled "can't-slip" card and an outlined "book-now" card.
- Avoid the AI-default beige+brass palette. Ship at least two variants on request.
- Font: a clean system sans (Avenir Next / SF), not Inter-by-default.

**Palette variants used (light ivory paper, near-black ink, one accent):**
- *Coral ("designed")*: accent `#DB4F36`, tint `#FBEAE4`, line `#F0C9BE`.
- *Emerald & Gold ("lavish")*: accent `#0C6B4E`, gold detail `#A8842F` (hero rule + label only), tint `#E4F0EA`, line `#BBD6CA`.

`mcp__visualize__show_widget` is also great for an inline interactive itinerary card alongside the PDF.

---

## Hard checklist (don't ship without these)
- [ ] Base location pinned and its drive-time tax surfaced.
- [ ] Day-by-day flows one direction; no silent backtracks.
- [ ] Red-team P0/P1/P2 delivered with fixes; the load-bearing constraints named.
- [ ] Every place verified open for its real date (+ day-of-week + season + heat).
- [ ] Perishable bookings listed with all-in pricing.
- [ ] PDF built, links verified clickable, saved + sent.

## Related
Pairs with `design-taste-frontend` (PDF aesthetics), the `duryodhana` red-team agent, and `mcp__visualize` for inline widgets. Driven under the `[[vajra]]` harness.

Files in this skill

  • SKILL.md8.2 KB
  • assets/itinerary_template.html6.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.