🧪 Skills

Git-Map

Provides Git-like version control tools for ArcGIS web maps, enabling branch management, commits, diffs, and sync with ArcGIS Portal using the gitmap CLI.

v0.1.3
❤️ 0
⬇️ 435
👁 2
Share

Description

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

  • 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.

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.

gitmap_status(
    cwd,               # Path to GitMap repository (required)
)

gitmap_commit

Commit current changes.

gitmap_commit(
    message,           # Commit message (required)
    cwd,               # Path to GitMap repository (required)
    author=None,       # Override commit author
)

gitmap_branch

List 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

Show 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

Push 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

Pull 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

View 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:

  • POST /tools/{tool_name} — Call a tool with JSON body
  • GET /health — Health check

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).
  • 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

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs