Route map¶
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.