Skills catalog
All 21 GIS workflow skills, what they do, and when Hermes should load them.
A Hermes skill is a directory containing a SKILL.md file with YAML
frontmatter and procedural Markdown. A skill may also include a references/
directory for detailed implementation patterns.
The Hermes GIS repository contains 21 skills and 116 supporting references. The skills are inspectable, versioned in Git, and loaded into context when their description matches the current task or when you explicitly select one.
Skills are not tools
Skills teach Hermes how to approach a workflow. They do not install QGIS, connect to ArcGIS, open a database, or grant credentials. Execution depends on the terminal, files, browser, MCP servers, APIs, and GIS software configured for the active profile.
Data discovery, validation, and QA
| Skill | Use it for |
|---|---|
dataset-fetcher | Find, fetch, cache, and reuse vector, raster, OSM, Census, STAC, and civic open data with source and license notes. |
arcgis-rest-service-validator | Inspect ArcGIS REST service/layer metadata, capabilities, schema, counts, paging, geometry, CRS, spatial query behavior, authority, and failure modes before implementation. |
geospatial-data-qa-pipeline | Validate CRS, geometry, fields, nulls, duplicates, joins, counts, topology, units, and spatial relationships with ArcGIS and open-source tools. |
ArcGIS application workflows
| Skill | Use it for |
|---|---|
arcgis-rest-to-product-app | Turn approved ArcGIS REST layers into defensible, buyer-relevant web GIS applications. |
esri-claude-code-app-builder | Orchestrate ArcGIS Maps SDK and Experience Builder implementation through a coding agent, then build and verify the result. |
esri-experience-builder | Plan and scaffold ArcGIS Experience Builder apps and Developer Edition workflows. |
experience-builder-widget-builder | Build Jimu React/TypeScript custom widgets with validated data sources, local build checks, and Builder handoff instructions. |
gis-app-scaffold | Declare the dataset, stack, interaction model, style direction, and QA plan before writing a GIS application. |
nextjs-gis-web-app-stack | Build multi-page GIS products with Next.js, React, TypeScript, MapLibre or ArcGIS Maps SDK, charts, route handlers, and Vercel-safe boundaries. |
premium-gis-product-app-builder | Turn a map idea into a differentiated GIS product with clear users, decisions, information architecture, and a credible visual system. |
Open-source mapping and publishing
| Skill | Use it for |
|---|---|
open-source-gis-stack-builder | Design and build with MapLibre, OpenLayers, Leaflet, deck.gl, Turf, GeoPandas, Shapely, Rasterio, DuckDB, PostGIS, GDAL, and related tools. |
static-vector-tile-product-app | Build static GIS product apps with MapLibre, PMTiles, Tippecanoe, GeoParquet/FlatGeobuf, and precomputed Vercel-friendly artifacts. |
pgtileserv-publish | Publish explicitly approved PostGIS tables or views through pg_tileserv or Martin and consume them in MapLibre/OpenLayers. |
maplibre-from-stac | Build MapLibre applications around STAC/COG imagery such as Sentinel, Landsat, NDVI, heat, fire, flood, and environmental overlays. |
feature-style-cookbook | Choose and implement choropleth, graduated symbol, heatmap, dot-density, bivariate, categorical, and operational-priority cartography. |
style-bundle-picker | Select a coherent cartographic/product style while avoiding repetition across a portfolio. |
Verification, spatial AI, and product delivery
| Skill | Use it for |
|---|---|
gis-dashboard-dogfood | QA public GIS dashboards and spatial products through realistic user flows, map interactions, analytics, and responsive states. |
eval-app-diversity | Detect repetitive application silhouettes and interaction patterns before release. |
spatial-ai-operations-console | Design controlled spatial question-answering with approved data, bounded SQL/REST operations, audit trails, maps, reports, and caveats. |
client-ready-gis-offers | Turn GIS work into clear client demos, case studies, productized service offers, and revenue-relevant artifacts. |
gis-digital-products | Package GIS and AI prompts, templates, code kits, playbooks, manuals, and workflow products with buyer onboarding and verification. |
Skill anatomy
A skill is a directory, not a single loose Markdown file:
~/.hermes/skills/gis/
└── arcgis-rest-service-validator/
├── SKILL.md
└── references/
├── agol-app-token-capability-probe.md
└── esri-hosted-view-spatial-query-hang.mdMinimal SKILL.md:
---
name: city-parcel-rules
description: Use when validating or querying the city's parcel layer, including authority, field semantics, spatial joins, and reporting caveats.
version: 1.0.0
author: GIS Team
license: MIT
---
# City parcel rules
## Inputs
- Approved parcel service URL
- Expected parcel identifier field
- Required spatial relationship and units
## Workflow
1. Inspect service and layer metadata.
2. Verify the identifier field, geometry type, CRS, and count.
3. Test one bounded query before paging the full dataset.
4. Report source, query/filter, count, timestamp, and limitations.
## Boundaries
- Read-only by default.
- Do not expose private owner data.
- Require approval before publishing or modifying hosted content.Loading a skill explicitly
hermes -s arcgis-rest-service-validator chat -q \
"Validate this public FeatureServer before I build against it: <URL>"Normally Hermes selects relevant skills from their descriptions. Explicit selection is useful for testing or when you want one workflow's quality bar to be unambiguous.
Repository catalog
The repository's catalog.json
records every skill's name, directory, description, version, author, license
status, and reference count.
python3 ~/.hermes/skills/gis/scripts/validate.py
python3 - <<'PY'
import json
from pathlib import Path
catalog = json.loads((Path.home()/'.hermes/skills/gis/catalog.json').read_text())
for skill in catalog['skills']:
print(f"{skill['name']}: {skill['description']}")
PYTeam customization
For organization-specific schemas and procedures:
- Fork the repository.
- Add focused skills rather than editing unrelated general skills.
- Keep private service URLs and credentials out of Git.
- Review changes through pull requests.
- Run
python3 scripts/validate.pybefore merging. - Start a new Hermes session after updating installed skills.
Do not put secrets or sensitive data in skills
Skills are durable context and may be versioned or shared. Store credentials in protected environment/configuration mechanisms, not Markdown, memory, examples, or Git history.