Not in the top 1,000 by GitHub stars
ashishkaloge/map-design
An agent skill for real maps: data maps and city posters as self-contained HTML, SVG and PNG. No API keys or runtime dependencies.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/map-design/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 4f228eed82ee
No earlier version was observed for comparison.
Verified commit 4f228eed82ee4eb555ac50d2723734a00c89eecf
git clone --filter=blob:none --no-checkout https://github.com/ashishkaloge/map-design.git .hotskills/ashishkaloge-map-design && git -C .hotskills/ashishkaloge-map-design checkout --detach 4f228eed82ee4eb555ac50d2723734a00c89eecf
# Copy each selected skill directory from .hotskills/ashishkaloge-map-design into .claude/skills/<skill-name>/Heat
1.7- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- map-design
skills/map-design
How it works
map-design
When your agent uses it
Make real, accurate maps as one self-contained HTML, SVG and PNG. Choropleths by country, state, province or US county, or by any boundaries in the user's own GeoJSON, TopoJSON or KML (districts, ZIP codes, wards, constituencies, sales territories); bubble, spike and point maps; routes, voyages and GPS tracks from GPX; flow maps; locator maps with an inset globe; and OpenStreetMap city posters. Use whenever the user asks for a map, a "where is" graphic, data by country/state/county/region/district, a trip, flight, run or ride, a city poster, or any geographic visualization. Ships Natural Earth, US Census and OurAirports data, so coastlines, borders and coordinates are real rather than drawn from memory.
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
3,269 tokensWhen the skill is activated
Reference documents
10,905 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Choosing a kind
- Spec essentials
- Your own geometry
- Basemaps (street-level detail)
- Design rules
- Data you can use without fetching anything
- City posters
- When something goes wrong
Scripts executed separately
scripts/lib/basemap.mjsscripts/lib/color.mjsscripts/lib/data.mjsscripts/lib/errors.mjsscripts/lib/export.mjsscripts/lib/fonts.mjsscripts/lib/geo.mjsscripts/lib/geofile.mjsscripts/lib/hover.mjsscripts/lib/html.mjsscripts/lib/kinds/bubbles.mjsscripts/lib/kinds/choropleth.mjsscripts/lib/kinds/common.mjsscripts/lib/kinds/flows.mjsscripts/lib/kinds/locator.mjsscripts/lib/kinds/points.mjsscripts/lib/kinds/poster.mjsscripts/lib/kinds/route.mjsscripts/lib/labels.mjsscripts/lib/layout.mjsscripts/lib/locate.mjsscripts/lib/osm.mjsscripts/lib/polylabel.mjsscripts/lib/render.mjsscripts/lib/scales.mjsscripts/lib/spec.mjsscripts/lib/streets.mjsscripts/lib/svg.mjsscripts/lib/themes.mjsscripts/lib/tiles.mjsscripts/lib/vtiles.mjsscripts/map.mjsscripts/vendor/geo.iife.jsscripts/vendor/geo.mjsscripts/vendor/licenses/d3-array-LICENSEscripts/vendor/licenses/d3-geo-LICENSEscripts/vendor/licenses/mapbox-point-geometry-LICENSEscripts/vendor/licenses/mapbox-vector-tile-LICENSEscripts/vendor/licenses/pbf-LICENSEscripts/vendor/licenses/polylabel-LICENSEscripts/vendor/licenses/topojson-client-LICENSEscripts/vendor/licenses/us-atlas-LICENSEscripts/vendor/vtile.mjs
Files
../../.claude-plugin/marketplace.jsonasset508 bytes../../.claude-plugin/plugin.jsonasset528 bytesLICENSEasset1,070 bytesSKILL.mdcore12,438 bytesSKILL.mdcore12,438 bytesSKILL.mdcore12,438 bytesSKILL.mdcore12,438 bytesTHIRD_PARTY_NOTICES.mddoc3,995 bytesdata/admin1/ABW.topo.jsonasset733 bytesdata/admin1/AFG.topo.jsonasset38,814 bytesdata/admin1/AGO.topo.jsonasset35,004 bytesdata/admin1/AIA.topo.jsonasset5,448 bytesdata/admin1/ALB.topo.jsonasset16,557 bytesdata/admin1/ALD.topo.jsonasset5,741 bytesdata/admin1/AND.topo.jsonasset3,144 bytesdata/admin1/ARE.topo.jsonasset14,120 bytesdata/admin1/ARG.topo.jsonasset41,886 bytesdata/admin1/ARM.topo.jsonasset12,440 bytesdata/admin1/ASM.topo.jsonasset2,021 bytesdata/admin1/ATA.topo.jsonasset51,529 bytesdata/admin1/ATC.topo.jsonasset540 bytesdata/admin1/ATF.topo.jsonasset5,438 bytesdata/admin1/ATG.topo.jsonasset3,686 bytesdata/admin1/AUS.topo.jsonasset47,976 bytesdata/admin1/AUT.topo.jsonasset18,215 bytesdata/admin1/AZE.topo.jsonasset46,829 bytesdata/admin1/BDI.topo.jsonasset12,041 bytesdata/admin1/BEL.topo.jsonasset14,060 bytesdata/admin1/BEN.topo.jsonasset11,917 bytesdata/admin1/BFA.topo.jsonasset41,283 bytesdata/admin1/BGD.topo.jsonasset26,029 bytesdata/admin1/BGR.topo.jsonasset26,959 bytesdata/admin1/BHR.topo.jsonasset3,228 bytesdata/admin1/BHS.topo.jsonasset21,847 bytesdata/admin1/BIH.topo.jsonasset17,393 bytesdata/admin1/BLM.topo.jsonasset596 bytesdata/admin1/BLR.topo.jsonasset29,075 bytesdata/admin1/BLZ.topo.jsonasset8,711 bytesdata/admin1/BMU.topo.jsonasset4,508 bytesdata/admin1/BOL.topo.jsonasset25,490 bytesdata/admin1/BRA.topo.jsonasset43,048 bytesdata/admin1/BRB.topo.jsonasset5,201 bytesdata/admin1/BRN.topo.jsonasset3,098 bytesdata/admin1/BTN.topo.jsonasset19,132 bytesdata/admin1/BWA.topo.jsonasset14,654 bytesdata/admin1/CAF.topo.jsonasset35,724 bytesdata/admin1/CAN.topo.jsonasset67,117 bytesdata/admin1/CHE.topo.jsonasset32,167 bytesdata/admin1/CHL.topo.jsonasset54,672 bytesdata/admin1/CHN.topo.jsonasset44,483 bytesdata/admin1/CIV.topo.jsonasset36,572 bytesdata/admin1/CLP.topo.jsonasset557 bytesdata/admin1/CMR.topo.jsonasset24,191 bytesdata/admin1/COD.topo.jsonasset35,481 bytesdata/admin1/COG.topo.jsonasset26,620 bytesdata/admin1/COK.topo.jsonasset3,636 bytesdata/admin1/COL.topo.jsonasset42,012 bytesdata/admin1/COM.topo.jsonasset2,095 bytesdata/admin1/CPV.topo.jsonasset10,218 bytesdata/admin1/CRI.topo.jsonasset16,125 bytesdata/admin1/CSI.topo.jsonasset1,478 bytesdata/admin1/CUB.topo.jsonasset37,938 bytesdata/admin1/CUW.topo.jsonasset938 bytesdata/admin1/CYM.topo.jsonasset1,290 bytesdata/admin1/CYN.topo.jsonasset2,495 bytesdata/admin1/CYP.topo.jsonasset6,758 bytesdata/admin1/CZE.topo.jsonasset25,934 bytesdata/admin1/DEU.topo.jsonasset36,474 bytesdata/admin1/DJI.topo.jsonasset4,263 bytesdata/admin1/DMA.topo.jsonasset5,158 bytesdata/admin1/DNK.topo.jsonasset21,940 bytesdata/admin1/DOM.topo.jsonasset20,687 bytesdata/admin1/DZA.topo.jsonasset41,263 bytesdata/admin1/ECU.topo.jsonasset36,272 bytesdata/admin1/EGY.topo.jsonasset34,515 bytesdata/admin1/ERI.topo.jsonasset11,917 bytesdata/admin1/ESB.topo.jsonasset1,578 bytesdata/admin1/ESP.topo.jsonasset46,797 bytesdata/admin1/EST.topo.jsonasset20,799 bytesdata/admin1/ETH.topo.jsonasset27,184 bytesdata/admin1/FIN.topo.jsonasset41,654 bytesdata/admin1/FJI.topo.jsonasset13,004 bytesdata/admin1/FLK.topo.jsonasset12,806 bytesdata/admin1/FRA.topo.jsonasset56,241 bytesdata/admin1/FRO.topo.jsonasset5,310 bytesdata/admin1/FSM.topo.jsonasset3,301 bytesdata/admin1/GAB.topo.jsonasset20,967 bytesdata/admin1/GBR.topo.jsonasset109,088 bytesdata/admin1/GEO.topo.jsonasset12,363 bytesdata/admin1/GGY.topo.jsonasset988 bytesdata/admin1/GHA.topo.jsonasset26,196 bytesdata/admin1/GIB.topo.jsonasset523 bytesdata/admin1/GIN.topo.jsonasset34,670 bytesdata/admin1/GMB.topo.jsonasset6,303 bytesdata/admin1/GNB.topo.jsonasset18,382 bytesdata/admin1/GNQ.topo.jsonasset5,980 bytesdata/admin1/GRC.topo.jsonasset51,979 bytesdata/admin1/GRD.topo.jsonasset2,957 bytesdata/admin1/GRL.topo.jsonasset52,415 bytesdata/admin1/GTM.topo.jsonasset23,188 bytesdata/admin1/GUM.topo.jsonasset971 bytesdata/admin1/GUY.topo.jsonasset18,396 bytesdata/admin1/HKG.topo.jsonasset9,946 bytesdata/admin1/HMD.topo.jsonasset1,060 bytesdata/admin1/HND.topo.jsonasset26,024 bytesdata/admin1/HRV.topo.jsonasset40,321 bytesdata/admin1/HTI.topo.jsonasset11,228 bytesdata/admin1/HUN.topo.jsonasset30,549 bytesdata/admin1/IDN.topo.jsonasset62,705 bytesdata/admin1/IMN.topo.jsonasset1,331 bytesdata/admin1/IND.topo.jsonasset43,989 bytesdata/admin1/IOA.topo.jsonasset1,182 bytesdata/admin1/IOT.topo.jsonasset1,487 bytesdata/admin1/IRL.topo.jsonasset43,429 bytesdata/admin1/IRN.topo.jsonasset44,254 bytesdata/admin1/IRQ.topo.jsonasset28,035 bytesdata/admin1/ISL.topo.jsonasset33,006 bytesdata/admin1/ISR.topo.jsonasset9,274 bytesdata/admin1/ITA.topo.jsonasset65,068 bytesdata/admin1/JAM.topo.jsonasset9,435 bytesdata/admin1/JEY.topo.jsonasset958 bytesdata/admin1/JOR.topo.jsonasset9,642 bytesdata/admin1/JPN.topo.jsonasset54,521 bytesdata/admin1/KAB.topo.jsonasset1,188 bytesdata/admin1/KAS.topo.jsonasset839 bytesdata/admin1/KAZ.topo.jsonasset47,021 bytesdata/admin1/KEN.topo.jsonasset25,408 bytesdata/admin1/KGZ.topo.jsonasset21,799 bytesdata/admin1/KHM.topo.jsonasset31,546 bytesdata/admin1/KIR.topo.jsonasset5,652 bytesdata/admin1/KNA.topo.jsonasset5,350 bytesdata/admin1/KOR.topo.jsonasset37,263 bytesdata/admin1/KOS.topo.jsonasset15,852 bytesdata/admin1/KWT.topo.jsonasset4,552 bytesdata/admin1/LAO.topo.jsonasset28,019 bytesdata/admin1/LBN.topo.jsonasset7,751 bytesdata/admin1/LBR.topo.jsonasset21,197 bytesdata/admin1/LBY.topo.jsonasset17,787 bytesdata/admin1/LCA.topo.jsonasset4,646 bytesdata/admin1/LIE.topo.jsonasset4,519 bytesdata/admin1/LKA.topo.jsonasset24,906 bytesdata/admin1/LSO.topo.jsonasset12,475 bytesdata/admin1/LTU.topo.jsonasset19,172 bytesdata/admin1/LUX.topo.jsonasset3,591 bytesdata/admin1/LVA.topo.jsonasset64,860 bytesdata/admin1/MAC.topo.jsonasset1,417 bytesdata/admin1/MAF.topo.jsonasset713 bytesdata/admin1/MAR.topo.jsonasset20,095 bytesdata/admin1/MCO.topo.jsonasset577 bytesdata/admin1/MDA.topo.jsonasset26,774 bytesdata/admin1/MDG.topo.jsonasset37,275 bytesdata/admin1/MDV.topo.jsonasset18,098 bytesdata/admin1/MEX.topo.jsonasset45,567 bytesdata/admin1/MHL.topo.jsonasset2,573 bytesdata/admin1/MKD.topo.jsonasset52,524 bytesdata/admin1/MLI.topo.jsonasset20,421 bytesdata/admin1/MLT.topo.jsonasset23,162 bytesdata/admin1/MMR.topo.jsonasset41,113 bytesdata/admin1/MNE.topo.jsonasset12,600 bytesdata/admin1/MNG.topo.jsonasset35,729 bytesdata/admin1/MNP.topo.jsonasset2,919 bytesdata/admin1/MOZ.topo.jsonasset35,435 bytesdata/admin1/MRT.topo.jsonasset15,991 bytesdata/admin1/MSR.topo.jsonasset1,366 bytesdata/admin1/MUS.topo.jsonasset6,217 bytesdata/admin1/MWI.topo.jsonasset26,567 bytesdata/admin1/MYS.topo.jsonasset37,568 bytesdata/admin1/NAM.topo.jsonasset23,209 bytesdata/admin1/NCL.topo.jsonasset10,259 bytesdata/admin1/NER.topo.jsonasset14,333 bytesdata/admin1/NFK.topo.jsonasset766 bytesdata/admin1/NGA.topo.jsonasset43,422 bytesdata/admin1/NIC.topo.jsonasset21,553 bytesdata/admin1/NIU.topo.jsonasset861 bytesdata/admin1/NLD.topo.jsonasset15,028 bytesdata/admin1/NOR.topo.jsonasset51,625 bytesdata/admin1/NPL.topo.jsonasset22,739 bytesdata/admin1/NRU.topo.jsonasset4,138 bytesdata/admin1/NZL.topo.jsonasset40,107 bytesdata/admin1/OMN.topo.jsonasset12,796 bytesdata/admin1/PAK.topo.jsonasset33,321 bytesdata/admin1/PAN.topo.jsonasset28,036 bytesdata/admin1/PCN.topo.jsonasset831 bytesdata/admin1/PER.topo.jsonasset39,298 bytesdata/admin1/PGA.topo.jsonasset1,391 bytesdata/admin1/PHL.topo.jsonasset78,228 bytesdata/admin1/PLW.topo.jsonasset5,532 bytesdata/admin1/PNG.topo.jsonasset48,460 bytesdata/admin1/POL.topo.jsonasset25,514 bytesdata/admin1/PRI.topo.jsonasset3,415 bytesdata/admin1/PRK.topo.jsonasset29,038 bytesdata/admin1/PRT.topo.jsonasset26,380 bytesdata/admin1/PRY.topo.jsonasset27,693 bytesdata/admin1/PSX.topo.jsonasset2,862 bytesdata/admin1/PYF.topo.jsonasset10,290 bytesdata/admin1/QAT.topo.jsonasset5,133 bytesdata/admin1/ROU.topo.jsonasset42,059 bytesdata/admin1/RUS.topo.jsonasset66,773 bytesdata/admin1/RWA.topo.jsonasset7,089 bytesdata/admin1/SAH.topo.jsonasset2,999 bytesdata/admin1/SAU.topo.jsonasset32,947 bytesdata/admin1/SDN.topo.jsonasset21,256 bytesdata/admin1/SDS.topo.jsonasset17,228 bytesdata/admin1/SEN.topo.jsonasset23,619 bytesdata/admin1/SGP.topo.jsonasset2,739 bytesdata/admin1/SGS.topo.jsonasset5,692 bytesdata/admin1/SHN.topo.jsonasset1,531 bytesdata/admin1/SLB.topo.jsonasset20,652 bytesdata/admin1/SLE.topo.jsonasset10,797 bytesdata/admin1/SLV.topo.jsonasset15,946 bytesdata/admin1/SMR.topo.jsonasset3,365 bytesdata/admin1/SOL.topo.jsonasset3,297 bytesdata/admin1/SOM.topo.jsonasset10,560 bytesdata/admin1/SPM.topo.jsonasset1,624 bytesdata/admin1/SRB.topo.jsonasset35,508 bytesdata/admin1/STP.topo.jsonasset1,544 bytesdata/admin1/SUR.topo.jsonasset12,971 bytesdata/admin1/SVK.topo.jsonasset19,597 bytesdata/admin1/SVN.topo.jsonasset87,486 bytesdata/admin1/SWE.topo.jsonasset46,054 bytesdata/admin1/SWZ.topo.jsonasset4,491 bytesdata/admin1/SXM.topo.jsonasset554 bytesdata/admin1/SYC.topo.jsonasset10,025 bytesdata/admin1/SYR.topo.jsonasset20,702 bytesdata/admin1/TCA.topo.jsonasset3,640 bytesdata/admin1/TCD.topo.jsonasset30,418 bytesdata/admin1/TGO.topo.jsonasset8,530 bytesdata/admin1/THA.topo.jsonasset53,657 bytesdata/admin1/TJK.topo.jsonasset17,252 bytesdata/admin1/TKM.topo.jsonasset18,313 bytesdata/admin1/TLS.topo.jsonasset8,667 bytesdata/admin1/TON.topo.jsonasset3,302 bytesdata/admin1/TTO.topo.jsonasset8,406 bytesdata/admin1/TUN.topo.jsonasset24,600 bytesdata/admin1/TUR.topo.jsonasset60,296 bytesdata/admin1/TUV.topo.jsonasset1,116 bytesdata/admin1/TWN.topo.jsonasset16,616 bytesdata/admin1/TZA.topo.jsonasset46,514 bytesdata/admin1/UGA.topo.jsonasset63,686 bytesdata/admin1/UKR.topo.jsonasset37,274 bytesdata/admin1/UMI.topo.jsonasset2,539 bytesdata/admin1/URY.topo.jsonasset25,162 bytesdata/admin1/USA.topo.jsonasset65,455 bytesdata/admin1/USG.topo.jsonasset997 bytesdata/admin1/UZB.topo.jsonasset25,871 bytesdata/admin1/VAT.topo.jsonasset542 bytesdata/admin1/VCT.topo.jsonasset3,032 bytesdata/admin1/VEN.topo.jsonasset40,451 bytesdata/admin1/VGB.topo.jsonasset1,471 bytesdata/admin1/VIR.topo.jsonasset1,606 bytesdata/admin1/VNM.topo.jsonasset56,238 bytesdata/admin1/VUT.topo.jsonasset10,628 bytesdata/admin1/WLF.topo.jsonasset1,476 bytesdata/admin1/WSB.topo.jsonasset942 bytesdata/admin1/WSM.topo.jsonasset5,136 bytesdata/admin1/YEM.topo.jsonasset23,801 bytesdata/admin1/ZAF.topo.jsonasset33,183 bytesdata/admin1/ZMB.topo.jsonasset32,247 bytesdata/admin1/ZWE.topo.jsonasset28,393 bytesdata/airports.jsonasset267,871 bytesdata/countries.jsonasset79,688 bytesdata/physical-50m.topo.jsonasset310,035 bytesdata/places.jsonasset481,670 bytesdata/us-counties.topo.jsonasset842,143 bytesdata/us-states.topo.jsonasset114,554 bytesdata/world-110m.topo.jsonasset168,666 bytesdata/world-50m.topo.jsonasset432,565 bytesfonts/eb-garamond-latin-400-italic.woff2asset22,172 bytesfonts/eb-garamond-latin-400-normal.woff2asset21,704 bytesfonts/eb-garamond-latin-600-normal.woff2asset23,112 bytesfonts/eb-garamond-latin-ext-400-italic.woff2asset45,940 bytesfonts/eb-garamond-latin-ext-400-normal.woff2asset57,272 bytesfonts/eb-garamond-latin-ext-600-normal.woff2asset64,720 bytesfonts/eb-garamond-vietnamese-400-italic.woff2asset6,564 bytesfonts/eb-garamond-vietnamese-400-normal.woff2asset6,612 bytesfonts/eb-garamond-vietnamese-600-normal.woff2asset7,392 bytesfonts/fonts.jsonasset13,449 bytesfonts/ibm-plex-mono-latin-400-normal.woff2asset14,708 bytesfonts/ibm-plex-mono-latin-500-normal.woff2asset14,888 bytesfonts/ibm-plex-mono-latin-ext-400-normal.woff2asset13,348 bytesfonts/ibm-plex-mono-latin-ext-500-normal.woff2asset13,432 bytesfonts/ibm-plex-mono-vietnamese-400-normal.woff2asset5,868 bytesfonts/ibm-plex-mono-vietnamese-500-normal.woff2asset6,040 bytesfonts/jost-latin-300-normal.woff2asset9,876 bytesfonts/jost-latin-400-normal.woff2asset9,404 bytesfonts/jost-latin-600-normal.woff2asset10,480 bytesfonts/jost-latin-ext-300-normal.woff2asset6,516 bytesfonts/jost-latin-ext-400-normal.woff2asset6,396 bytesfonts/jost-latin-ext-600-normal.woff2asset6,832 bytesfonts/libre-franklin-latin-400-italic.woff2asset17,304 bytesfonts/libre-franklin-latin-400-normal.woff2asset15,900 bytesfonts/libre-franklin-latin-600-normal.woff2asset15,980 bytesfonts/libre-franklin-latin-800-normal.woff2asset16,008 bytesfonts/libre-franklin-latin-ext-400-italic.woff2asset15,632 bytesfonts/libre-franklin-latin-ext-400-normal.woff2asset14,580 bytesfonts/libre-franklin-latin-ext-600-normal.woff2asset14,676 bytesfonts/libre-franklin-latin-ext-800-normal.woff2asset14,848 bytesfonts/libre-franklin-vietnamese-400-italic.woff2asset4,876 bytesfonts/libre-franklin-vietnamese-400-normal.woff2asset4,580 bytesfonts/libre-franklin-vietnamese-600-normal.woff2asset4,616 bytesfonts/libre-franklin-vietnamese-800-normal.woff2asset4,552 bytesfonts/licenses/eb-garamond-OFL.txtdoc4,519 bytesfonts/licenses/ibm-plex-mono-OFL.txtdoc5,299 bytesfonts/licenses/jost-OFL.txtdoc4,497 bytesfonts/licenses/libre-franklin-OFL.txtdoc4,530 bytesfonts/licenses/source-serif-4-OFL.txtdoc4,314 bytesfonts/source-serif-4-latin-400-italic.woff2asset20,092 bytesfonts/source-serif-4-latin-400-normal.woff2asset20,088 bytesfonts/source-serif-4-latin-600-normal.woff2asset21,532 bytesfonts/source-serif-4-latin-ext-400-italic.woff2asset18,480 bytesfonts/source-serif-4-latin-ext-400-normal.woff2asset17,828 bytesfonts/source-serif-4-latin-ext-600-normal.woff2asset18,376 bytesfonts/source-serif-4-vietnamese-400-italic.woff2asset6,344 bytesfonts/source-serif-4-vietnamese-400-normal.woff2asset6,236 bytesfonts/source-serif-4-vietnamese-600-normal.woff2asset6,444 bytesreferences/basemaps.mddoc7,881 bytesreferences/cartography.mddoc3,293 bytesreferences/data.mddoc4,333 bytesreferences/posters.mddoc5,528 bytesreferences/spec.mddoc15,949 bytesscripts/lib/basemap.mjsruns6,203 bytesscripts/lib/color.mjsruns4,958 bytesscripts/lib/data.mjsruns14,316 bytesscripts/lib/errors.mjsruns200 bytesscripts/lib/export.mjsruns5,370 bytesscripts/lib/fonts.mjsruns3,195 bytesscripts/lib/geo.mjsruns12,349 bytesscripts/lib/geofile.mjsruns24,113 bytesscripts/lib/hover.mjsruns8,861 bytesscripts/lib/html.mjsruns11,976 bytesscripts/lib/kinds/bubbles.mjsruns5,662 bytesscripts/lib/kinds/choropleth.mjsruns25,984 bytesscripts/lib/kinds/common.mjsruns9,015 bytesscripts/lib/kinds/flows.mjsruns8,511 bytesscripts/lib/kinds/locator.mjsruns14,223 bytesscripts/lib/kinds/points.mjsruns2,918 bytesscripts/lib/kinds/poster.mjsruns20,458 bytesscripts/lib/kinds/route.mjsruns10,204 bytesscripts/lib/labels.mjsruns3,826 bytesscripts/lib/layout.mjsruns12,693 bytesscripts/lib/locate.mjsruns6,573 bytesscripts/lib/osm.mjsruns14,771 bytesscripts/lib/polylabel.mjsruns3,829 bytesscripts/lib/render.mjsruns8,356 bytesscripts/lib/scales.mjsruns6,791 bytesscripts/lib/spec.mjsruns7,331 bytesscripts/lib/streets.mjsruns7,198 bytesscripts/lib/svg.mjsruns3,518 bytesscripts/lib/themes.mjsruns9,539 bytesscripts/lib/tiles.mjsruns23,517 bytesscripts/lib/vtiles.mjsruns23,829 bytesscripts/map.mjsruns10,040 bytesscripts/vendor/geo.iife.jsruns41,603 bytesscripts/vendor/geo.mjsruns43,961 bytesscripts/vendor/licenses/d3-array-LICENSEruns731 bytesscripts/vendor/licenses/d3-geo-LICENSEruns1,857 bytesscripts/vendor/licenses/mapbox-point-geometry-LICENSEruns725 bytesscripts/vendor/licenses/mapbox-vector-tile-LICENSEruns1,500 bytesscripts/vendor/licenses/pbf-LICENSEruns1,467 bytesscripts/vendor/licenses/polylabel-LICENSEruns722 bytesscripts/vendor/licenses/topojson-client-LICENSEruns734 bytesscripts/vendor/licenses/us-atlas-LICENSEruns734 bytesscripts/vendor/vtile.mjsruns15,098 bytes
Read SKILL.md
# Map Design
You cannot draw a coastline from memory, and neither can any model. This skill
gives you real geography: bundled boundary data, an offline gazetteer, proper
projections, and a renderer with an editorial design system. You write a short
JSON spec; the CLI draws the map.
**Never hand-write map geometry, SVG paths or coordinates for countries,
coasts or borders.** Always go through `scripts/map.mjs`.
`<skill-dir>` below is this skill's base directory. The CLI needs Node.js 20+
and nothing else. PNG export uses a local Chrome, Edge, Brave or Chromium if
one exists; HTML and SVG always work.
View the complete source on GitHubSkills included
- map-design
Repository facts
- License
- MIT
- Created
- Oct 18, 2026
- Last pushed
- Oct 28, 2026
- Forks
- 1
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 205 notes
skills/map-design/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/map-design/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/map-design/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/map-design/data/admin1/AFG.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/AGO.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/AIA.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/ALB.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/ALD.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/ARE.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/ARG.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/ARM.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/ATA.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/ATF.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/AUS.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/AUT.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/AZE.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/BDI.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/BEL.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/BEN.topo.json:1Analysis incomplete: physical or joined line exceeds character limitskills/map-design/data/admin1/BFA.topo.json:1Analysis incomplete: physical or joined line exceeds character limit
- No broad tool permissions
- No dangerous shell commands
- 161 network referencesin 20 files: map-design/scripts/lib/tiles.mjs:30 map-design/THIRD_PARTY_NOTICES.md:10 map-design/references/basemaps.md:13 and 17 more
- 4 obfuscation signalsin 4 files: map-design/scripts/lib/spec.mjs:80 map-design/scripts/vendor/geo.iife.js:6 map-design/scripts/vendor/geo.mjs:6 and 1 more
- No instruction overrides
- 43 executable scriptsin 43 files: map-design/scripts/lib/basemap.mjs:1 map-design/scripts/lib/color.mjs:1 map-design/scripts/lib/data.mjs:1 and 40 more
- No access to secrets
- No requests to vote in Hot
Show all 208 signals by file
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "Ashish Kaloge", "url": "https://github.com/ashishkaloge" - Network accessline 6
"name": "Ashish Kaloge", "url": "https://github.com/ashishkaloge" }, - Network accessline 7
"url": "https://github.com/ashishkaloge" - Network accessline 8
}, "repository": "https://github.com/ashishkaloge/map-design", "license": "MIT", - Network accessline 9
"repository": "https://github.com/ashishkaloge/map-design",
skills/map-design/SKILL.md
- Network accessline 135
No file? For districts and other second-level areas, look for the national statistics or mapping office's boundaries, or geoBoundaries (<https://www.geoboundaries.org>, open licenses per country). Download the - Network accessline 136
statistics or mapping office's boundaries, or geoBoundaries (<https://www.geoboundaries.org>, open licenses per country). Download the GeoJSON next to the spec and credit it in `source`. Details: - Network accessline 137
(<https://www.geoboundaries.org>, open licenses per country). Download the
skills/map-design/THIRD_PARTY_NOTICES.md
- Network accessline 10
- [d3-geo](https://github.com/d3/d3-geo) 3.1.1, Copyright 2010-2024 Mike - Network accessline 12
notice, Copyright 2008-2012 Charles Karney (MIT). The complete upstream text is in [d3-geo-LICENSE](scripts/vendor/licenses/d3-geo-LICENSE). - [d3-array](https://github.com/d3/d3-array) 3.2.4, Copyright 2010-2023 Mike - Network accessline 13
is in [d3-geo-LICENSE](scripts/vendor/licenses/d3-geo-LICENSE). - [d3-array](https://github.com/d3/d3-array) 3.2.4, Copyright 2010-2023 Mike Bostock, ISC License. Complete text: - Network accessline 14
- [d3-array](https://github.com/d3/d3-array) 3.2.4, Copyright 2010-2023 Mike - Network accessline 15
Bostock, ISC License. Complete text: [d3-array-LICENSE](scripts/vendor/licenses/d3-array-LICENSE). - [topojson-client](https://github.com/topojson/topojson-client) 3.1.0, - Network accessline 16
[d3-array-LICENSE](scripts/vendor/licenses/d3-array-LICENSE). - [topojson-client](https://github.com/topojson/topojson-client) 3.1.0, Copyright 2012-2019 Michael Bostock, ISC License. Complete text: - Network accessline 17
- [topojson-client](https://github.com/topojson/topojson-client) 3.1.0, - Network accessline 23
- [pbf](https://github.com/mapbox/pbf) 4.0.2, Copyright (c) 2024 Mapbox, - Network accessline 24
BSD 3-Clause License. Complete text: [pbf-LICENSE](scripts/vendor/licenses/pbf-LICENSE). - [@mapbox/vector-tile](https://github.com/mapbox/vector-tile-js) 2.0.5, Copyright (c) 2024 Mapbox, BSD 3-Clause License. Complete text: - Network accessline 25
- [@mapbox/vector-tile](https://github.com/mapbox/vector-tile-js) 2.0.5, - Network accessline 26
Copyright (c) 2024 Mapbox, BSD 3-Clause License. Complete text: [mapbox-vector-tile-LICENSE](scripts/vendor/licenses/mapbox-vector-tile-LICENSE). - [@mapbox/point-geometry](https://github.com/mapbox/point-geometry) 1.1.0, - Network accessline 27
[mapbox-vector-tile-LICENSE](scripts/vendor/licenses/mapbox-vector-tile-LICENSE). - [@mapbox/point-geometry](https://github.com/mapbox/point-geometry) 1.1.0, Copyright (c) 2024 Mapbox, ISC License. Complete text: - Network accessline 28
- [@mapbox/point-geometry](https://github.com/mapbox/point-geometry) 1.1.0, - Network accessline 38
- [Natural Earth](https://www.naturalearthdata.com/) vector data (countries, - Network accessline 39
first-level subdivisions, populated places, lakes, rivers): public domain. Simplified and converted to TopoJSON by the repository's `tools/build-data.mjs`. - [us-atlas](https://github.com/topojson/us-atlas) 3.0.1 (ISC), built from US - Network accessline 40
Simplified and converted to TopoJSON by the repository's `tools/build-data.mjs`. - [us-atlas](https://github.com/topojson/us-atlas) 3.0.1 (ISC), built from US Census Bureau cartographic boundary files: public domain. The upstream - Network accessline 41
- [us-atlas](https://github.com/topojson/us-atlas) 3.0.1 (ISC), built from US - Network accessline 42
Census Bureau cartographic boundary files: public domain. The upstream license text is in [us-atlas-LICENSE](scripts/vendor/licenses/us-atlas-LICENSE). - [OurAirports](https://ourairports.com/data/) airport data: public domain. - Network accessline 43
license text is in [us-atlas-LICENSE](scripts/vendor/licenses/us-atlas-LICENSE). - [OurAirports](https://ourairports.com/data/) airport data: public domain. - City posters and the `streets` basemap download data from - Network accessline 44
- [OurAirports](https://ourairports.com/data/) airport data: public domain. - City posters and the `streets` basemap download data from [OpenStreetMap](https://www.openstreetmap.org/copyright) at render time, as - Network accessline 45
- City posters and the `streets` basemap download data from [OpenStreetMap](https://www.openstreetmap.org/copyright) at render time, as vector tiles in the [OpenMapTiles](https://openmaptiles.org/) schema served by - Network accessline 46
[OpenStreetMap](https://www.openstreetmap.org/copyright) at render time, as - Network accessline 47
vector tiles in the [OpenMapTiles](https://openmaptiles.org/) schema served by - Network accessline 48
[OpenFreeMap](https://openfreemap.org/), or from the Overpass API as a fallback. - Network accessline 49
OpenStreetMap data is © OpenStreetMap contributors and available under the Open Database License 1.0. The OpenMapTiles schema's design is licensed under [CC BY 4.0](https://github.com/openmaptiles/openmaptiles/blob/master/LICENSE.md). - Network accessline 50
Database License 1.0. The OpenMapTiles schema's design is licensed under [CC BY 4.0](https://github.com/openmaptiles/openmaptiles/blob/master/LICENSE.md). Vector maps print © OpenMapTiles.org, © OpenStreetMap contributors and the - Network accessline 51
[CC BY 4.0](https://github.com/openmaptiles/openmaptiles/blob/master/LICENSE.md). - Network accessline 62
All fonts are under the [SIL Open Font License 1.1](https://openfontlicense.org/),
skills/map-design/fonts/licenses/eb-garamond-OFL.txt
- Network accessline 1
Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12) EBGaramond-Italic[wght].ttf: Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12) - Network accessline 3
This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - Network accessline 5
http://scripts.sil.org/OFL
skills/map-design/fonts/licenses/ibm-plex-mono-OFL.txt
skills/map-design/fonts/licenses/jost-OFL.txt
- Network accessline 1
Copyright 2020 The Jost Project Authors (https://github.com/indestructible-type/Jost) Jost-Italic[wght].ttf: Copyright 2020 The Jost Project Authors (https://github.com/indestructible-type/Jost) - Network accessline 3
This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - Network accessline 5
http://scripts.sil.org/OFL
skills/map-design/fonts/licenses/libre-franklin-OFL.txt
- Network accessline 1
Copyright 2020 The Libre Franklin Project Authors (https://github.com/googlefonts/Libre-Franklin) LibreFranklin-Italic[wght].ttf: Copyright 2020 The Libre Franklin Project Authors (https://github.com/googlefonts/Libre-Franklin) - Network accessline 3
This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - Network accessline 5
http://scripts.sil.org/OFL
skills/map-design/fonts/licenses/source-serif-4-OFL.txt
skills/map-design/references/basemaps.md
- Network accessline 13
Draws roads (fading by class), water, parks, rail and, at the closest zoom, building footprints from OpenStreetMap vector tiles in the [OpenMapTiles](https://openmaptiles.org/) schema, served free by - Network accessline 14
building footprints from OpenStreetMap vector tiles in the [OpenMapTiles](https://openmaptiles.org/) schema, served free by [OpenFreeMap](https://openfreemap.org/). Colours come from the map's theme, so the - Network accessline 15
[OpenMapTiles](https://openmaptiles.org/) schema, served free by - Network accessline 16
[OpenFreeMap](https://openfreemap.org/). Colours come from the map's theme, so the - Network accessline 31
its required attribution is covered by the generated footer; extra attribution in a custom TileJSON is not automatically included. - [OpenFreeMap's terms](https://openfreemap.org/tos/) allow downloads from apps - Network accessline 32
in a custom TileJSON is not automatically included. - [OpenFreeMap's terms](https://openfreemap.org/tos/) allow downloads from apps of at most 3,000 tiles or 50 MB, four requests at a time, with an identifying - Network accessline 33
- [OpenFreeMap's terms](https://openfreemap.org/tos/) allow downloads from apps of at most 3,000 tiles or 50 MB, four requests at a time, with an identifying User-Agent; the renderer enforces all three. Commercial use is allowed. The - Network accessline 106
`osm`, `light` and `dark` use `tile.openstreetmap.org`. Its [tile usage policy](https://operations.osmfoundation.org/policies/tiles/) - Network accessline 107
[tile usage policy](https://operations.osmfoundation.org/policies/tiles/) - Network accessline 111
workloads, use self-hosted tiles or a provider that explicitly permits them. Embedding a finished map does not establish permission for a bulk/offline workflow. See the [attribution guidelines](https://osmfoundation.org/wiki/Licence/Attribu - Network accessline 112
Embedding a finished map does not establish permission for a bulk/offline workflow. See the [attribution guidelines](https://osmfoundation.org/wiki/Licence/Attribution_Guidelines) for the map's credits and licence notice. - Network accessline 113
workflow. See the [attribution guidelines](https://osmfoundation.org/wiki/Licence/Attribution_Guidelines) - Network accessline 118
`osm-hot` is hosted by OpenStreetMap France; it is not governed by the standard OSMF tile-service policy above. Its [map guidance](https://www.openstreetmap.fr/fonds-de-carte/) - Network accessline 119
OSMF tile-service policy above. Its [map guidance](https://www.openstreetmap.fr/fonds-de-carte/) - Network accessline 120
allows attributed paper prints and screenshots under the associated licence. Its [service policy](https://www.openstreetmap.fr/usage/) sets separate conditions for website/application use, including public access, nonprofit use and moderate - Network accessline 121
Its [service policy](https://www.openstreetmap.fr/usage/) sets separate conditions - Network accessline 130
requires a key for all requests; unauthenticated presets are rejected rather than downloading watermarked imagery. The [CARTO basemap terms](https://carto.com/legal/basemap-terms/), section 9, - Network accessline 131
downloading watermarked imagery. The [CARTO basemap terms](https://carto.com/legal/basemap-terms/), section 9, prohibit server-side caching and cap end-user cache retention at 30 days. - Network accessline 132
The [CARTO basemap terms](https://carto.com/legal/basemap-terms/), section 9, - Network accessline 135
`basemaps.cartocdn.com` or its documented `a`/`b`/`c`/`d` tile subdomains, even when `cache: true` is requested. The same host checks enforce the key requirement for custom URLs. See the [official tile URL formats](https://github.com/CartoD - Network accessline 137
for custom URLs. See the [official tile URL formats](https://github.com/CartoDB/basemap-styles). - Network accessline 140
illustrative, editorial or documentary purposes. This is not blanket permission to redistribute raw tiles, build a tile archive or offer offline tile access. Check the terms and the [provider's current setup instructions](https://carto.com/ - Network accessline 141
to redistribute raw tiles, build a tile archive or offer offline tile access. Check the terms and the [provider's current setup instructions](https://carto.com/basemaps/) before using or sharing an export. - Network accessline 142
Check the terms and the [provider's current setup instructions](https://carto.com/basemaps/)
skills/map-design/references/data.md
- Network accessline 42
- World Bank Indicators API, JSON or CSV, keyed by ISO alpha-3: `https://api.worldbank.org/v2/country/all/indicator/SP.POP.TOTL?format=json&date=2023&per_page=400` - Network accessline 43
`https://api.worldbank.org/v2/country/all/indicator/SP.POP.TOTL?format=json&date=2023&per_page=400` - Network accessline 44
(World Bank rows include regional aggregates such as `WLD` or `EUU`; they will show up as unmatched and can be ignored.) - Our World in Data grapher CSVs: `https://ourworldindata.org/grapher/<chart>.csv`, - Network accessline 45
show up as unmatched and can be ignored.) - Our World in Data grapher CSVs: `https://ourworldindata.org/grapher/<chart>.csv`, with an ISO `Code` column. - Network accessline 46
- Our World in Data grapher CSVs: `https://ourworldindata.org/grapher/<chart>.csv`, - Network accessline 62
the official boundaries that its statistics are keyed to. Prefer these: the codes in the data will match. - geoBoundaries (<https://www.geoboundaries.org>) provides administrative - Network accessline 63
codes in the data will match. - geoBoundaries (<https://www.geoboundaries.org>) provides administrative boundaries with source and license metadata; available levels vary by - Network accessline 64
- geoBoundaries (<https://www.geoboundaries.org>) provides administrative
skills/map-design/references/posters.md
- Network accessline 115
- OpenFreeMap is free and donation-funded. Its [terms](https://openfreemap.org/tos/) allow at most 3,000 tiles or 50 MB per download; tile counts and download sizes depend on latitude and local density. - Network accessline 116
[terms](https://openfreemap.org/tos/) allow at most 3,000 tiles or 50 MB per download; tile counts and download sizes depend on latitude and local density. The renderer enforces the limits and asks for a smaller radius past them.
skills/map-design/scripts/lib/basemap.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/color.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/data.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/errors.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/export.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/fonts.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/geo.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/geofile.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/hover.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/html.mjs
skills/map-design/scripts/lib/kinds/bubbles.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/kinds/choropleth.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/kinds/common.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/kinds/flows.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/kinds/locator.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/kinds/points.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/kinds/poster.mjs
- Executable scriptline 1
Executable file - Network accessline 236
furniture.push(`<text x="${W / 2}" y="${n(baseY + 112 * u)}" text-anchor="middle" font-family="${esc(theme.mono)}" font-size="${n(15 * u)}" font-weight="400" letter-spacing="${n(1.5 * u)}" fill="${theme.muted}">${esc(formatCoords(center[0], - Network accessline 238
furniture.push(`<text x="${n(W - 24 * u)}" y="${n(H - 20 * u)}" text-anchor="end" font-family="${esc(theme.mono)}" font-size="${n(10 * u)}" fill="${theme.muted}" fill-opacity="0.8">${esc(credit)} · https://www.openstreetmap.org/copyright</t - Network accessline 240
let svg = [ `<svg xmlns="http://www.w3.org/2000/svg" width="${W}" height="${H}" viewBox="0 0 ${W} ${H}" role="img" aria-label="${esc(`Street map of ${placeName}`)}">`, - Network accessline 241
`<svg xmlns="http://www.w3.org/2000/svg" width="${W}" height="${H}" viewBox="0 0 ${W} ${H}" role="img" aria-label="${esc(`Street map of ${placeName}`)}">`,
skills/map-design/scripts/lib/kinds/route.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/labels.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/layout.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/locate.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/osm.mjs
- Executable scriptline 1
Executable file - Network accessline 9
const ENDPOINTS = ["https://overpass-api.de/api/interpreter", "https://overpass.private.coffee/api/interpreter"]; - Network accessline 10
const USER_AGENT = "map-design/0.1 (+https://github.com/ashishkaloge/map-design)"; - Network accessline 46
/** Fetch (or reuse cached) Overpass JSON for a bbox. */ - Network accessline 60
try { log(`Downloading OpenStreetMap data from ${new URL(url).host}…`); const res = await fetch(url, { - Network accessline 61
log(`Downloading OpenStreetMap data from ${new URL(url).host}…`); const res = await fetch(url, { method: "POST", - Network accessline 62
const res = await fetch(url, {
skills/map-design/scripts/lib/polylabel.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/render.mjs
- Executable scriptline 1
Executable file - Network accessline 58
mapAttribution: rasterCfg ? { text: rasterCfg.attribution, urls: rasterCfg.attributionUrls } : streetCfg ? { text: streetCfg.attribution, urls: ["https://www.openstreetmap.org/copyright", "https://www.openmaptiles.org/"] } : nul - Network accessline 59
? { text: rasterCfg.attribution, urls: rasterCfg.attributionUrls } : streetCfg ? { text: streetCfg.attribution, urls: ["https://www.openstreetmap.org/copyright", "https://www.openmaptiles.org/"] } : null, }); - Network accessline 60
: streetCfg ? { text: streetCfg.attribution, urls: ["https://www.openstreetmap.org/copyright", "https://www.openmaptiles.org/"] } : null, - Network accessline 117
const clipId = "map-clip"; const svg = [ `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" role="img" aria-label="${esc(spec.title ?? `${spec.kind} map`)}">`, - Network accessline 118
const svg = [ `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" role="img" aria-label="${esc(spec.title ?? `${spec.kind} map`)}">`, `<title>${esc(spec.title ?? `${spec.kind - Network accessline 119
`<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" role="img" aria-label="${esc(spec.title ?? `${spec.kind} map`)}">`,
skills/map-design/scripts/lib/scales.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/spec.mjs
skills/map-design/scripts/lib/streets.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/svg.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/themes.mjs
- Executable scriptline 1
Executable file
skills/map-design/scripts/lib/tiles.mjs
- Executable scriptline 1
Executable file - Network accessline 30
export const PRESETS = { osm: { url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", - Network accessline 31
osm: { url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", attribution: "© OpenStreetMap contributors", - Network accessline 32
url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", - Network accessline 33
attribution: "© OpenStreetMap contributors", attributionUrl: "https://www.openstreetmap.org/copyright", maxZoom: 19, - Network accessline 34
attributionUrl: "https://www.openstreetmap.org/copyright", - Network accessline 36
}, "osm-hot": { url: "https://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", - Network accessline 37
"osm-hot": { url: "https://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", attribution: "© OpenStreetMap contributors, style by HOT, tiles by OpenStreetMap France", - Network accessline 38
url: "https://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", - Network accessline 39
attribution: "© OpenStreetMap contributors, style by HOT, tiles by OpenStreetMap France", attributionUrl: "https://www.openstreetmap.org/copyright", maxZoom: 19, - Network accessline 40
attributionUrl: "https://www.openstreetmap.org/copyright", - Network accessline 42
}, "osm-dark": { url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", - Network accessline 43
"osm-dark": { url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", attribution: "© OpenStreetMap contributors", - Network accessline 44
url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", - Network accessline 45
attribution: "© OpenStreetMap contributors", attributionUrl: "https://www.openstreetmap.org/copyright", maxZoom: 19, - Network accessline 46
attributionUrl: "https://www.openstreetmap.org/copyright", - Network accessline 49
}, "carto-light": { url: "https://basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", - Network accessline 50
"carto-light": { url: "https://basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", attribution: "© OpenStreetMap contributors © CARTO", - Network accessline 51
url: "https://basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", - Network accessline 52
attribution: "© OpenStreetMap contributors © CARTO", attributionUrl: "https://carto.com/attribution/", maxZoom: 20, - Network accessline 53
attributionUrl: "https://carto.com/attribution/", - Network accessline 56
}, "carto-dark": { url: "https://basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png", - Network accessline 57
"carto-dark": { url: "https://basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png", attribution: "© OpenStreetMap contributors © CARTO", - Network accessline 58
url: "https://basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png", - Network accessline 59
attribution: "© OpenStreetMap contributors © CARTO", attributionUrl: "https://carto.com/attribution/", maxZoom: 20, - Network accessline 60
attributionUrl: "https://carto.com/attribution/", - Network accessline 63
}, "carto-voyager": { url: "https://basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png", - Network accessline 64
"carto-voyager": { url: "https://basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png", attribution: "© OpenStreetMap contributors © CARTO", - Network accessline 65
url: "https://basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png", - Network accessline 66
attribution: "© OpenStreetMap contributors © CARTO", attributionUrl: "https://carto.com/attribution/", maxZoom: 20, - Network accessline 67
attributionUrl: "https://carto.com/attribution/", - Network accessline 81
const UA = "map-design/0.1 (+https://github.com/ashishkaloge/map-design)"; - Network accessline 236
attribution: cfg.attribution ?? (knownPreset ? preset.attribution : ""), attributionUrls: knownPreset ? [...new Set(["https://www.openstreetmap.org/copyright", preset.attributionUrl])] - Network accessline 237
attributionUrls: knownPreset ? [...new Set(["https://www.openstreetmap.org/copyright", preset.attributionUrl])] : [], - Network accessline 238
? [...new Set(["https://www.openstreetmap.org/copyright", preset.attributionUrl])] - Network accessline 360
if (wait) await new Promise((r) => setTimeout(r, wait)); try { const res = await fetch(url, { - Network accessline 361
try { const res = await fetch(url, { headers: { "user-agent": UA, accept: "image/png" }, - Network accessline 362
const res = await fetch(url, {
skills/map-design/scripts/lib/vtiles.mjs
- Network accessline 1
// OpenStreetMap features from vector tiles in the OpenMapTiles schema, by default // the public OpenFreeMap instance (https://openfreemap.org). Posters and street - Executable scriptline 1
Executable file - Network accessline 2
// the public OpenFreeMap instance (https://openfreemap.org). Posters and street - Network accessline 5
// OpenFreeMap's terms allow downloads from apps of at most 3,000 tiles or 50 MB, // with at most 4 parallel requests and a User-Agent that identifies the app // (https://openfreemap.org/tos/). Every limit below is enforced before or while - Network accessline 6
// with at most 4 parallel requests and a User-Agent that identifies the app // (https://openfreemap.org/tos/). Every limit below is enforced before or while // downloading, and tiles are cached on disk so re-renders stay offline. - Network accessline 7
// (https://openfreemap.org/tos/). Every limit below is enforced before or while - Network accessline 23
export const OPENFREEMAP = "https://tiles.openfreemap.org/planet"; - Network accessline 24
export const VECTOR_ATTRIBUTION = "© OpenMapTiles.org © OpenStreetMap contributors"; export const LIMITS = { tiles: 3000, bytes: 50_000_000, parallel: 4 }; const UA = "map-design/0.1 (+https://github.com/ashishkaloge/map-design)"; - Network accessline 25
export const LIMITS = { tiles: 3000, bytes: 50_000_000, parallel: 4 }; const UA = "map-design/0.1 (+https://github.com/ashishkaloge/map-design)"; const TIMEOUT_MS = 30_000; - Network accessline 26
const UA = "map-design/0.1 (+https://github.com/ashishkaloge/map-design)"; - Network accessline 51
try { signal?.throwIfAborted(); const res = await fetch(url, { headers: { "user-agent": UA, accept }, signal: controller.signal, redirect: "error" }); - Network accessline 52
signal?.throwIfAborted(); const res = await fetch(url, { headers: { "user-agent": UA, accept }, signal: controller.signal, redirect: "error" }); if (res.status === 204 || res.status === 404) { - Network accessline 53
const res = await fetch(url, { headers: { "user-agent": UA, accept }, signal: controller.signal, redirect: "error" });
skills/map-design/scripts/map.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/map-design/scripts/vendor/geo.iife.js
- Network accessline 1
// Vendored for map-design. Do not edit; rebuild with `npm run build:vendor`. // d3-geo 3.1.1 (ISC) https://github.com/d3/d3-geo.git - Executable scriptline 1
Executable file - Network accessline 2
// d3-geo 3.1.1 (ISC) https://github.com/d3/d3-geo.git - Network accessline 3
// d3-array 3.2.4 (ISC) https://github.com/d3/d3-array.git - Network accessline 4
// topojson-client 3.1.0 (ISC) https://github.com/topojson/topojson-client.git - Possible obfuscationline 6
var MapGeo=(()=>{var ar=Object.defineProperty;var Mo=Object.getOwnPropertyDescriptor;var Ao=Object.getOwnPropertyNames;var qo=Object.prototype.hasOwnProperty;var Co=(t,n)=>{for(var e in n)ar(t,e,{get:n[e],enumerable:!0})},zo=(t,n,e,r)=>{if(
skills/map-design/scripts/vendor/geo.mjs
- Network accessline 1
// Vendored for map-design. Do not edit; rebuild with `npm run build:vendor`. // d3-geo 3.1.1 (ISC) https://github.com/d3/d3-geo.git - Executable scriptline 1
Executable file - Network accessline 2
// d3-geo 3.1.1 (ISC) https://github.com/d3/d3-geo.git - Network accessline 3
// d3-array 3.2.4 (ISC) https://github.com/d3/d3-array.git - Network accessline 4
// topojson-client 3.1.0 (ISC) https://github.com/topojson/topojson-client.git - Possible obfuscationline 6
var go=Object.create;var Zr=Object.defineProperty;var vo=Object.getOwnPropertyDescriptor;var xo=Object.getOwnPropertyNames;var Eo=Object.getPrototypeOf,yo=Object.prototype.hasOwnProperty;var So=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n
skills/map-design/scripts/vendor/licenses/d3-array-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/licenses/d3-geo-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/licenses/mapbox-point-geometry-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/licenses/mapbox-vector-tile-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/licenses/pbf-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/licenses/polylabel-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/licenses/topojson-client-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/licenses/us-atlas-LICENSE
- Executable scriptline 1
Executable file
skills/map-design/scripts/vendor/vtile.mjs
- Network accessline 1
// Vendored for map-design. Do not edit; rebuild with `npm run build:vendor`. // pbf 4.0.2 (BSD-3-Clause) git+ssh://git@github.com/mapbox/pbf.git // @mapbox/vector-tile 2.0.5 (BSD-3-Clause) git+https://github.com/mapbox/vector-tile-js.git - Executable scriptline 1
Executable file - Network accessline 2
// pbf 4.0.2 (BSD-3-Clause) git+ssh://git@github.com/mapbox/pbf.git // @mapbox/vector-tile 2.0.5 (BSD-3-Clause) git+https://github.com/mapbox/vector-tile-js.git // @mapbox/point-geometry 1.1.0 (ISC) git@github.com:mapbox/point-geometry.git - Network accessline 3
// @mapbox/vector-tile 2.0.5 (BSD-3-Clause) git+https://github.com/mapbox/vector-tile-js.git - Possible obfuscationline 6
var m=23283064365386963e-26,D=12,E=typeof TextDecoder>"u"?null:new TextDecoder("utf-8"),P=0,F=1,y=2,p=5,g=class{constructor(t=new Uint8Array(16)){this.buf=ArrayBuffer.isView(t)?t:new Uint8Array(t),this.dataView=new DataView(this.buf.buffer)
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 8 facts
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/html.mjs:60High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/kinds/poster.mjs:241High confidence
- Contacts overpass-api.de, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/osm.mjs:9High confidence
- Contacts overpass.private.coffee, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/osm.mjs:9High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/render.mjs:119High confidence
- Contacts a.tile.openstreetmap.fr, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/tiles.mjs:38High confidence
- Contacts basemaps.cartocdn.com, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/tiles.mjs:51High confidence
- Contacts carto.com, which SKILL.md, the README and the plugin manifest do not mentionmap-design/scripts/lib/tiles.mjs:53High confidence
Signal confidence: 203 facts
- Network access in prose of the SKILL.mdmap-design/SKILL.md:135Low confidence
- Network access in prose of the SKILL.mdmap-design/SKILL.md:136Low confidence
- Network access in prose of the SKILL.mdmap-design/SKILL.md:137Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:10Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:12Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:13Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:14Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:15Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:16Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:17Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:23Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:24Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:25Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:26Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:27Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:28Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:38Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:39Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:40Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:41Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:42Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:43Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:44Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:45Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:46Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:47Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:48Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:49Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:50Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:51Low confidence
- Network access in prose of documentationmap-design/THIRD_PARTY_NOTICES.md:62Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/eb-garamond-OFL.txt:1Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/eb-garamond-OFL.txt:3Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/eb-garamond-OFL.txt:5Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/ibm-plex-mono-OFL.txt:3Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/ibm-plex-mono-OFL.txt:5Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/jost-OFL.txt:1Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/jost-OFL.txt:3Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/jost-OFL.txt:5Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/libre-franklin-OFL.txt:1Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/libre-franklin-OFL.txt:3Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/libre-franklin-OFL.txt:5Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/source-serif-4-OFL.txt:3Low confidence
- Network access in prose of documentationmap-design/fonts/licenses/source-serif-4-OFL.txt:5Low confidence
- Network access in prose of documentationmap-design/references/basemaps.md:13Low confidence
- Network access in prose of documentationmap-design/references/basemaps.md:14Low confidence
- Network access in prose of documentationmap-design/references/basemaps.md:15Low confidence
- Network access in prose of documentationmap-design/references/basemaps.md:16Low confidence
- Network access in prose of documentationmap-design/references/basemaps.md:31Low confidence
- Network access in prose of documentationmap-design/references/basemaps.md:32Low confidence
and 153 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/map-design/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/map-design/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/map-design/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/map-design/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/map-design/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.