install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/14-tr/gitmap" ~/.claude/skills/openclaw-skills-gitmap && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/14-tr/gitmap" ~/.openclaw/skills/openclaw-skills-gitmap && rm -rf "$T"
manifest:
skills/14-tr/gitmap/SKILL.mdsource content
GitMap Skill
Version control for ArcGIS web maps — exposed as native OpenClaw tools.
Overview
GitMap provides Git-like version control for ArcGIS Online and Enterprise Portal web maps. This skill wraps the
gitmap CLI as thin subprocess calls, exposing branch, commit, diff, push/pull, and map discovery as callable tools.
8 tools | Thin CLI wrapper | No local database | Requires:
gitmap-core Python package
Prerequisites
Install GitMap Core
pip install gitmap-core
Configure Credentials
Set the following environment variables:
export PORTAL_URL="https://your-org.maps.arcgis.com" export ARCGIS_USERNAME="your_username" export ARCGIS_PASSWORD="your_password"
Security Note: Prefer using scoped API tokens over plaintext passwords when possible.
Required environment variables
- PORTAL_URL: Your ArcGIS Portal or AGOL URL (e.g.,
)https://myorg.maps.arcgis.com - ARCGIS_USERNAME: Portal username
- ARCGIS_PASSWORD: Portal password (prefer scoped API tokens over plaintext passwords)
Tools
Discovery & Status
— List available web maps from Portal (with optional filters)gitmap_list
— Show working tree status for a local GitMap repogitmap_status
— View commit history for a repogitmap_log
Versioning
— Commit current map state with a messagegitmap_commit
— List or create branches in a repogitmap_branch
— Show changes between commits or branchesgitmap_diff
Portal Sync
— Push committed changes to ArcGIS Portalgitmap_push
— Pull latest map from ArcGIS Portalgitmap_pull
Tool Reference
gitmap_list
gitmap_listDiscover web maps in Portal.
gitmap_list( query=None, # Search query (e.g., "title:MyMap") owner=None, # Filter by owner username tag=None, # Filter by tag max_results=50, # Max results to return portal_url=None, # Portal URL (or use PORTAL_URL env var) username=None, # Portal username (or ARCGIS_USERNAME env var) password=None, # Portal password (or ARCGIS_PASSWORD env var) cwd=None, # Working directory (default: home) )
gitmap_status
gitmap_statusShow repo status.
gitmap_status( cwd, # Path to GitMap repository (required) )
gitmap_commit
gitmap_commitCommit current changes.
gitmap_commit( message, # Commit message (required) cwd, # Path to GitMap repository (required) author=None, # Override commit author )
gitmap_branch
gitmap_branchList or create branches.
gitmap_branch( cwd, # Path to GitMap repository (required) name=None, # Branch name to create (omit to list) delete=False, # Delete the named branch )
gitmap_diff
gitmap_diffShow changes between versions.
gitmap_diff( cwd, # Path to GitMap repository (required) branch=None, # Compare with this branch commit=None, # Compare with this commit hash )
gitmap_push
gitmap_pushPush changes to Portal.
gitmap_push( cwd, # Path to GitMap repository (required) branch=None, # Branch to push (default: current) portal_url=None, # Portal URL username=None, # Portal username password=None, # Portal password )
gitmap_pull
gitmap_pullPull changes from Portal.
gitmap_pull( cwd, # Path to GitMap repository (required) branch=None, # Branch to pull (default: current) portal_url=None, # Portal URL username=None, # Portal username password=None, # Portal password )
gitmap_log
gitmap_logView commit history.
gitmap_log( cwd, # Path to GitMap repository (required) branch=None, # Branch to show log for limit=None, # Max commits to show )
Usage Examples
Discover Maps and Clone
# Find maps owned by a user gitmap_list(owner="john.doe", max_results=20) # → returns table of maps with item IDs # Then clone manually: # cd ~/maps && gitmap clone <item_id>
Typical Edit → Commit → Push Loop
# Check what changed gitmap_status(cwd="~/maps/MyWebMap") # Commit changes gitmap_commit(message="Updated layer symbology", cwd="~/maps/MyWebMap") # Push to Portal gitmap_push(cwd="~/maps/MyWebMap")
Feature Branch Workflow
# List branches gitmap_branch(cwd="~/maps/MyWebMap") # Create a feature branch gitmap_branch(name="feature/new-basemap", cwd="~/maps/MyWebMap") # After editing, commit and push feature branch gitmap_commit(message="Added satellite basemap", cwd="~/maps/MyWebMap") gitmap_push(cwd="~/maps/MyWebMap", branch="feature/new-basemap")
Review History
# Recent commits gitmap_log(cwd="~/maps/MyWebMap", limit=10) # What changed since main? gitmap_diff(cwd="~/maps/MyWebMap", branch="main")
Server
HTTP server at
localhost:7400 (when running):
python server.py
Endpoints:
— Call a tool with JSON bodyPOST /tools/{tool_name}
— Health checkGET /health
Installation
Install command:
pip install gitmap-core
The skill uses the
gitmap_core Python package directly for API access.
Notes & Known Limitations
- Working directory is required for most commands — GitMap repos are directory-based like Git.
- Portal credentials can be passed per-call or via environment variables (PORTAL_URL, ARCGIS_USERNAME, ARCGIS_PASSWORD).
doesn't require a local repo — it queries Portal directly.gitmap list- Output is raw CLI text — parsed lightly for structured responses where possible.
NOT implement
,clone
,- This skill doesinit
,merge
,checkout
, orl
,setupsm
— call the CLI directly for those.context-repos
Related
- GitMap Project: https://github.com/14-TR/gitmap