Agent skill

Thematic Map

by zzhonglei in zzhonglei/GeoCode-Release

Create well-designed maps that follow standard cartographic conventions.

MITAuto-check passedData & Analytics

Install Thematic Map

skills CLI
$ npx skills add zzhonglei/GeoCode-Release --skill thematic-map -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install zzhonglei/GeoCode-Release thematic-map --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/zzhonglei/GeoCode-Release.git skills-src && mkdir -p .claude/skills && cp -r skills-src/contributions/thematic-map/skill .claude/skills/thematic-map && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
thematic-map
GitHub stars
189
Token cost
~3.1k tokens
SKILL.md length
1,404 words
Files
15 (incl. scripts, references)
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Create well-designed maps that follow standard cartographic conventions.

  • Works in 2 steps: Inspect the map yourself → Report to the user
  • You need to create a map
  • SKILL.md covers Runtime Environment and…, How to Work Through This…, Commenting Conventions and China Base Map (whole-China…, plus 11 more sections
  • Runs Python scripts from its folder

What it does

Thematic Map is an agent skill from zzhonglei/GeoCode-Release. Create well-designed maps that follow standard cartographic conventions. Use this skill when you need to create a map. If the map requires GIS or remote sensing data processing, complete all data preparation and processing steps BEFORE reading this skill. Only read this skill when the data is fully ready and you are about to begin composing the map.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including scripts and reference files (for example `references/basemap.md`, `references/cartopy-projection.md` and `references/china-base-map.md`).

It sits in Data & Analytics, covering Geospatial analysis. The repository describes itself as: A desktop AI assistant for geoscience data processing. The licence is MIT.

When your agent uses it

  • You need to create a map
  • Tasks that involve Geospatial analysis

Example prompts

  • “/thematic-map”

Requirements

  • Python 3

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. Inspect the map yourself
  2. Report to the user

What it can do on your machine

Read from SKILL.md and the folder at commit 6e3534f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (Python), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Thematic Map loads about 3.1k tokens when it runs, and up to ~21k if it reads all its reference files. Until then it costs about 91 tokens; SKILL.md has 1,404 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~21k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from zzhonglei/GeoCode-Release at commit 6e3534f, republished under its MIT licence (© zzhonglei). 1,404 words, ~3,131 tokens.

Download SKILL.mdSave it as .claude/skills/thematic-map/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.
name
thematic-map
description
Create well-designed maps that follow standard cartographic conventions. Use this skill when you need to create a map. If the map requires GIS or remote sensing data processing, complete all data preparation and processing steps BEFORE reading this skill. Only read this skill when the data is fully ready and you are about to begin composing the map.

Thematic Map Creation Skill

This document is GeoCode's official cartographic specification for thematic mapping. As a GeoAgent, you MUST strictly follow every instruction in this document when producing any thematic map — no step may be skipped, abridged, or substituted with your own judgment.

You cannot directly operate the QGIS graphical interface; all thematic maps must therefore be produced through Python code.

Runtime Environment and Dependencies

Before mapping, confirm whether the following dependencies are installed in the user's Python environment. Do not install any library without asking the user first — clarify their environment setup before deciding on the installation approach.

LibraryPurposeRequired
CartopyMap projections and geographic featuresYes
MatplotlibPlotting and visualizationYes
frykit[data]Graticules, scale bars, north arrows, and other mapping utilitiesYes
GeoPandasReading and processing vector data (.shp / .geojson / etc.)Yes
rioxarrayReading and processing raster data (.tif / GeoTIFF)Yes
mapclassifyData classification (Jenks Natural Breaks) for choropleths / categorical dataOptional
cmcrameriPerceptually-uniform, colorblind-friendly scientific colormapsOptional
palettableColorBrewer and other ready-made color palettesOptional

The three Optional libraries are only needed when a reference explicitly calls for them (data classification, colormap / palette choices) — install them on demand, not upfront.

Producing a Thematic Map

This chapter walks you step by step through producing a high-quality, standards-compliant thematic map in Python. A thematic map combines several visual elements: a geographic frame (projection, extent, graticules), a data layer carrying the analytical content, context layers (boundaries, basemaps), and decorative elements (titles, legends, scale bars, north arrows).

How to Work Through This Document

One element at a time: read its reference, write its code, then move to the next. NEVER read all references up front. NEVER write the whole script in one pass.

Reading everything first floods your context and leads to a rushed, broken script. Read a bit, write a bit.

Run the script only once, after all the code is written — do NOT render the figure to check it after every element.

Commenting Conventions

The user reads, runs, and modifies every script you write — and well-placed comments are what make the script actually adjustable. Follow these commenting conventions in every script you produce.

  • Annotate every adjustable map element parameter (title, legend, scale bar, colorbar, etc.) so the user knows exactly where to tweak the appearance.
  • Comment the purpose of each major step in the script — what it does and why.

China Base Map (whole-China shortcut)

If the study area is the whole of China, do not build the frame by hand. The china_base module renders a standards-compliant China base map — national boundary, nine-dash line, province boundaries, coastline, maritime gradient, and a South China Sea inset — in one call, and returns a normal fig, ax.

For a whole-China map: read references/china-base-map.md and use create_china_map(...) in place of the next four sections (Establishing the Geographic Frame, Adding the Map Frame, Adding a Basemap, Adding the Study Area Boundary) — they are all handled for you. Then continue from Adding the Data Layers (overlay your data via draw_china) and finish as usual.

For any sub-national or non-China extent, ignore this and follow the general workflow below.

Establishing the Geographic Frame

Every map starts with two decisions: what region it shows (the extent) and how that region is projected onto the page. Make both before drawing anything else — the rest of the map hinges on them.

  1. Find the data's lat/lon range. Use the ReadGeoData tool to read the input file's bounds.
  2. Set the map extent — slightly larger than the data's lat/lon range, leaving a small margin on each side.
  3. Choose a projection that suits the extent and your cartographic purpose. The wrong choice silently distorts distances, areas, or angles, so think this one through. If you know which projection you want but aren't sure how to construct it in Cartopy, look it up in references/cartopy-projection.md.

Every thematic map script opens with this scaffold — set the lon/lat bounds and projection parameters to match your map.

python
import sys
sys.dont_write_bytecode = True  # keep the folder clean — don't generate __pycache__ / .pyc files

import cartopy.crs as ccrs
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = ["Times New Roman", "SimSun", "Songti SC", "Noto Serif CJK SC"]  # default fonts: English + Chinese serif fallbacks
plt.rcParams["axes.unicode_minus"] = False

lon_min, lon_max, lat_min, lat_max = 73.5, 135.1, 18.1, 53.6  # data's lon/lat bounds from ReadGeoData — replace with your own
lon_pad, lat_pad = (lon_max - lon_min) * 0.10, (lat_max - lat_min) * 0.10  # pad each side by 10% so data isn't pressed against the frame
extent = [lon_min - lon_pad, lon_max + lon_pad, lat_min - lat_pad, lat_max + lat_pad]

map_proj = ccrs.AlbersEqualArea(central_longitude=110, standard_parallels=(25, 47))  # pick a projected CRS that suits your map's region and purpose

fig, ax = plt.subplots(figsize=(10, 8), dpi=800, subplot_kw={"projection": map_proj})  # create the figure with the chosen projection
ax.set_extent(extent, crs=ccrs.PlateCarree())
ax.set_title("Map Title", fontsize=16, fontweight="bold", pad=12)

Reading Geographic Data

After the geographic frame is set, load the vector and raster data needed for this map using these two libraries.

python
import geopandas as gpd
import rioxarray as rxr

gdf = gpd.read_file("path/to/your.shp")                  # vector (.shp / .geojson / .gpkg)
da = rxr.open_rasterio("path/to/your.tif", masked=True).squeeze()  # raster (.tif / GeoTIFF); masked=True → nodata becomes NaN, squeeze() drops the single-band axis

Adding the Map Frame

After the geographic frame is set up, the next layer on the canvas is the map's frame — ticks, graticules, and (optionally) decorative edges that give spatial reference and a polished look.

Work through these elements:

  1. Add latitude/longitude ticks and labels along the axes.
  2. (Optional) Add graticules as light gridlines inside the map.
  3. (Optional) Apply a GMT-style checkerboard frame for the map edges.

Required reading: read references/ticks-and-graticules.md in full before writing any code for this section. It covers the API choices, parameter recommendations, and common pitfalls for all three elements above.

Adding a Basemap (Optional)

A basemap is mainly decorative — it adds land, oceans, terrain, or satellite texture behind the data. Most thematic maps don't need one; add one only when the visual context genuinely helps.

If you add a basemap: read references/basemap.md — it covers the two one-call helpers, add_basemap (raster tiles: ocean / imagery / relief) and add_vector_basemap (a clean Natural Earth vector backdrop), and how to choose between them.

Show full SKILL.md (562 more words)Show less

Adding the Study Area Boundary

Most thematic maps need to mark the boundary of the study area — it tells the reader exactly which region the map analyzes.

Required reading: read references/study-area-boundary.md in full before writing any code for this section. It covers the recommended methods, key parameters, and common pitfalls.

Adding the Scale Bar and North Arrow

Scale bars and north arrows tell the reader two essential things — the map's distance scale and its orientation. Most thematic maps include both, usually placed together in a free corner of the map.

Required reading: read references/scale-bar-and-north-arrow.md in full before writing any code for this section. It covers the available styles and the corresponding code.

Adding the Data Layers

The data layers carry the analytical content of the map. Thematic maps draw from two kinds of source data: raster (gridded fields like DEM, temperature, NDVI, classified rasters) and vector (points, lines, polygons from .shp / .geojson files).

For raster layers: read references/raster-data.md in full before writing any code. It covers the rendering pipeline, colormap decisions for continuous data, and classification + class-color choices for categorical data.

For vector layers: read references/vector-data.md in full before writing any code. It covers filling polygons by attribute value or category, the classification and class-color choices, and how to label polygons by name.

Adding the Legend (Optional)

A legend lets readers decode the visual symbols used on the map — point markers, line styles, polygon fills, gradient color bars, and section labels. Not every map needs a legend, and even when one is included, only the data layers the user wants to highlight need their own entry (decorative basemaps, scale bars, and north arrows are usually omitted).

Before adding a legend, confirm with the user:

  1. Is a legend needed for this map?
  2. If yes, which visual features should appear as entries?

If you add a legend: read references/legend.md — it covers the helper functions, how to draw each kind of legend element, and how to assemble and place the panel on the map.

Adding Map Attribution (Optional)

Beyond the map's core elements, a thematic map often carries a line of supplementary information just below the frame — data source, cartographer, date, and the like. This is optional, and what it contains is entirely up to the user's needs; add it mainly when the map is a formal deliverable.

Place it at the lower-left, just below the map frame:

python
ax.text(0.0, -0.05,                                                    # lower-left, just below the frame; nudge y if it overlaps the tick labels
        "Data source: SRTM 30 m DEM  |  Map by GeoAgent  |  2026-05",  # adjust the content to the user's needs
        transform=ax.transAxes, ha="left", va="top",
        fontsize=8, color="0.5")                                       # small, light grey — present but unobtrusive

After the Map Is Drawn

Once the script runs and the figure is saved, finish with two steps.

1. Inspect the map yourself

Open the saved image and look at it. Check for obvious failures: garbled or overlapping text, a scale bar or north arrow off the canvas, data clipped by the frame, a colormap that hides the pattern, a legend covering the data. If you find a problem, fix the code and re-render — repeat until the map is clean.

(If you cannot see images, skip this step and say so when you report.)

2. Report to the user

Tell the user how you made the map — projection, extent, data layers, and which elements you added. Then give a tunable-parameter list so they can request changes:

  • North arrow — position (0.94, 0.86), size 20
  • Scale bar — position (0.75, 0.05), length 1000 km
  • Title — text "...", font size 16
  • ... (one line per adjustable element actually in the map)

End by inviting the user to adjust any of them.

© zzhonglei, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 14 other files (scripts, references) in contributions/thematic-map/skill of zzhonglei/GeoCode-Release.

  • SKILL.md
  • data/china_thematic_base_wgs84.gpkg
  • references/basemap.md
  • references/cartopy-projection.md
  • references/china-base-map.md
  • references/legend.md
  • references/raster-data.md
  • references/scale-bar-and-north-arrow.md
  • references/study-area-boundary.md
  • references/ticks-and-graticules.md
  • references/vector-data.md
  • scripts/basemap_helpers.py
  • scripts/china_base.py
  • scripts/legend_helpers.py
  • templates/china-terrain-map.md

Open the folder on GitHubat commit 6e3534f

Compare with similar skills

Thematic Map next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Thematic Map compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Thematic Map this skillzzhonglei/GeoCode-Release189—~3.1kAutomated safety check: PassMIT
Antv L7antvis/L74.1k—~1.4kAutomated safety check: PassMIT
Portaljs Add Geodatopian/portaljs2.4k1 repos~1.7kAutomated safety check: PassMIT
Rs Paper Pipelinethinson/RS-PaperClaw230—~319Automated safety check: PassMIT
Querying Indonesian Gov Datasuryast/indonesia-gov-apis172—~1.4kAutomated safety check: PassMIT
Remote Sensing Research Radarlimi124/remote-sensing-research-radar143—~1.3kAutomated safety check: PassNone

Similar skills

  • Antv L7

    antvis/L7

    Comprehensive guide for AntV L7 geospatial visualization library.

    4.1k GitHub stars~1.4k tokensUpdated 1 mo ago
    Data & AnalyticsAuto-check passed
  • Portaljs Add Geo

    datopian/portaljs

    Auto-ingest a geospatial file (GeoJSON, Shapefile, GeoPackage, KML/KMZ, FlatGeobuf, CSV-with-geometry) into a PortalJS portal on the user's own machine, with no server.

    2.4k GitHub starsUsed in 1 repo~1.7k tokens
    Data & AnalyticsAuto-check passed
  • Rs Paper Pipeline

    thinson/RS-PaperClaw

    A skill your agent uses when operating or maintaining the RS-PaperClaw pipeline that fetches remote-sensing arXiv papers, creates per-paper issues, builds daily digests, reconciles issue sets, and…

    230 GitHub stars~319 tokensUpdated yesterday
    Data & AnalyticsAuto-check passed
  • Querying Indonesian Gov Data

    suryast/indonesia-gov-apis

    Find and assess Indonesian public-data sources using a dated, evidence-backed catalog.

    172 GitHub stars~1.4k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Remote Sensing Research Radar

    limi124/remote-sensing-research-radar

    Track, retrieve, screen, and synthesize research frontiers for geospatial AI, remote sensing big data, and transferable computer vision methods.

    143 GitHub stars~1.3k tokensUpdated 5 mo ago
    Data & AnalyticsAuto-check passed
  • Live Weather Briefing Skill

    FrancyJGLisboa/agent-skills-platform

    Create a current, source-linked weather briefing for a named city using the Open-Meteo geocoding and forecast APIs.

    2.4k GitHub stars~599 tokensUpdated 25 days ago
    Data & AnalyticsAuto-check passed

More from zzhonglei/GeoCode-Release

  • XLSX

    zzhonglei/GeoCode-Release

    Create, edit, analyze, or convert Excel spreadsheets (.xlsx, .xlsm) where the workbook file is the primary deliverable.

    189 GitHub stars~3.1k tokensUpdated 7 days ago
    Auto-check passed
  • China Statistics Data

    zzhonglei/GeoCode-Release

    Find, download, and prepare official thematic statistics from the National Bureau of Statistics of China.

    189 GitHub stars~2.7k tokensUpdated 7 days ago
    Auto-check passed
  • Gee Scripting

    zzhonglei/GeoCode-Release

    GEE scripting and remote sensing analysis workflow guide. An agent skill from zzhonglei/GeoCode-Release.

    189 GitHub stars~1.6k tokensUpdated 7 days ago
    Auto-check passed
  • Projection Selection

    zzhonglei/GeoCode-Release

    Select an appropriate projected coordinate system for geographic data analysis or cartographic tasks.

    189 GitHub stars~4.1k tokensUpdated 7 days ago
    Auto-check passed
  • China Admin Boundaries

    zzhonglei/GeoCode-Release

    Official, standards-compliant vector boundaries of China's administrative divisions — province, city and county polygons.

    189 GitHub stars~434 tokensUpdated 7 days ago
    Auto-check passed
  • Hello Geocode

    zzhonglei/GeoCode-Release

    Sample skill verifying the GeoCode skill store pipeline end-to-end.

    189 GitHub stars~297 tokensUpdated 7 days ago
    Auto-check passed

Questions about Thematic Map

What does Thematic Map do?

Create well-designed maps that follow standard cartographic conventions. Thematic Map is an agent skill from zzhonglei/GeoCode-Release. Create well-designed maps that follow standard cartographic conventions.

When should I use Thematic Map?

Thematic Map fits situations like: you need to create a map; tasks that involve Geospatial analysis.

How do I install Thematic Map in Claude Code?

Run `npx skills add zzhonglei/GeoCode-Release --skill thematic-map -a claude-code`. Or copy the skill folder (contributions/thematic-map/skill in zzhonglei/GeoCode-Release) into .claude/skills/thematic-map in your project. Claude Code loads it when a task matches its description.

How do I install Thematic Map in Codex?

Run `npx skills add zzhonglei/GeoCode-Release --skill thematic-map -a codex`. Or copy the skill folder (contributions/thematic-map/skill in zzhonglei/GeoCode-Release) into .agents/skills/thematic-map in your project. Codex loads it when a task matches its description.

Can I use Thematic Map in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add zzhonglei/GeoCode-Release --skill thematic-map -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/thematic-map, .gemini/skills/thematic-map, .github/skills/thematic-map and .opencode/skills/thematic-map in your project.

What does Thematic Map need to run?

Going by SKILL.md and its folder, Thematic Map needs Python for the scripts in its folder. Our summary lists: Python 3.

Does Thematic Map access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Thematic Map safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Thematic Map use?

Thematic Map is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Thematic Map use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 18k tokens, read only when the agent opens those files.

What are the alternatives to Thematic Map?

Skills that share tags, products or a category with Thematic Map: Antv L7 (antvis/L7, 4.1k stars), Portaljs Add Geo (datopian/portaljs, 2.4k stars), Rs Paper Pipeline (thinson/RS-PaperClaw, 230 stars) and Querying Indonesian Gov Data (suryast/indonesia-gov-apis, 172 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Thematic Map?

zzhonglei (a GitHub user) maintains it in zzhonglei/GeoCode-Release, which has 189 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 4, 2026.

Source: zzhonglei/GeoCode-Release on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.