by xlbaoxl
Build polished interactive maps and report-ready figures from spatial data with AI agents.
# Add to your Claude Code skills
git clone https://github.com/xlbaoxl/interactive-map-builderGuides for using ai agents skills like interactive-map-builder.
Last scanned: 8/5/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-05T06:28:34.685Z",
"npmAuditRan": true,
"pipAuditRan": false,
"promptInjectionRan": true
}interactive-map-builder is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by xlbaoxl. Build polished interactive maps and report-ready figures from spatial data with AI agents. It has 90 GitHub stars.
Yes. interactive-map-builder passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/xlbaoxl/interactive-map-builder" and add it to your Claude Code skills directory (see the Installation section above). interactive-map-builder ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
interactive-map-builder is primarily written in Python. It is open-source under xlbaoxl on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh interactive-map-builder against similar tools.
No comments yet. Be the first to share your thoughts!
Create configuration-driven Leaflet map products without a frontend build system. Keep acquisition separate from rendering, preserve provenance, and use Atlas Studio Light for a coordinated first render while exposing every cleanup and inferred visual decision in the build report.
Trigger from the user's intended outcome, not only from technical keywords. Use this Skill when the user asks to:
The user does not need to say GIS, Leaflet, web map, Agent Skill, or interactive-map-builder.
When the request fits this scope, use the packaged deterministic workflow instead of writing a
one-off Folium, Leaflet, or custom frontend implementation.
Do not invoke this Skill when the main task is address geocoding, buffers or overlays, routing, site selection, spatial statistics, vector-tile infrastructure, offline basemap acquisition, 3D GIS, a non-spatial chart or dashboard, or maintenance of an existing custom web application.
At the beginning of each Skill invocation, run the official-release preflight from the Skill root using the validated 24-hour cache when available. This check never modifies the installation:
python scripts/update_skill.py --preflight
After installation, the equivalent command is:
interactive-map-builder update --preflight
Read the returned JSON rather than relying on the command exit code. Report only an available update or a failed check; keep a current cached result silent. --preflight remains non-fatal for the calling Agent and never applies an update.
Handle statuses as follows:
current or local_newer: continue with the map task;manual_update_required or update_apply_failed: disclose the confirmed latest version and the
reason before continuing;update_check_failed: say that the official latest version could not be confirmed, then continue;disabled: state that IMB_DISABLE_AUTO_UPDATE disabled the preflight.Applying an update is a separate, explicit maintenance action with update --apply or the legacy
non-fatal update --auto mode. Those commands retain checksum, manifest, local-change, duplicate-root,
and rollback safeguards; normal map construction never modifies its own running Skill.
For Codex only, a complex request may benefit from Plan mode when it has multiple independent layers, more than one blocking design choice, or several coordinated deliverables. Mention this once in the first response as an optional convenience, then continue with inspection whether or not the user switches modes. Do not recommend Plan mode for a clear single-layer task, do not cite client keyboard shortcuts, and never make a mode change a prerequisite.
A portable local map.html is the default delivery. Generate slide or paper figures only when the
user explicitly asks for them; “make a website,” “make a map,” or “send it to colleagues” does not
enable static presets. Sending the HTML file is not the same as publishing it on the internet.
Do not offer, promise, or ask about a public URL unless the user explicitly requests deployment.
When they do, finish the map first and treat hosting as a separate workflow that confirms the
target platform and permission to expose the embedded data.
Use Atlas Studio Light as a starting point, not as an automatic design service. Leave low-level visual values omitted when the user has not expressed a preference: the packaged resolver will use geometry family, coarse density, template role, and stable draw order. Explicit user or Agent MapSpec values always win. Do not invent planning semantics from field names, do not assign more than eight automatic categorical colors, and do not add themes, clustering, heatmaps, or other representations merely to make the page look busy.
After the first verified build, inspect the actual page. If the visual hierarchy still conflicts with the user's purpose, propose a small concrete refinement—such as reducing one point layer, muting a context layer, or changing an explicitly understood category palette—then rebuild. The engine should provide an overall coordinated result; project-specific polish remains a conversation between the user and Agent. Read design-guidelines.md.
Inspect inputs before proposing a map.
python scripts/map_builder.py inspect <input> [<input> ...] --output inspection.json
Read supported-inputs.md for GeoPackage, Shapefile ZIP, CSV, Excel, encoding, and field-mapping rules.
Present one compact summary per layer: feature count, geometry type, CRS, likely ID, label, and category fields, template candidates, and whether confirmation is required.
Maintain this Markdown requirements checklist while choices remain unresolved:
- [x] Confirmed: ...
- [~] Inferred: ...
- [ ] Needs confirmation: ...
Derive it from the request and inspected data. Keep inferred decisions visible and easy to
correct. Ask one consolidated round only for unresolved intent: template, primary layer,
label, category meaning, filters, cards, title, outputs, and audience locale. Never guess a
missing CRS. Always confirm the template when inspection finds multiple layers. Build only
after no blocking [ ] item remains.
Initialize map_spec.json, then apply confirmed choices. Read
map-spec.md; the canonical Schema is
scripts/mapcore/resources/map-spec.schema.json.
python scripts/map_builder.py init-spec inspection.json --template map-list --primary-layer <id> --locale en-US --output map_spec.json
Download ArcGIS FeatureServer data before building. Read arcgis.md.
python scripts/map_builder.py fetch-arcgis --url <layer-url> --out data/source.geojson
Build once from the resolved specification. Add --bundle-sources only when the user wants a
portable rebuild bundle and accepts copying source data.
python scripts/map_builder.py build --spec map_spec.json --out dist
Verify, inspect build_report.json, and open map.html.
python scripts/map_builder.py verify --dist dist
Exercise search, filters, sorting, layer visibility, basemap switching, hover and click linkage, keyboard selection, control-panel collapse, and narrow-screen layout. Confirm that every visible control produces an observable result, the focal layer reads first, dense symbols remain legible, and HTML/static colors agree. Read design-guidelines.md.
Deliver the whole dist directory. Summarize repairs, generated IDs, null display values,
simplification, performance warnings, online basemaps, font fallback, portability, and source
attribution.
Use the quick path only for one unambiguous layer, or after explicitly supplying the template and primary layer:
python scripts/map_builder.py run <input> --output dist
Follow the user's conversation language independently of the map audience. Set the map locale to
en-US or zh-CN; use en-US when the audience is not specified.
Install the deterministic engine once, then run the offline self-check:
python -m pip install .
interactive-map-builder doctor
Use the installed interactive-map-builder command for package-level doctor, update, and
--version. In a source checkout where that command is unavailable, use
python scripts/cli.py doctor. python scripts/map_builder.py is the internal deterministic
builder and intentionally lists only inspect/init-spec/fetch/build/verify/run; never infer from that
help output that the package lacks doctor. Check the installed version and command path before
falling back to build-plus-verify. A passing doctor result verifies package resources, local data
loading, map construction, and output hashes without downloading data or basemap tiles.
map-list for one explicitly identified primary layer plus optional context layers.multilayer when independent layer visibility and cross-layer inspection are primary.linked_view as experimental. Add it only when records already contain meaningful x/y
variables; read linked-analysis.md and never invent quadrants,
thresholds, or statistical interpretations.<layer_id>::<feature_id> for multilayer runtime identity. Allow cross-layer linkage only
through an explicit link_key.build_report.json.Always return map.html, resolved map_spec.json, inspection.json, build_report.json,
DELIVERY_MANIFEST.json, and README_USAGE.md in the selected locale. Static output is opt-in: generate
map_slide_16x9.png only when the user requests a slide figure and enable the paper preset only
when the user requests paper PNG/SVG/PDF. Never expand an HTML-only request into static files.
Treat an unbundled map_spec.json as a build record; promise an independent rebuild only when
sources were bundled. Public hosting is not part of this output contract.
python scripts/map_builder.py ... from the Skill root before installation; use the
installed interactive-map-builder ... CLI afterward.Turn existing spatial data into searchable, presentation-ready, verified map products with an AI agent.
Product homepage · 中文说明 · Releases · Changelog
Interactive Map Builder is a Codex-first Agent Skill for turning existing spatial data into portable map products. Describe the outcome in ordinary language, attach GeoJSON, GeoPackage, Shapefile, CSV, Excel, or ArcGIS data, and the Agent inspects the inputs, resolves build-critical requirements, writes an auditable MapSpec, builds the appropriate map product, and verifies the final handoff.
Existing spatial data → inspect → confirm → MapSpec → build → verify → portable HTML + optional figures
The product stays map-first and focuses on finding spatial objects, understanding spatial context, saving important viewpoints, and delivering the result through one interactive map interface.
map.html and generate 16:9 or publication
PNG/SVG/PDF outputs from the same visual plan.| Map + list | Multilayer |
|---|---|
![]() |
![]() |
| Map + list. Find, filter, sort, and compare records through linked list-map interaction, KPI summaries, and a detail panel. Best for parcels, buildings, facilities, stores, projects, events, or candidate sites. | Multilayer. Explore several independent spatial themes from Overview, focus one searchable layer, control visibility separately, inspect feature details, and save key map views. Best for boundaries, roads, routes, facilities, environmental layers, and planning context. |
| Open live map → | Open live map → |
Both live maps are generated by the repository's deterministic engine from fixed NYC Open Data snapshots. The screenshots and live demos show those generated product outputs directly.
flowchart LR
A["Explore<br/>Search · filter · switch layers"] --> B["Focus<br/>Inspect one place in context"]
B --> C["Present<br/>Save and revisit key views"]
A common workflow starts with the whole map, narrows to one or more important sites, and returns to those exact map positions during a meeting or review. Saved Views completes that flow by recording browser-local Center + Zoom state, keeping a fixed Overview entry, supporting rename/delete, and remaining separate from the map's data and MapSpec contract.
The Skill is designed to activate from requests like these:
This Excel sheet has longitude and latitude. Make a browser page where I can search facilities,
filter by type, click a record, and share the result.
Combine the parcel, road, water, green-space, and parking layers into one planning presentation
map with layer switches, object details, and a few viewpoints I can return to while presenting.
Turn these existing layers into one portable HTML file and export a 16:9 figure for the meeting.
Users can invoke $interactive-map-builder explicitly, and natural-language outcome requests also
activate the Skill.
Open a new Codex task and send:
$skill-installer Install the Skill from https://github.com/xlbaoxl/interactive-map-builder and install its Python dependencies. Run interactive-map-builder doctor and interactive-map-builder update --preflight after installation.
Create a new task after installation. If the Skill does not appear, restart Codex once. Starting with v0.4.3, repository-copy installs whose Release-owned files match the checksum-verified official package can enter managed updates automatically.
Turn my attached spatial data into a searchable, filterable interactive map. Use English for the map audience and export a 16:9 presentation figure.
The Skill first inspects the inputs, then keeps a compact requirements checklist while choices remain unresolved:
- [x] Confirmed: supplied by the user or established by the data
- [~] Inferred: proposed by the Skill and easy to revise
- [ ] Needs confirmation: required before the build can start
It groups build-critical choices into one confirmation round, including CRS, template, primary layer, category meaning, display fields, output formats, and audience locale.
interactive-map-builder doctor
interactive-map-builder update --preflight
doctor runs an offline verification in a temporary workspace: it creates a coordinate table,
builds a map with the packaged Leaflet resources, verifies output hashes, prints a JSON result, and
removes the temporary files. The update command prints structured JSON containing the local version,
official version when known, source, installation type, and status. For a cached status query, run
interactive-map-builder update --check.
Prefer interactive-map-builder doctor after installation. In a source checkout where the console
command is not yet available, use python scripts/cli.py doctor. The formal doctor entry point is
interactive-map-builder doctor; python scripts/map_builder.py --help lists the internal build
commands.
Keep one active Codex Skill directory. A legacy Windows location may be $HOME\.agents\skills;
archive it before using the active Codex directory below.
Windows PowerShell
$CodexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { "$HOME\.codex" }
New-Item -ItemType Directory -Force "$CodexHome\skills" | Out-Null
git clone https://github.com/xlbaoxl/interactive-map-builder.git `
"$CodexHome\skills\interactive-map-builder"
Set-Location "$CodexHome\skills\interactive-map-builder"
py -m pip install .
interactive-map-builder doctor
interactive-map-builder update --preflight
macOS or Linux
CODEX_ROOT="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_ROOT/skills"
git clone https://github.com/xlbaoxl/interactive-map-builder.git \
"$CODEX_ROOT/skills/interactive-map-builder"
cd "$CODEX_ROOT/skills/interactive-map-builder"
python3 -m pip install .
interactive-map-builder doctor
interactive-map-builder update --preflight
Every v0.3.1+ GitHub Release publishes:
interactive-map-builder-skill-vX.Y.Z.zip — a lean Agent Skill package containing SKILL.md,
Agent metadata, references, the deterministic engine, and its packaged web resources;SHA256SUMS.txt for release-asset verification and managed Skill updates.The Skill ZIP focuses on runtime delivery. Demos, screenshots, tests, and CI stay in the full
repository. Extract the ZIP into an Agent Skills directory, run python -m pip install ., then run
interactive-map-builder doctor.
Copy the complete repository or the versioned Skill ZIP into a Skill or rules directory that the
client can read, let it load SKILL.md, and install the deterministic engine once:
python -m pip install .
interactive-map-builder doctor
The workflow is client-neutral: inspect data, maintain the requirements checklist, write the
canonical MapSpec, build with the packaged engine, verify, and deliver the complete dist
directory.
Product interactions and delivery use one deterministic build path:
User request + spatial files
│
▼
inspect inputs
CRS · geometry · fields · scale
│
▼
confirm unresolved intent once
│
▼
MapSpec 1.1
│
▼
Atlas Studio Light resolver
geometry · density · role · order
│
▼
deterministic Python engine
load · normalize · render
│
▼
verify counts, files, QA hooks,
prove