arcade

Writes and fixes code for ArcGIS maps to calculate values, label features, and customize popups.

Installation
Run `npx skills add "https://github.com/valdesrosier/arcgis-skills" --skill "arcade"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: arcade
description: Author ArcGIS Arcade expressions for the correct profile and target version. Use when the user writes or debugs an Arcade expression for a popup, label, field calculation, or attribute rule, or asks which Arcade functions or globals are available.
---

# Arcade

Arcade is **profile-scoped** and **version-gated**: the same expression is valid in one profile and nonsense in another, and a function that exists at one Arcade version is absent in an earlier one. Resolve both before writing a line.

## Identify the profile first

Each profile exposes different globals and expects a different return type. Writing before the profile is known produces expressions that run in the author's head but fail in the app — a popup expression pasted into an attribute rule references globals that do not exist there.

- **Popup** — `$feature`, `$map`, `$datastore` and related globals; returns text or a dictionary for display.
- **Labeling** — returns the label string for each feature.
- **Field calculation** — returns the value written to the target field.
- **Attribute rules** (calculation, constraint, validation) — edit-context globals such as `$originalFeature`; each rule type expects a different return.

Confirm which profile the expression targets before authoring.

## Pin the Arcade version

Arcade's available functions are version-gated. The Arcade version is pinned by the ArcGIS Maps SDK for JavaScript version, which is pinned by the ArcGIS Enterprise release (or by ArcGIS Online). Resolve the target from the live Esri version matrix — <https://developers.arcgis.com/javascript/latest/version-matrix/> — rather than assuming "latest," which re-verifies against the current published mapping every time.

## Verify every global and function

Before shipping the expression, confirm through `arcgis-docs-lookup` that every global and every function it uses exists **in the target profile at the target Arcade version**. A function added in a later Arcade release silently breaks on an older Enterprise.

## Done when

The profile is identified, the return type matches that profile, and every global and function used is verified available at the target Arcade version.

Ships with 1 supporting file:

  • agents/openai.yaml

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us