multiAI Summary Pending
GitMap Skill
Version control for ArcGIS web maps — exposed as native OpenClaw tools.
3,556 stars
byopenclaw
Installation
Claude Code / Cursor / Codex
$curl -o ~/.claude/skills/gitmap/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/14-tr/gitmap/SKILL.md"
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/gitmap/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How GitMap Skill Compares
| Feature / Agent | GitMap Skill | Standard Approach |
|---|---|---|
| Platform Support | multi | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Version control for ArcGIS web maps — exposed as native OpenClaw tools.
Which AI agents support this skill?
This skill is compatible with multi.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 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
```bash
pip install gitmap-core
```
### Configure Credentials
Set the following environment variables:
```bash
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
- `gitmap_list` — List available web maps from Portal (with optional filters)
- `gitmap_status` — Show working tree status for a local GitMap repo
- `gitmap_log` — View commit history for a repo
### Versioning
- `gitmap_commit` — Commit current map state with a message
- `gitmap_branch` — List or create branches in a repo
- `gitmap_diff` — Show changes between commits or branches
### Portal Sync
- `gitmap_push` — Push committed changes to ArcGIS Portal
- `gitmap_pull` — Pull latest map from ArcGIS Portal
---
## Tool Reference
### `gitmap_list`
Discover web maps in Portal.
```python
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`
Show repo status.
```python
gitmap_status(
cwd, # Path to GitMap repository (required)
)
```
### `gitmap_commit`
Commit current changes.
```python
gitmap_commit(
message, # Commit message (required)
cwd, # Path to GitMap repository (required)
author=None, # Override commit author
)
```
### `gitmap_branch`
List or create branches.
```python
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`
Show changes between versions.
```python
gitmap_diff(
cwd, # Path to GitMap repository (required)
branch=None, # Compare with this branch
commit=None, # Compare with this commit hash
)
```
### `gitmap_push`
Push changes to Portal.
```python
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`
Pull changes from Portal.
```python
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`
View commit history.
```python
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
```python
# 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
```python
# 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
```python
# 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
```python
# 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):
```bash
python server.py
```
Endpoints:
- `POST /tools/{tool_name}` — Call a tool with JSON body
- `GET /health` — Health check
---
## Installation
**Install command:**
```bash
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).
- **`gitmap list`** doesn't require a local repo — it queries Portal directly.
- **Output is raw CLI text** — parsed lightly for structured responses where possible.
NOT implement `clone`, `init`,- This skill does `merge`, `checkout`, `l`, or `setupsm`, `context-repos` — call the CLI directly for those.
---
## Related
- GitMap Project: https://github.com/14-TR/gitmap