Skip to content

Route map

Flight (dashed, ✈ at midpoint) Drive Hike

The map's JS lives in docs/route-map-init.js, loaded via extra_javascript in mkdocs.yml rather than inlined here — an inline <script> on this page would silently never run when reached via an in-app link click (Material's navigation.instant splices in page content via XHR, and browsers don't execute scripts inserted that way). See .agents/skills/interactive-map-embeds/SKILL.md, gotcha #8.

Map build notes

Optional scaffold — delete this whole page (and scripts/build_route_map.py and docs/assets/maps/) if a given trip doesn't want a route map. The example above is placeholder data (a single London→Paris flight) so the page renders something out of the box; replace it with your trip's real stops/legs by editing STOPS/LEGS in scripts/build_route_map.py and re-running it locally (never through an agent's visible shell bridge with a real API key — see .agents/skills/local-secrets-handling/SKILL.md). Review the generated GeoJSON before committing it; regenerating overwrites it. Full walkthrough: .agents/skills/route-map-scaffold/SKILL.md. Technical gotchas hit building this page (DOM id collisions, MapLibre v6's ESM export shape, glyph rotation, attribution control size, etc.): .agents/skills/interactive-map-embeds/SKILL.md.

See also: Final plan · WIP plan.