Hermes
Core concepts

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

SkillUse it for
dataset-fetcherFind, fetch, cache, and reuse vector, raster, OSM, Census, STAC, and civic open data with source and license notes.
arcgis-rest-service-validatorInspect ArcGIS REST service/layer metadata, capabilities, schema, counts, paging, geometry, CRS, spatial query behavior, authority, and failure modes before implementation.
geospatial-data-qa-pipelineValidate CRS, geometry, fields, nulls, duplicates, joins, counts, topology, units, and spatial relationships with ArcGIS and open-source tools.

ArcGIS application workflows

SkillUse it for
arcgis-rest-to-product-appTurn approved ArcGIS REST layers into defensible, buyer-relevant web GIS applications.
esri-claude-code-app-builderOrchestrate ArcGIS Maps SDK and Experience Builder implementation through a coding agent, then build and verify the result.
esri-experience-builderPlan and scaffold ArcGIS Experience Builder apps and Developer Edition workflows.
experience-builder-widget-builderBuild Jimu React/TypeScript custom widgets with validated data sources, local build checks, and Builder handoff instructions.
gis-app-scaffoldDeclare the dataset, stack, interaction model, style direction, and QA plan before writing a GIS application.
nextjs-gis-web-app-stackBuild 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-builderTurn a map idea into a differentiated GIS product with clear users, decisions, information architecture, and a credible visual system.

Open-source mapping and publishing

SkillUse it for
open-source-gis-stack-builderDesign and build with MapLibre, OpenLayers, Leaflet, deck.gl, Turf, GeoPandas, Shapely, Rasterio, DuckDB, PostGIS, GDAL, and related tools.
static-vector-tile-product-appBuild static GIS product apps with MapLibre, PMTiles, Tippecanoe, GeoParquet/FlatGeobuf, and precomputed Vercel-friendly artifacts.
pgtileserv-publishPublish explicitly approved PostGIS tables or views through pg_tileserv or Martin and consume them in MapLibre/OpenLayers.
maplibre-from-stacBuild MapLibre applications around STAC/COG imagery such as Sentinel, Landsat, NDVI, heat, fire, flood, and environmental overlays.
feature-style-cookbookChoose and implement choropleth, graduated symbol, heatmap, dot-density, bivariate, categorical, and operational-priority cartography.
style-bundle-pickerSelect a coherent cartographic/product style while avoiding repetition across a portfolio.

Verification, spatial AI, and product delivery

SkillUse it for
gis-dashboard-dogfoodQA public GIS dashboards and spatial products through realistic user flows, map interactions, analytics, and responsive states.
eval-app-diversityDetect repetitive application silhouettes and interaction patterns before release.
spatial-ai-operations-consoleDesign controlled spatial question-answering with approved data, bounded SQL/REST operations, audit trails, maps, reports, and caveats.
client-ready-gis-offersTurn GIS work into clear client demos, case studies, productized service offers, and revenue-relevant artifacts.
gis-digital-productsPackage 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.md

Minimal 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']}")
PY

Team customization

For organization-specific schemas and procedures:

  1. Fork the repository.
  2. Add focused skills rather than editing unrelated general skills.
  3. Keep private service URLs and credentials out of Git.
  4. Review changes through pull requests.
  5. Run python3 scripts/validate.py before merging.
  6. 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.

On this page