Skip to main content
skill CX Codex

arize-link · arize-ai — Claude Code skill: what it does, how to install

Generates deep links to projects, traces, sessions, and datasets in the Arize UI. Useful when sharing Arize resources from CLI logs or exported data.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Arize-ai/arize-skills --skill arize-link -a claude-code
Open on GitHub

What arize-link does

This skill creates clickable URLs for the Arize web interface. It handles projects, individual traces, spans, sessions, datasets, experiment comparisons, and labeling queues. To discover missing organization or project identifiers, it calls the ax CLI.

All path IDs must be base64-encoded. A raw numeric ID produces a valid-looking URL that fails with a 404 error. The skill also injects startA and endA timestamps so that traces outside the default seven-day window load correctly.

What it helps with

  • generate direct links to Arize traces and spans
  • compare multiple experiment runs in the Arize UI
  • discover organization and project IDs using the ax CLI
  • build shareable URLs for labeling queues and evaluators

Example prompts for the agent

  • Give me a link to this Arize trace and highlight the span
  • Generate an Arize URL to compare these two experiment IDs
  • Find our project ID via ax and open the session view

How to install arize-link

1Skills CLI (Vercel)

npx skills add Arize-ai/arize-skills --skill arize-link -a claude-code

2Manually: put the files in place

~/.claude/skills/arize-link/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/arize-link/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about arize-link

How to install arize-link in Claude Code?

Run npx skills add Arize-ai/arize-skills --skill arize-link -a claude-code.

What does the arize-link skill do?

It builds deep links to Arize UI resources like traces, spans, experiments, and datasets. It queries the ax CLI for missing IDs and calculates the required epoch time ranges.

Why does the generated Arize link return a 404 error?

Arize expects base64-encoded IDs in URL paths. Passing a raw numeric ID breaks routing, so you must encode it before creating the URL.

Source text

SKILL.md · MIT
---
name: arize-link
description: Generates deep links to the Arize UI for projects, traces, spans, sessions, datasets, experiments, labeling queues, evaluators, and annotation configs. Discovers organization and project IDs with the ax CLI and produces clickable URLs for sharing Arize resources with team members. Use when the user wants to link to or open a project, trace, span, session, dataset, experiment, evaluator, or annotation config in the Arize UI.
metadata:
  author: arize
  version: "1.0"
---

# Arize Link

Generate deep links to the Arize UI for projects, traces, spans, sessions, datasets, experiments, labeling queues, evaluators, and annotation configs.

## When to Use

- User wants a link to a project, trace, span, session, dataset, labeling queue, evaluator, or annotation config
- You have IDs from exported data or logs and need to link back to the UI
- User asks to "open" or "view" any of the above in Arize

## Required Inputs

Collect from the user, context (exported trace data or parsed URLs), or the `ax` CLI:

| Always required | Resource-specific |
|---|---|
| `org_id` (base64) | `project_id` + `trace_id` [+ `span_id`] — trace/span |
| `space_id` (base64) | `project_id` + `session_id` — session |
| | `dataset_id` — dataset |
| | `dataset_id` + `experiment_id` (one or more) — experiment or comparison |
| | `experiment_id` — experiment with no dataset |
| | `queue_id` — specific queue (omit for list) |
| | `evaluator_id` [+ `version`] — evaluator |

### Discover organization and project IDs

Prefer the CLI over asking the user for IDs that it can provide:

```bash
ax organizations list --output json
```

Use `.organizations[].id` for the organization ID. If more than one organization is returned, match the user-provided organization name or ask them to choose.

To discover a project ID, list projects in the relevant space:

```bash
ax projects list --space "{space_name_or_id}" --limit 100 --output json
```

Use the matching project's `id`; its `space_id` supplies the space ID required in the URL. The command accepts a space name or ID; if no space is known, run `ax projects list --limit 100 --output json` and select the matching project.

To discover experiment IDs, list the experiments on the dataset; each has an `id` and a `dataset_id`:

```bash
ax experiments list --dataset "{dataset_name_or_id}" --space "{space_name_or_id}" --output json
```

**All path IDs must be base64-encoded** (characters: `A-Za-z0-9+/=`). A raw numeric ID produces a valid-looking URL that 404s. If the user provides a number, ask them to copy the ID directly from their Arize browser URL (`https://app.arize.com/organizations/{org_id}/spaces/{space_id}/…`). If you have a raw internal ID (e.g. `Organization:1:abC1`), base64-encode it before inserting into the URL.

