Plan up-to-date walking sightseeing trips anywhere. Generates 1-3 personalized walking itineraries (views, landmarks, museums, parks, food) with an optimized walking route, schedule, and checklist. Use for trip planning, day plans, and route building. Triggers on phrases like "plan a walk in X", "what to see in X in N hours", "sightseeing route", "walking itinerary", "best places to visit in X today".
This skill produces walking sightseeing itineraries for any city or location, personalized to user interests, with an optimized walking route and a ready-to-send trip brief.
It uses a multi-source enrichment pipeline to ensure the best possible stop selection:
Each enrichment step degrades gracefully — the skill always produces output even if one or more sources are unreachable.
All scripts and assets are at:
SKILL_DIR=/home/node/.claude/skills/trip-preparation
Always use this prefix when calling scripts or referencing assets.
Use this skill when the user asks for any of the following:
See:
$SKILL_DIR/assets/itinerary.schema.json$SKILL_DIR/assets/trip_brief_template.mdTry to collect these, but do not over-question. If missing, use sensible defaults and state assumptions.
Minimum
Strongly recommended
Nice to have
If any of these are ambiguous, ask 1-3 short questions:
SKILL_DIR=/home/node/.claude/skills/trip-preparation
node "$SKILL_DIR/scripts/step1_discover.mjs" \
--location "Lisbon, Portugal" \
--duration-min 180 \
--interests "views,food,landmarks" \
--out /workspace/group/trip-output
SKILL_DIR=/home/node/.claude/skills/trip-preparation
node "$SKILL_DIR/scripts/step2_rank.mjs" \
--input /workspace/group/trip-output/discovered_pois.json \
--duration-min 180 \
--interests "views,food,landmarks" \
--max-selected 50 \
--out /workspace/group/trip-output
step2_rank.mjs applies scoring, multi-source/rating boosts, pageview enrichment,
and optional Claude curation when ANTHROPIC_API_KEY is available.
SKILL_DIR=/home/node/.claude/skills/trip-preparation
node "$SKILL_DIR/scripts/step3_route.mjs" \
--input /workspace/group/trip-output/ranked_pois.json \
--duration-min 180 \
--max-stops 20 \
--out /workspace/group/trip-output
Final outputs written to --out:
trip-output/itinerary.jsontrip-output/trip_brief.mdAll step scripts emit runtime monitoring markers on stderr in the format
TRIP_PROGRESS {json} (geocoding, discovery, ranking, curation, routing, output).
map-poi-agent uses these markers to send live progress updates to the chat.
summary.notes in the itinerary for any curation warnings or missing famous placesIf the user gave a date/time, also check top 2-3 places:
Send:
Default sources are open and global:
Configure via environment variables:
| Variable | Default | Purpose |
|---|---|---|
NOMINATIM_BASE_URL | https://nominatim.openstreetmap.org | Geocoder |
NOMINATIM_USER_AGENT | trip-preparation-skill/0.2 | Required by polite API use |
OVERPASS_ENDPOINT | https://overpass-api.de/api/interpreter | Primary OSM POI source |
OVERPASS_FALLBACK_ENDPOINTS | (built-in mirrors) | Comma-separated fallback Overpass URLs |
ROUTER_BASE_URL | https://router.project-osrm.org | Walking routing |
CACHE_DIR | $TMPDIR/.trip-prep-cache | Response cache directory |
MAX_SELECTED | 50 | Max POIs after ranking |
MAX_STOPS | 20 | Max stops per itinerary (main + pass-by) |
WIKIPEDIA_LANG | en | Language for Wikipedia/Wikidata lookups |
ENABLE_WIKIDATA | true | Set to "false" to disable Wikidata enrichment |
ENABLE_PAGEVIEWS | true | Set to "false" to disable Wikipedia pageview lookup |
ENABLE_LLM_CURATION | true | Set to "false" to disable Claude curation step |
ANTHROPIC_API_KEY | (none) | Required for LLM curation; silently skipped if absent |
ANTHROPIC_BASE_URL | https://api.anthropic.com | Override for map-poi-agent or self-hosted endpoints |
LLM_CURATION_MODEL | claude-haiku-4-5-20251001 | Model for curation (haiku is fast and cheap) |
See $SKILL_DIR/references/data_sources.md for details and production notes.
Each place in Wikidata has a "sitelinks" count — the number of Wikipedia language editions that have an article about it. The Eiffel Tower has 200+ sitelinks; a random café has 0. This is a strong proxy for worldwide fame and tourist interest.
For stops that have a wikipedia tag, the Wikimedia pageviews API returns monthly view counts for the last 3 months. A place with 500k+ monthly views is genuinely world-famous; one with 2k is locally known. The score boost uses a log10 scale.
The curation step is the final safety net. Claude reviews the proposed stop list and:
The curation only removes flagged stops if confidence ≥ 70%. All curation actions are recorded in summary.notes.
See $SKILL_DIR/references/edge_cases.md.
$SKILL_DIR/assets/interests.json$SKILL_DIR/references/scoring.mdSKILL_DIR=/home/node/.claude/skills/trip-preparation
node "$SKILL_DIR/scripts/self_test.mjs"