Agents & OrchestrationSûr8484/100
Route Map Visualizer (Microsoft)
Use this skill to visualize routes and locations on a map — especially after an upstream tool call (routing connector, Azure Maps, Bing Maps connector, HERE, Mapbox, Dataverse, CRM, SharePoint, or any connector that returns coordinates) has returned ordered stops, coordinates, distances, or road geometry. Produces PNG, interactive HTML, GeoJSON, KML, deep links, and QR codes. Also use for marker maps (weather, CRM data, site lists) and for any request to "show these on a map", "map these locations", or "visualize this route". DO NOT use this skill to compute routing — call a routing connector first, then pass the result here for visualization.
ou envoie-le directement à ton agent.
Installer dans ton projet
$ curl -fsSL https://arboristhree.xyz/cli/install-skill.mjs -o /tmp/arboris-install-skill.mjs && node /tmp/arboris-install-skill.mjs route-map-visualizer__microsoft-cat-agent-skills__submissions-e8af66fdbfc0Microsoft
microsoft/cat-agent-skills
Contenu à copier
---
name: route-map-visualizer
description: >-
Use this skill to visualize routes and locations on a map — especially after
an upstream tool call (routing connector, Azure Maps, Bing Maps connector,
HERE, Mapbox, Dataverse, CRM, SharePoint, or any connector that returns
coordinates) has returned ordered stops, coordinates, distances, or road
geometry. Produces PNG, interactive HTML, GeoJSON, KML, deep links, and QR
codes. Also use for marker maps (weather, CRM data, site lists) and for any
request to "show these on a map", "map these locations", or "visualize this
route". DO NOT use this skill to compute routing — call a routing connector
first, then pass the result here for visualization.
metadata:
origin: Microsoft
---
Visualizes pre-ordered routes and location maps via `scripts/map_generator.py`.
Fully offline Python engine — no outbound HTTP from Python. Road geometry
rendered directly when provided by a connector; OSRM used browser-side as a
fallback when it is not.
## Steps
**1. Choose kind**
| Value | Use when |
| --- | --- |
| `"map"` | Plot locations only — no path (weather, CRM records, site lists) |
| `"route"` | Ordered stops + path |
| `"auto"` | Default — infers `map` unless `stops` key or `round_trip` hint |
**2. Resolve coordinates** — per point, in order:
1. `lat`/`lon` already present — from user, connector result, Dataverse, CRM, CSV, etc. **Never overwrite.**
2. Alias match in `assets/place_lookup.json`
3. Web-search the place's lat/lon, then add to payload
Never call external geocoding APIs from the script. Never invent coordinates.
**3. Pass connector route data (when available)**
If an upstream connector (Azure Maps, Bing Maps, etc.) returned routing data,
pass it directly — the visualizer will use it for accurate distances and the
actual road polyline in PNG and HTML:
| Field | Source | Effect |
| --- | --- | --- |
| `route_geometry` | Connector road polyline | Draw actual road path in PNG + HTML |
| `legs` | Connector leg breakdown | Show per-leg distance/time table |
| `route_source` | e.g. `"azure_maps"` | Attribution badge on map and outputs |
| `total_distance_m` | Connector total distance | Accurate distance in header + exports |
| `total_duration_s` | Connector total time | Accurate time in header + exports |
Without these, the PNG uses straight lines (labeled **schematic**) and the
HTML calls OSRM browser-side for road routing.
**4. Point fields**
| Field | Notes |
| --- | --- |
| `lat`, `lon` | Required (or place_lookup match) |
| `name` | Display label |
| `value` | Metric — `"24 C"`, `"$1.2M"`, CRM field, etc. |
| `icon` | See icon list below |
| `color` | Hex (validated — invalid values fall back to default) |
| `order` | Optional sequence number (connector-assigned) |
**5. Call generate()**
```python
import sys; sys.path.insert(0, "scripts")
from map_generator import generate
# Minimal — stops in provided order, schematic PNG, OSRM HTML
result = generate({
"kind": "route",
"title": "Delivery run",
"stops": [
{"name": "Depot", "lat": -33.86, "lon": 151.21},
{"name": "Stop A", "lat": -33.90, "lon": 151.18},
{"name": "Stop B", "lat": -33.88, "lon": 151.15},
],
# Optional exports (all off by default):
# "html": True "csv": True "geojson": True "kml": True
# "map_links": True "qr_codes": True
})
# With connector road data — produces accurate PNG + no OSRM needed
result = generate({
"kind": "route",
"title": "Delivery run — Azure Maps",
"stops": [...],
"route_geometry": [ # connector road polyline
{"lat": -33.860, "lon": 151.210},
{"lat": -33.865, "lon": 151.208},
...
],
"legs": [ # per-leg breakdown
{"from": "Depot", "to": "Stop A", "distance_m": 5200,
"duration_s": 420, "summary": "via Parramatta Rd"},
{"from": "Stop A", "to": "Stop B", "distance_m": 3100,
"duration_s": 280, "summary": "via Church St"},
],
"route_source": "azure_maps",
"total_distance_m": 8300,
"total_duration_s": 700,
"html": True,
})
print(result["markdown"])
```
Key result keys: `chart_path` (PNG, always), `html_path`, `csv_path`,
`geojson_path`, `kml_path`, `map_links_path`, `qr_sheet_path`,
`google_maps_url`, `apple_maps_url`, `bing_maps_url`, `has_road_geometry`,
`route_source`, `generated_exports`.
**6. Reply** — paste `result["markdown"]`. It always ends with an **Optional
exports** hint. Clarify:
- **PNG** = road route when `route_geometry` provided, else straight-line schematic
- **HTML** = connector polyline embedded (no OSRM) when geometry provided, else OSRM browser-side
- **`schematic_order: true`** — opt-in offline stop ordering (NN + 2-opt, straight-line estimate); always prefer a connector for real road order
## Icons
`pin` `sunny` `partly-cloudy` `cloudy` `rain` `storm` `snow` `fog` `wind`
`hot` `cold` `office` `home` `factory` `hospital` `school` `warning` `check`
`star` `shop` `truck`
## Guardrails
- Never overwrite `lat`/`lon` from user or prior tools.
- Never call external geocoding/routing APIs from the Python script.
- Never invent coordinates — ask the user or web-search.
- Never reorder stops unless `"schematic_order": true` is explicitly set.
## Bundled files
- `scripts/map_generator.py` — engine (`generate`)
- `assets/place_lookup.json` — place aliases
- `references/cheatsheet.md` — full payload reference + CLI flagsColle ce Markdown dans ton agent ou utilise les boutons ci-dessus pour l’écrire dans ton projet.
Ce que fait Route Map Visualizer (Microsoft)
**PNG** = road route when `route_geometry` provided, else straight-line schematic
**HTML** = connector polyline embedded (no OSRM) when geometry provided, else OSRM browser-side
**`schematic_order: true`** — opt-in offline stop ordering (NN + 2-opt, straight-line estimate); always prefer a connector for real road order
Never overwrite `lat`/`lon` from user or prior tools.
Comment utiliser Route Map Visualizer (Microsoft)
1
Copie le prompt
Un clic copie le prompt packagé (ou l'envoie à ton agent).
2
L'agent installe le skill
Il ajoute le SKILL.md et ses ressources à ton projet.
3
Activation automatique
Le skill s'active dès que le contexte correspond.
Déclencheurs pour Route Map Visualizer (Microsoft)
Dis simplement à ton agent quelque chose comme :
Applique le skill route-map-visualizer__microsoft-cat-agent-skills__submissions-e8af66fdbfc0 à cette tâche
Utilise route-map-visualizer__microsoft-cat-agent-skills__submissions-e8af66fdbfc0 pour améliorer cette implémentation
Passe en revue ce sujet avec route-map-visualizer__microsoft-cat-agent-skills__submissions-e8af66fdbfc0
Skills liés à Route Map Visualizer (Microsoft)
Acceleration (Microsoft)
Compare synthetic acceleration options and clearly separate scenario value from forecast commitments.Account Overview (Microsoft)
Create a synthetic Acme account overview and identify evidence that merits seller attention.Acroform Writer (Microsoft)
Use this skill whenever the user wants values written INTO an existing PDF form that lives in the connected SharePoint knowledge source — filling out, completing, populating, or submitting a fillable PDF (application, intake sheet, contract, government form) from data they supply, a spreadsheet row, or the conversation. Triggers include "fill out the job application form", "complete the intake form for [person]", "populate our standard NDA template", and "make this ready to send / non-editable" (flatten). The source form should be found via knowledge search; only ask the user to upload it if knowledge search turns up nothing plausible. different task), and do NOT use it on scanned/image-only PDFs that have no real fillable fields — those need OCR or manual overlay instead, which this skill explicitly detects and reports rather than silently failing.