## URL Templates

Base URL: `https://app.arize.com` (override for on-prem)

**Project:**
```
{base_url}/organizations/{org_id}/spaces/{space_id}/projects/{project_id}
```

**Trace** (add `&selectedSpanId={span_id}` to highlight a specific span):
```
{base_url}/organizations/{org_id}/spaces/{space_id}/projects/{project_id}?selectedTraceId={trace_id}&queryFilterA=&selectedTab=llmTracing&timeZoneA=America%2FLos_Angeles&startA={start_ms}&endA={end_ms}&envA=tracing&modelType=generative_llm
```

**Session:**
```
{base_url}/organizations/{org_id}/spaces/{space_id}/projects/{project_id}?selectedSessionId={session_id}&queryFilterA=&selectedTab=llmTracing&timeZoneA=America%2FLos_Angeles&startA={start_ms}&endA={end_ms}&envA=tracing&modelType=generative_llm
```

**Dataset** (`selectedTab`: `examples` or `experiments`):
```
{base_url}/organizations/{org_id}/spaces/{space_id}/datasets/{dataset_id}?selectedTab=examples
```

**Experiment** (repeat `experimentId` to compare experiments side by side):
```
{base_url}/organizations/{org_id}/spaces/{space_id}/datasets/{dataset_id}/experiments/compare?experimentId={experiment_id}
{base_url}/organizations/{org_id}/spaces/{space_id}/datasets/{dataset_id}/experiments/compare?experimentId={experiment_id_a}&experimentId={experiment_id_b}
```

**Experiment with no dataset:**
```
{base_url}/organizations/{org_id}/spaces/{space_id}/experiments/{experiment_id}
```
URL-encode experiment IDs (`=` → `%3D`, `+` → `%2B`, `/` → `%2F`).

**Queue list / specific queue:**
```
{base_url}/organizations/{org_id}/spaces/{space_id}/queues
{base_url}/organizations/{org_id}/spaces/{space_id}/queues/{queue_id}
```

**Evaluator** (omit `?version=…` for latest):
```
{base_url}/organizations/{org_id}/spaces/{space_id}/evaluators/{evaluator_id}
{base_url}/organizations/{org_id}/spaces/{space_id}/evaluators/{evaluator_id}?version={version_url_encoded}
```
The `version` value must be URL-encoded (e.g., trailing `=` → `%3D`).

**Annotation configs:**
```
{base_url}/organizations/{org_id}/spaces/{space_id}/annotation-configs
```

## Time Range

CRITICAL: `startA` and `endA` (epoch milliseconds) are **required** for trace/span/session links — omitting them defaults to the last 7 days and will show "no recent data" if the trace falls outside that window.

**Priority order:**
1. **User-provided URL** — extract and reuse `startA`/`endA` directly.
2. **Span `start_time`** — pad ±1 day (or ±1 hour for a tighter window).
3. **Fallback** — last 90 days (`now - 90d` to `now`).

Prefer tight windows; 90-day windows load slowly.

## Instructions

1. Gather IDs from user, exported data, URL context, or the CLI. Use `ax organizations list --output json` to obtain `org_id`; use `ax projects list` to obtain `project_id` when needed.
2. Verify all path IDs are base64-encoded.
3. Determine `startA`/`endA` using the priority order above for trace, span, and session links.
4. Substitute into the appropriate template and present as a clickable markdown link.

## Troubleshooting

| Problem | Solution |
|---|---|
| "No data" / empty view | Trace outside time window — widen `startA`/`endA` (±1h → ±1d → 90d). |
| 404 | ID wrong or not base64. Re-check `org_id` with `ax organizations list --output json`, `project_id` with `ax projects list`, and `space_id` from the browser URL. |
| Span not highlighted | `span_id` may belong to a different trace. Verify against exported span data. |
| `org_id` unknown | Run `ax organizations list --output json` and use `.organizations[].id`. If the CLI cannot access the organization, ask the user to copy it from their Arize browser URL. |

## Related Skills

- **arize-trace**: Export spans to get `trace_id`, `span_id`, and `start_time`.

## Examples

See [references/EXAMPLES.md](references/EXAMPLES.md) for a complete set of concrete URLs for every link type.

© arize · MIT · Arize-ai/arize-skills

Similar skills

Everything for AI and ML →

arize-link by other authors comes first.

From the same set9

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor