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.
npx skills add Arize-ai/arize-skills --skill arize-link -a claude-codeWhat 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-code2Manually: put the files in place
~/.claude/skills/arize-link/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/arize-link/
1Skills CLI (Vercel)
npx skills add Arize-ai/arize-skills --skill arize-link -a codex2Manually: put the files in place
.agents/skills/arize-link/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Arize-ai/arize-skills --skill arize-link -a cursor2Manually: put the files in place
.cursor/skills/arize-link/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Arize-ai/arize-skills arize-link2Manually: put the files in place
.github/skills/arize-link/SKILL.md1Skills CLI (Vercel)
npx skills add Arize-ai/arize-skills --skill arize-link -a gemini-cli2Platform CLI
gemini skills install https://github.com/Arize-ai/arize-skills --path skills/arize-linkManually: put the files in place
.devin/skills/arize-link/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Arize-ai/arize-skills --skill arize-link -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
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.