skills/arize-admin/SKILL.md
Manages Arize users, organizations, spaces, projects, roles, role bindings, resource restrictions, and API keys via the ax CLI. Use for enterprise admin workflows: inviting and offboarding users, onboarding new teams, creating custom roles for SAML/SSO mappings, assigning roles to users, restricting project-level access, and managing service keys for multi-tenant architectures. Covers ax users, ax organizations, ax spaces, ax projects, ax roles, ax role-bindings, and ax api-keys.
npx skillsauth add arize-ai/arize-skills arize-adminInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Programmatic management of Arize users, organizations, spaces, roles, permissions, and API keys — the building blocks for enterprise access control.
Privilege requirement: Most operations require org-admin or account-admin privileges. If commands return
403 Forbidden, the authenticated profile lacks sufficient permissions.
Destructive-action rule: Commands that delete, remove, or irreversibly modify resources (
delete,remove-user,unrestrict) require explicit user confirmation before execution. When a user asks you to perform one of these operations:
- Summarize exactly what will happen (e.g., "This will delete user [email protected] and cascade-remove all their org/space memberships, API keys, and role bindings.")
- Ask the user to confirm (use
AskUserQuestion).- Only after the user confirms, run the command with
--forceto skip the CLI's interactive prompt.Never run a
--forcedeletion without confirming with the user first.
For multi-step workflows, collect all required information before running any ax commands. Use AskUserQuestion to avoid back-and-forth mid-workflow. Fetch live data first (e.g. org list) so you can present real options rather than asking the user to recall IDs.
ax organizations list -o json to get available org names.AskUserQuestion (single call, up to 4 questions) to gather:
Ask before running any commands:
ax users list --email)Ask before running any commands:
Ask before running any commands:
admin, member, or read-only (present as options)email_link (default), temporary_password, or noneadmin, member, read-only, annotator) are separate from custom RBAC roles used with ax role-bindings.Proceed directly — run the ax command you need. Do NOT check versions or profiles upfront.
If an ax command fails:
command not found or version error → see references/ax-setup.md401 Unauthorized / missing API key → run ax profiles show; follow references/ax-profiles.md403 Forbidden → the active profile lacks admin privileges; ask the user to authenticate with an admin key.env files or search the filesystem for credentials. Use ax profiles for Arize credentials. Never echo, log, or display raw API key values.OAuth login option (v0.18.0+): Users can authenticate via browser-based OAuth PKCE instead of API keys by running
ax auth login(thenax auth logoutto revoke). Inform users of this option if they ask about authentication alternatives — do not runax auth loginyourself, as it opens a browser interactively.
A user must exist in the account before they can be added to an org or space. Account-level roles: admin, member, annotator
ax users list # all users
ax users list --email "jane" # substring filter
ax users list --status active # active only
ax users list -l 100 -o json # paginate, get global IDs
ax users get USER_ID
ax users create \
--full-name "Jane Doe" \
--email [email protected] \
--role member \
--invite-mode email_link # or: none | temporary_password
ax users update USER_ID --full-name "Jane Smith"
ax users update USER_ID --is-developer # grant developer flag
ax users delete USER_ID --force # ⚠ confirm first — cascades: org/space memberships, API keys, role bindings
ax users resend-invitation USER_ID
ax users reset-password USER_ID
Organization roles: admin, member, read-only, annotator
ax organizations list
ax organizations list --name "platform"
ax organizations list -l 100 -o json
ax organizations get "Platform Team"
ax organizations create --name "Platform Team" --description "Core ML platform"
ax organizations update "Platform Team" --name "ML Platform" --description "Updated"
# Add user (must exist in account first)
ax organizations add-user "Platform Team" --user-id USER_ID --role member
# Remove user (also removes from all child spaces) — ⚠ confirm first
ax organizations remove-user "Platform Team" --user-id USER_ID --force
Space roles: admin, member, read-only, annotator
ax spaces list
ax spaces list --organization-id ORG_ID
ax spaces get "my-workspace"
# --organization-id required; get ORG_ID from ax organizations list -o json
ax spaces create --name "team-alpha" --organization-id ORG_ID
ax spaces update "team-alpha" --name "team-alpha-v2"
ax spaces delete "team-alpha" --force # ⚠ confirm first — irreversible; deletes all resources
# User must be an org member before being added to a space
ax spaces add-user "team-alpha" --user-id USER_ID --role member
ax spaces remove-user "team-alpha" --user-id USER_ID --force # ⚠ confirm first
Custom RBAC roles used with ax role-bindings. Separate from the simpler admin/member/read-only/annotator roles in org/space membership.
ax roles list # all roles
ax roles list --is-custom -o json # custom only — get stable IDs for SAML mappings
ax roles list --is-predefined
ax roles get "Data Scientist" # inspect permissions
# --permissions is comma-separated; fully replaces on update
ax roles create \
--name "Data Scientist" \
--permissions "PROJECT_READ,DATASET_CREATE,EXPERIMENT_CREATE" \
--description "Read traces, create datasets and experiments"
ax roles update "Data Scientist" --permissions "PROJECT_READ,DATASET_CREATE,EXPERIMENT_CREATE,EVALUATOR_CREATE"
ax roles delete "Data Scientist" --force # ⚠ confirm first — predefined roles cannot be deleted
Finding available permissions: Run ax roles get <predefined-role> -o json on a system role (e.g. Member, Admin) to see valid permission names.
Fine-grained assignment of a custom role to a user on a specific resource (space or project).
# Assign at space level
ax role-bindings create \
--user-id USER_GLOBAL_ID \
--role-id ROLE_GLOBAL_ID \
--resource-type SPACE \
--resource-id SPACE_GLOBAL_ID
# Assign at project level
ax role-bindings create \
--user-id USER_GLOBAL_ID \
--role-id ROLE_GLOBAL_ID \
--resource-type PROJECT \
--resource-id PROJECT_GLOBAL_ID
ax role-bindings get BINDING_ID
ax role-bindings update BINDING_ID --role-id NEW_ROLE_ID
ax role-bindings delete BINDING_ID --force # ⚠ confirm first
Idempotent — if a binding already exists for the user on that resource, exits without error.
Restricts a project so only users with an explicit role binding on that project can access it. Space/org-level roles are excluded.
ax resource-restrictions restrict --resource-id PROJECT_GLOBAL_ID # idempotent
ax resource-restrictions unrestrict --resource-id PROJECT_GLOBAL_ID --force # ⚠ confirm first
# Finding project IDs
ax projects list -l 100 -o json --space "my-workspace"
Scope:
ax api-keys listreturns only keys owned by the authenticated user. For org-wide auditing, use the Arize UI (Settings > API Keys).
ax api-keys list
ax api-keys list --key-type service --status active -o json
# User key — authenticates as creator, inherits their full permissions
ax api-keys create --name "CI pipeline" --expires-at "2027-01-01T00:00:00"
# Service key — space-scoped bot user (recommended for CI/CD pipelines)
ax api-keys create-service-key \
--name "team-alpha-traces" \
--space "team-alpha" \
--space-role member \
--expires-at "2027-01-01T00:00:00"
ax api-keys delete KEY_ID --force # ⚠ confirm first
# Zero-downtime rotation — revokes old key, issues new one with same scope
ax api-keys refresh KEY_ID
ax api-keys refresh KEY_ID --expires-at "2028-01-01T00:00:00"
The raw key is displayed once. Save it immediately in your secrets manager. It cannot be retrieved again.
create-service-key flags:
| Flag | Required | Description |
|------|----------|-------------|
| --name | yes | Key name |
| --space | yes | Space this service key is scoped to |
| --space-role | no | Role in the space: admin, member, read-only |
| --org-role | no | Role in the parent organization |
| --account-role | no | Role at account level |
| --expires-at | no | ISO 8601 expiry date |
| --description | no | Optional description |
Projects live inside spaces and contain traces, datasets, and experiments.
ax projects list --space SPACE
ax projects list --space SPACE --name "playground" # substring filter
ax projects list --space SPACE -l 100 -o json # get base64 IDs
ax projects get NAME_OR_ID --space SPACE
ax projects create --name "my-project" --space SPACE
ax projects delete NAME_OR_ID --space SPACE --force # ⚠ confirm first — deletes all traces and datasets
Note: Project IDs (base64 strings) are used by
ax spans export,ax traces export, andax resource-restrictions. If commands reject a project name, look up theidfield fromax projects list -o jsonand use that instead.
Step-by-step workflows (onboard a team, SAML/SSO mappings, project restriction, offboarding, multi-tenant keys) and a troubleshooting table are in references/REFERENCE.md.
data-ai
INVOKE THIS SKILL for Arize Prompt Hub and `ax prompts` workflows: author or import templates and save (Workflows A–B), label/promote (C), or list/get/edit/delete/duplicate (D). Use when the user mentions ax prompts, Prompt Hub, creating/editing/saving a prompt, `{variable}` placeholders, or production/staging labels. For improving prompt text using traces or eval scores, use arize-prompt-optimization. For running experiments, use arize-experiment.
tools
Downloads, exports, and inspects existing Arize traces and spans to understand what an LLM app is doing or debug runtime issues. Covers exporting traces by ID, spans by ID, sessions by ID, and root-cause investigation using the ax CLI. Use when the user wants to look at existing trace data, see what their LLM app is doing, export traces, download spans, investigate errors, or analyze behavior regressions.
tools
Optimizes, improves, and debugs LLM prompts using production trace data, evaluations, and annotations. Extracts prompts from spans, gathers performance signal, and runs a data-driven optimization loop using the ax CLI. Use when the user mentions optimize prompt, improve prompt, make AI respond better, improve output quality, prompt engineering, prompt tuning, or system prompt improvement.
development
Adds Arize AX tracing to an LLM application for the first time. Follows a two-phase agent-assisted flow to analyze the codebase then implement instrumentation after user confirmation. Use when the user wants to instrument their app, add tracing from scratch, set up LLM observability, integrate OpenTelemetry or openinference, or get started with Arize tracing.