[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-arize-arize-span-routing":3,"mdc--hsri74-key":46,"related-org-arize-arize-span-routing":1017,"related-repo-arize-arize-span-routing":1184},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":41,"sourceUrl":44,"mdContent":45},"arize-span-routing","route OpenTelemetry spans to Arize","Use when one Python service must send each agent's, tenant's, team's, or request's spans to its correct Arize space and project using application metadata. Covers dynamic OpenTelemetry routing for custom agent builders and multi-tenant applications, including register_with_routing, set_routing_context, multi-space tracing, and custom span routing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"arize","Arize AI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Farize.jpg","Arize-ai",[13,17,20,23],{"name":14,"slug":15,"type":16},"Tracing","tracing","tag",{"name":18,"slug":19,"type":16},"Observability","observability",{"name":21,"slug":22,"type":16},"OpenTelemetry","opentelemetry",{"name":24,"slug":25,"type":16},"Python","python",38,"https:\u002F\u002Fgithub.com\u002FArize-ai\u002Farize-skills","2026-07-25T05:56:28.16608",null,5,[32,33,34,8,35,36,37,38,39,40,15],"agent-skills","ai-agents","ai-observability","claude-code","codex","cursor","datasets","experiments","llmops",{"repoUrl":27,"stars":26,"forks":30,"topics":42,"description":43},[32,33,34,8,35,36,37,38,39,40,15],"Agent skills for Arize — datasets, experiments, and traces via the ax CLI","https:\u002F\u002Fgithub.com\u002FArize-ai\u002Farize-skills\u002Ftree\u002FHEAD\u002Fskills\u002Farize-span-routing","---\nname: arize-span-routing\ndescription: Use when one Python service must send each agent's, tenant's, team's, or request's spans to its correct Arize space and project using application metadata. Covers dynamic OpenTelemetry routing for custom agent builders and multi-tenant applications, including register_with_routing, set_routing_context, multi-space tracing, and custom span routing.\nmetadata:\n  author: arize\n  version: \"1.0\"\ncompatibility: Requires Python, arize-otel 0.11.0 or newer, and one Arize API key authorized for every destination space.\n---\n\n# Arize Span Routing Skill\n\nUse this skill to send each traced operation from one Python service to its correct Arize space and project. Each operation must resolve to exactly one `space_id` and `project_name` before its first span starts.\n\nDo not use this skill for ordinary single-project tracing; use `arize-instrumentation`. This skill does not reroute spans after export, backfill historical spans, create Arize spaces\u002Fprojects, or invent a customer-specific metadata mapping.\n\n## Safety rules\n\n- Never guess a destination or silently use another tenant's destination.\n- Never embed API keys in code or ask users to paste keys into chat. Read `ARIZE_API_KEY` from the environment.\n- Preserve existing non-Arize exporters and processors. Remove or replace a fixed-destination Arize export path so routed spans are not also copied to that destination.\n- Missing, invalid, or unavailable routing metadata must leave the business operation running but its spans unexported to Arize. Run that operation under a fresh OpenTelemetry context so stale routing values cannot leak across tenants. Log a warning without including secrets or sensitive metadata values.\n- Use one API key that is authorized for every destination space. Stop and report a credential blocker if that is not true.\n\n## Phase 1: Inspect and define the contract\n\nRead only until the routing contract is clear.\n\n1. Identify the exact Python service and entrypoint to change.\n2. Find current tracing initialization, provider\u002Fexporters, instrumentors, and client creation order.\n3. Find the request or agent-execution boundary that owns destination metadata.\n4. Identify the stable metadata field(s) and existing source of truth that resolve to:\n   - Arize `space_id`\n   - Arize `project_name`\n5. Check async tasks, thread pools, queues, or background workers that may outlive the request context.\n6. Find the app's test command and existing test style.\n\nInspect only the target app's configuration. Do not search unrelated repositories, sibling services, shell startup files, or arbitrary `.env` files for credentials.\n\nIf service scope, metadata fields, mapping source, or destination behavior is ambiguous, stop and ask the minimum question needed. Do not install packages or edit code first. If the user requested implementation and all four are clear, summarize the contract briefly and continue.\n\n## Phase 2: Implement\n\n### 1. Ensure routing support exists\n\nUse the project's package manager to require `arize-otel>=0.11.0`. Do not change unrelated dependencies.\n\n### 2. Initialize routing once\n\nFor an app without an existing OpenTelemetry provider, initialize routing before instrumentors and LLM clients:\n\n```python\nimport os\n\nfrom arize.otel import register_with_routing\n\ntracer_provider = register_with_routing(\n    api_key=os.environ[\"ARIZE_API_KEY\"],\n)\n```\n\nIf the app already owns a provider with non-Arize telemetry, keep it and add the routing processor:\n\n```python\nimport os\n\nfrom arize.otel import ArizeRoutingSpanProcessor, Endpoint, Transport\n\ntracer_provider.add_span_processor(\n    ArizeRoutingSpanProcessor(\n        api_key=os.environ[\"ARIZE_API_KEY\"],\n        endpoint=Endpoint.ARIZE,\n        transport=Transport.GRPC,\n    )\n)\n```\n\nReuse the app's configured endpoint and transport when present. Never call `register_with_routing` after another global provider has already been installed. If the provider also has a fixed Arize processor\u002Fexporter, remove that fixed path in its initialization before adding routing; OpenTelemetry processors cannot be safely removed after startup.\n\n### 3. Resolve one routing target\n\nAdapt the app's existing metadata model; do not introduce a framework for one lookup. The resolver must return both non-empty values or no target. Keep mapping data in its existing source of truth rather than duplicating it in tracing code.\n\n```python\nfrom dataclasses import dataclass\n\n\n@dataclass(frozen=True)\nclass RoutingTarget:\n    space_id: str\n    project_name: str\n```\n\nUse this type only when the codebase lacks an equivalent. Validate the result before any traced work begins.\n\n### 4. Set context around the complete operation\n\nEnter routing context at the highest boundary that has the metadata and encloses every child span:\n\nReplace `RoutingLookupError` below with the resolver's specific existing lookup\u002Fconfiguration exception.\n\n```python\nfrom opentelemetry import context as context_api\nfrom arize.otel import set_routing_context\n\n\ndef run_without_arize_routing(request):\n    token = context_api.attach(context_api.Context())\n    try:\n        return run_agent(request)\n    finally:\n        context_api.detach(token)\n\n\ndef handle_agent_request(request):\n    try:\n        target = resolve_routing_target(request.agent_metadata)\n    except RoutingLookupError:\n        logger.warning(\"Arize routing lookup failed; spans will not be exported\")\n        return run_without_arize_routing(request)\n\n    if target is None or not target.space_id or not target.project_name:\n        logger.warning(\"No Arize routing target; spans will not be exported\")\n        return run_without_arize_routing(request)\n\n    with set_routing_context(\n        space_id=target.space_id,\n        project_name=target.project_name,\n    ):\n        return run_agent(request)\n```\n\nCatch only the resolver's expected lookup\u002Fconfiguration exceptions; do not hide unrelated application failures. A fresh context on the no-target path intentionally prevents inherited routing values from reaching Arize. It may start a new trace for other exporters; tenant isolation takes priority. If preserving the distributed parent is mandatory, report the missing public routing-clear API as an SDK follow-up rather than using private context keys.\n\nAll auto-instrumented and manual child spans created inside the routing context inherit `arize.space_id` and `arize.project.name`. Do not set routing after spans have started.\n\nFor background work, propagate the OpenTelemetry context explicitly or resolve and enter a new routing context in the worker. Never rely on request-local context after a queue or thread boundary.\n\nSee `references\u002FREFERENCE.md` for agent experiment endpoints, existing-provider details, concurrency rules, testing, verification, and troubleshooting.\n\n## Verification\n\n1. Run focused unit tests for the resolver and execution boundary.\n2. Prove two different metadata values produce two different space\u002Fproject pairs.\n3. Prove child spans inherit the selected pair.\n4. Prove concurrent operations cannot leak routing context.\n5. Prove unknown metadata and resolver failures clear inherited routing, export no spans to any fallback destination, and leave business logic running.\n6. Prove pre-existing non-Arize exporters\u002Fprocessors remain attached and no fixed Arize path remains.\n7. Trigger one uniquely named trace per target in non-production spaces.\n8. Use `arize-trace` with the same credential context to confirm each trace exists only in its intended destination.\n\nFor short-lived scripts, call `force_flush()` and `shutdown()` before exit. Finish as **confirmed**, **confirmed with warnings**, or a precise blocker; never report completion from unit tests alone when live verification was requested.\n\n## Guardrails and limits\n\n- Both routing values are required. Spans missing either value are skipped.\n- `ArizeRoutingSpanProcessor` creates and caches one processor per unique space. Flag unbounded or high-cardinality space IDs before implementation.\n- Routing selects spaces and projects only; other customer metadata still belongs in normal OpenInference attributes.\n- If dogfooding exposes a missing `arize-otel` capability, stop and propose a separate SDK change instead of adding a compatibility hack.\n\n## Related skills\n\n- `arize-instrumentation`: first-time or single-destination tracing\n- `arize-trace`: post-export verification and debugging\n- `arize-admin`: inspect or manage authorized spaces and API keys\n",{"data":47,"body":51},{"name":4,"description":6,"metadata":48,"compatibility":50},{"author":8,"version":49},"1.0","Requires Python, arize-otel 0.11.0 or newer, and one Arize API key authorized for every destination space.",{"type":52,"children":53},"root",[54,63,86,99,106,144,150,155,211,224,229,235,242,255,261,266,340,345,440,453,459,464,525,530,536,541,554,793,798,818,823,836,842,893,928,934,971,977,1011],{"type":55,"tag":56,"props":57,"children":59},"element","h1",{"id":58},"arize-span-routing-skill",[60],{"type":61,"value":62},"text","Arize Span Routing Skill",{"type":55,"tag":64,"props":65,"children":66},"p",{},[67,69,76,78,84],{"type":61,"value":68},"Use this skill to send each traced operation from one Python service to its correct Arize space and project. Each operation must resolve to exactly one ",{"type":55,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":61,"value":75},"space_id",{"type":61,"value":77}," and ",{"type":55,"tag":70,"props":79,"children":81},{"className":80},[],[82],{"type":61,"value":83},"project_name",{"type":61,"value":85}," before its first span starts.",{"type":55,"tag":64,"props":87,"children":88},{},[89,91,97],{"type":61,"value":90},"Do not use this skill for ordinary single-project tracing; use ",{"type":55,"tag":70,"props":92,"children":94},{"className":93},[],[95],{"type":61,"value":96},"arize-instrumentation",{"type":61,"value":98},". This skill does not reroute spans after export, backfill historical spans, create Arize spaces\u002Fprojects, or invent a customer-specific metadata mapping.",{"type":55,"tag":100,"props":101,"children":103},"h2",{"id":102},"safety-rules",[104],{"type":61,"value":105},"Safety rules",{"type":55,"tag":107,"props":108,"children":109},"ul",{},[110,116,129,134,139],{"type":55,"tag":111,"props":112,"children":113},"li",{},[114],{"type":61,"value":115},"Never guess a destination or silently use another tenant's destination.",{"type":55,"tag":111,"props":117,"children":118},{},[119,121,127],{"type":61,"value":120},"Never embed API keys in code or ask users to paste keys into chat. Read ",{"type":55,"tag":70,"props":122,"children":124},{"className":123},[],[125],{"type":61,"value":126},"ARIZE_API_KEY",{"type":61,"value":128}," from the environment.",{"type":55,"tag":111,"props":130,"children":131},{},[132],{"type":61,"value":133},"Preserve existing non-Arize exporters and processors. Remove or replace a fixed-destination Arize export path so routed spans are not also copied to that destination.",{"type":55,"tag":111,"props":135,"children":136},{},[137],{"type":61,"value":138},"Missing, invalid, or unavailable routing metadata must leave the business operation running but its spans unexported to Arize. Run that operation under a fresh OpenTelemetry context so stale routing values cannot leak across tenants. Log a warning without including secrets or sensitive metadata values.",{"type":55,"tag":111,"props":140,"children":141},{},[142],{"type":61,"value":143},"Use one API key that is authorized for every destination space. Stop and report a credential blocker if that is not true.",{"type":55,"tag":100,"props":145,"children":147},{"id":146},"phase-1-inspect-and-define-the-contract",[148],{"type":61,"value":149},"Phase 1: Inspect and define the contract",{"type":55,"tag":64,"props":151,"children":152},{},[153],{"type":61,"value":154},"Read only until the routing contract is clear.",{"type":55,"tag":156,"props":157,"children":158},"ol",{},[159,164,169,174,201,206],{"type":55,"tag":111,"props":160,"children":161},{},[162],{"type":61,"value":163},"Identify the exact Python service and entrypoint to change.",{"type":55,"tag":111,"props":165,"children":166},{},[167],{"type":61,"value":168},"Find current tracing initialization, provider\u002Fexporters, instrumentors, and client creation order.",{"type":55,"tag":111,"props":170,"children":171},{},[172],{"type":61,"value":173},"Find the request or agent-execution boundary that owns destination metadata.",{"type":55,"tag":111,"props":175,"children":176},{},[177,179],{"type":61,"value":178},"Identify the stable metadata field(s) and existing source of truth that resolve to:\n",{"type":55,"tag":107,"props":180,"children":181},{},[182,192],{"type":55,"tag":111,"props":183,"children":184},{},[185,187],{"type":61,"value":186},"Arize ",{"type":55,"tag":70,"props":188,"children":190},{"className":189},[],[191],{"type":61,"value":75},{"type":55,"tag":111,"props":193,"children":194},{},[195,196],{"type":61,"value":186},{"type":55,"tag":70,"props":197,"children":199},{"className":198},[],[200],{"type":61,"value":83},{"type":55,"tag":111,"props":202,"children":203},{},[204],{"type":61,"value":205},"Check async tasks, thread pools, queues, or background workers that may outlive the request context.",{"type":55,"tag":111,"props":207,"children":208},{},[209],{"type":61,"value":210},"Find the app's test command and existing test style.",{"type":55,"tag":64,"props":212,"children":213},{},[214,216,222],{"type":61,"value":215},"Inspect only the target app's configuration. Do not search unrelated repositories, sibling services, shell startup files, or arbitrary ",{"type":55,"tag":70,"props":217,"children":219},{"className":218},[],[220],{"type":61,"value":221},".env",{"type":61,"value":223}," files for credentials.",{"type":55,"tag":64,"props":225,"children":226},{},[227],{"type":61,"value":228},"If service scope, metadata fields, mapping source, or destination behavior is ambiguous, stop and ask the minimum question needed. Do not install packages or edit code first. If the user requested implementation and all four are clear, summarize the contract briefly and continue.",{"type":55,"tag":100,"props":230,"children":232},{"id":231},"phase-2-implement",[233],{"type":61,"value":234},"Phase 2: Implement",{"type":55,"tag":236,"props":237,"children":239},"h3",{"id":238},"_1-ensure-routing-support-exists",[240],{"type":61,"value":241},"1. Ensure routing support exists",{"type":55,"tag":64,"props":243,"children":244},{},[245,247,253],{"type":61,"value":246},"Use the project's package manager to require ",{"type":55,"tag":70,"props":248,"children":250},{"className":249},[],[251],{"type":61,"value":252},"arize-otel>=0.11.0",{"type":61,"value":254},". Do not change unrelated dependencies.",{"type":55,"tag":236,"props":256,"children":258},{"id":257},"_2-initialize-routing-once",[259],{"type":61,"value":260},"2. Initialize routing once",{"type":55,"tag":64,"props":262,"children":263},{},[264],{"type":61,"value":265},"For an app without an existing OpenTelemetry provider, initialize routing before instrumentors and LLM clients:",{"type":55,"tag":267,"props":268,"children":272},"pre",{"className":269,"code":270,"language":25,"meta":271,"style":271},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import os\n\nfrom arize.otel import register_with_routing\n\ntracer_provider = register_with_routing(\n    api_key=os.environ[\"ARIZE_API_KEY\"],\n)\n","",[273],{"type":55,"tag":70,"props":274,"children":275},{"__ignoreMap":271},[276,287,297,306,314,322,331],{"type":55,"tag":277,"props":278,"children":281},"span",{"class":279,"line":280},"line",1,[282],{"type":55,"tag":277,"props":283,"children":284},{},[285],{"type":61,"value":286},"import os\n",{"type":55,"tag":277,"props":288,"children":290},{"class":279,"line":289},2,[291],{"type":55,"tag":277,"props":292,"children":294},{"emptyLinePlaceholder":293},true,[295],{"type":61,"value":296},"\n",{"type":55,"tag":277,"props":298,"children":300},{"class":279,"line":299},3,[301],{"type":55,"tag":277,"props":302,"children":303},{},[304],{"type":61,"value":305},"from arize.otel import register_with_routing\n",{"type":55,"tag":277,"props":307,"children":309},{"class":279,"line":308},4,[310],{"type":55,"tag":277,"props":311,"children":312},{"emptyLinePlaceholder":293},[313],{"type":61,"value":296},{"type":55,"tag":277,"props":315,"children":316},{"class":279,"line":30},[317],{"type":55,"tag":277,"props":318,"children":319},{},[320],{"type":61,"value":321},"tracer_provider = register_with_routing(\n",{"type":55,"tag":277,"props":323,"children":325},{"class":279,"line":324},6,[326],{"type":55,"tag":277,"props":327,"children":328},{},[329],{"type":61,"value":330},"    api_key=os.environ[\"ARIZE_API_KEY\"],\n",{"type":55,"tag":277,"props":332,"children":334},{"class":279,"line":333},7,[335],{"type":55,"tag":277,"props":336,"children":337},{},[338],{"type":61,"value":339},")\n",{"type":55,"tag":64,"props":341,"children":342},{},[343],{"type":61,"value":344},"If the app already owns a provider with non-Arize telemetry, keep it and add the routing processor:",{"type":55,"tag":267,"props":346,"children":348},{"className":269,"code":347,"language":25,"meta":271,"style":271},"import os\n\nfrom arize.otel import ArizeRoutingSpanProcessor, Endpoint, Transport\n\ntracer_provider.add_span_processor(\n    ArizeRoutingSpanProcessor(\n        api_key=os.environ[\"ARIZE_API_KEY\"],\n        endpoint=Endpoint.ARIZE,\n        transport=Transport.GRPC,\n    )\n)\n",[349],{"type":55,"tag":70,"props":350,"children":351},{"__ignoreMap":271},[352,359,366,374,381,389,397,405,414,423,432],{"type":55,"tag":277,"props":353,"children":354},{"class":279,"line":280},[355],{"type":55,"tag":277,"props":356,"children":357},{},[358],{"type":61,"value":286},{"type":55,"tag":277,"props":360,"children":361},{"class":279,"line":289},[362],{"type":55,"tag":277,"props":363,"children":364},{"emptyLinePlaceholder":293},[365],{"type":61,"value":296},{"type":55,"tag":277,"props":367,"children":368},{"class":279,"line":299},[369],{"type":55,"tag":277,"props":370,"children":371},{},[372],{"type":61,"value":373},"from arize.otel import ArizeRoutingSpanProcessor, Endpoint, Transport\n",{"type":55,"tag":277,"props":375,"children":376},{"class":279,"line":308},[377],{"type":55,"tag":277,"props":378,"children":379},{"emptyLinePlaceholder":293},[380],{"type":61,"value":296},{"type":55,"tag":277,"props":382,"children":383},{"class":279,"line":30},[384],{"type":55,"tag":277,"props":385,"children":386},{},[387],{"type":61,"value":388},"tracer_provider.add_span_processor(\n",{"type":55,"tag":277,"props":390,"children":391},{"class":279,"line":324},[392],{"type":55,"tag":277,"props":393,"children":394},{},[395],{"type":61,"value":396},"    ArizeRoutingSpanProcessor(\n",{"type":55,"tag":277,"props":398,"children":399},{"class":279,"line":333},[400],{"type":55,"tag":277,"props":401,"children":402},{},[403],{"type":61,"value":404},"        api_key=os.environ[\"ARIZE_API_KEY\"],\n",{"type":55,"tag":277,"props":406,"children":408},{"class":279,"line":407},8,[409],{"type":55,"tag":277,"props":410,"children":411},{},[412],{"type":61,"value":413},"        endpoint=Endpoint.ARIZE,\n",{"type":55,"tag":277,"props":415,"children":417},{"class":279,"line":416},9,[418],{"type":55,"tag":277,"props":419,"children":420},{},[421],{"type":61,"value":422},"        transport=Transport.GRPC,\n",{"type":55,"tag":277,"props":424,"children":426},{"class":279,"line":425},10,[427],{"type":55,"tag":277,"props":428,"children":429},{},[430],{"type":61,"value":431},"    )\n",{"type":55,"tag":277,"props":433,"children":435},{"class":279,"line":434},11,[436],{"type":55,"tag":277,"props":437,"children":438},{},[439],{"type":61,"value":339},{"type":55,"tag":64,"props":441,"children":442},{},[443,445,451],{"type":61,"value":444},"Reuse the app's configured endpoint and transport when present. Never call ",{"type":55,"tag":70,"props":446,"children":448},{"className":447},[],[449],{"type":61,"value":450},"register_with_routing",{"type":61,"value":452}," after another global provider has already been installed. If the provider also has a fixed Arize processor\u002Fexporter, remove that fixed path in its initialization before adding routing; OpenTelemetry processors cannot be safely removed after startup.",{"type":55,"tag":236,"props":454,"children":456},{"id":455},"_3-resolve-one-routing-target",[457],{"type":61,"value":458},"3. Resolve one routing target",{"type":55,"tag":64,"props":460,"children":461},{},[462],{"type":61,"value":463},"Adapt the app's existing metadata model; do not introduce a framework for one lookup. The resolver must return both non-empty values or no target. Keep mapping data in its existing source of truth rather than duplicating it in tracing code.",{"type":55,"tag":267,"props":465,"children":467},{"className":269,"code":466,"language":25,"meta":271,"style":271},"from dataclasses import dataclass\n\n\n@dataclass(frozen=True)\nclass RoutingTarget:\n    space_id: str\n    project_name: str\n",[468],{"type":55,"tag":70,"props":469,"children":470},{"__ignoreMap":271},[471,479,486,493,501,509,517],{"type":55,"tag":277,"props":472,"children":473},{"class":279,"line":280},[474],{"type":55,"tag":277,"props":475,"children":476},{},[477],{"type":61,"value":478},"from dataclasses import dataclass\n",{"type":55,"tag":277,"props":480,"children":481},{"class":279,"line":289},[482],{"type":55,"tag":277,"props":483,"children":484},{"emptyLinePlaceholder":293},[485],{"type":61,"value":296},{"type":55,"tag":277,"props":487,"children":488},{"class":279,"line":299},[489],{"type":55,"tag":277,"props":490,"children":491},{"emptyLinePlaceholder":293},[492],{"type":61,"value":296},{"type":55,"tag":277,"props":494,"children":495},{"class":279,"line":308},[496],{"type":55,"tag":277,"props":497,"children":498},{},[499],{"type":61,"value":500},"@dataclass(frozen=True)\n",{"type":55,"tag":277,"props":502,"children":503},{"class":279,"line":30},[504],{"type":55,"tag":277,"props":505,"children":506},{},[507],{"type":61,"value":508},"class RoutingTarget:\n",{"type":55,"tag":277,"props":510,"children":511},{"class":279,"line":324},[512],{"type":55,"tag":277,"props":513,"children":514},{},[515],{"type":61,"value":516},"    space_id: str\n",{"type":55,"tag":277,"props":518,"children":519},{"class":279,"line":333},[520],{"type":55,"tag":277,"props":521,"children":522},{},[523],{"type":61,"value":524},"    project_name: str\n",{"type":55,"tag":64,"props":526,"children":527},{},[528],{"type":61,"value":529},"Use this type only when the codebase lacks an equivalent. Validate the result before any traced work begins.",{"type":55,"tag":236,"props":531,"children":533},{"id":532},"_4-set-context-around-the-complete-operation",[534],{"type":61,"value":535},"4. Set context around the complete operation",{"type":55,"tag":64,"props":537,"children":538},{},[539],{"type":61,"value":540},"Enter routing context at the highest boundary that has the metadata and encloses every child span:",{"type":55,"tag":64,"props":542,"children":543},{},[544,546,552],{"type":61,"value":545},"Replace ",{"type":55,"tag":70,"props":547,"children":549},{"className":548},[],[550],{"type":61,"value":551},"RoutingLookupError",{"type":61,"value":553}," below with the resolver's specific existing lookup\u002Fconfiguration exception.",{"type":55,"tag":267,"props":555,"children":557},{"className":269,"code":556,"language":25,"meta":271,"style":271},"from opentelemetry import context as context_api\nfrom arize.otel import set_routing_context\n\n\ndef run_without_arize_routing(request):\n    token = context_api.attach(context_api.Context())\n    try:\n        return run_agent(request)\n    finally:\n        context_api.detach(token)\n\n\ndef handle_agent_request(request):\n    try:\n        target = resolve_routing_target(request.agent_metadata)\n    except RoutingLookupError:\n        logger.warning(\"Arize routing lookup failed; spans will not be exported\")\n        return run_without_arize_routing(request)\n\n    if target is None or not target.space_id or not target.project_name:\n        logger.warning(\"No Arize routing target; spans will not be exported\")\n        return run_without_arize_routing(request)\n\n    with set_routing_context(\n        space_id=target.space_id,\n        project_name=target.project_name,\n    ):\n        return run_agent(request)\n",[558],{"type":55,"tag":70,"props":559,"children":560},{"__ignoreMap":271},[561,569,577,584,591,599,607,615,623,631,639,646,654,663,671,680,689,698,707,715,724,733,741,749,758,767,776,785],{"type":55,"tag":277,"props":562,"children":563},{"class":279,"line":280},[564],{"type":55,"tag":277,"props":565,"children":566},{},[567],{"type":61,"value":568},"from opentelemetry import context as context_api\n",{"type":55,"tag":277,"props":570,"children":571},{"class":279,"line":289},[572],{"type":55,"tag":277,"props":573,"children":574},{},[575],{"type":61,"value":576},"from arize.otel import set_routing_context\n",{"type":55,"tag":277,"props":578,"children":579},{"class":279,"line":299},[580],{"type":55,"tag":277,"props":581,"children":582},{"emptyLinePlaceholder":293},[583],{"type":61,"value":296},{"type":55,"tag":277,"props":585,"children":586},{"class":279,"line":308},[587],{"type":55,"tag":277,"props":588,"children":589},{"emptyLinePlaceholder":293},[590],{"type":61,"value":296},{"type":55,"tag":277,"props":592,"children":593},{"class":279,"line":30},[594],{"type":55,"tag":277,"props":595,"children":596},{},[597],{"type":61,"value":598},"def run_without_arize_routing(request):\n",{"type":55,"tag":277,"props":600,"children":601},{"class":279,"line":324},[602],{"type":55,"tag":277,"props":603,"children":604},{},[605],{"type":61,"value":606},"    token = context_api.attach(context_api.Context())\n",{"type":55,"tag":277,"props":608,"children":609},{"class":279,"line":333},[610],{"type":55,"tag":277,"props":611,"children":612},{},[613],{"type":61,"value":614},"    try:\n",{"type":55,"tag":277,"props":616,"children":617},{"class":279,"line":407},[618],{"type":55,"tag":277,"props":619,"children":620},{},[621],{"type":61,"value":622},"        return run_agent(request)\n",{"type":55,"tag":277,"props":624,"children":625},{"class":279,"line":416},[626],{"type":55,"tag":277,"props":627,"children":628},{},[629],{"type":61,"value":630},"    finally:\n",{"type":55,"tag":277,"props":632,"children":633},{"class":279,"line":425},[634],{"type":55,"tag":277,"props":635,"children":636},{},[637],{"type":61,"value":638},"        context_api.detach(token)\n",{"type":55,"tag":277,"props":640,"children":641},{"class":279,"line":434},[642],{"type":55,"tag":277,"props":643,"children":644},{"emptyLinePlaceholder":293},[645],{"type":61,"value":296},{"type":55,"tag":277,"props":647,"children":649},{"class":279,"line":648},12,[650],{"type":55,"tag":277,"props":651,"children":652},{"emptyLinePlaceholder":293},[653],{"type":61,"value":296},{"type":55,"tag":277,"props":655,"children":657},{"class":279,"line":656},13,[658],{"type":55,"tag":277,"props":659,"children":660},{},[661],{"type":61,"value":662},"def handle_agent_request(request):\n",{"type":55,"tag":277,"props":664,"children":666},{"class":279,"line":665},14,[667],{"type":55,"tag":277,"props":668,"children":669},{},[670],{"type":61,"value":614},{"type":55,"tag":277,"props":672,"children":674},{"class":279,"line":673},15,[675],{"type":55,"tag":277,"props":676,"children":677},{},[678],{"type":61,"value":679},"        target = resolve_routing_target(request.agent_metadata)\n",{"type":55,"tag":277,"props":681,"children":683},{"class":279,"line":682},16,[684],{"type":55,"tag":277,"props":685,"children":686},{},[687],{"type":61,"value":688},"    except RoutingLookupError:\n",{"type":55,"tag":277,"props":690,"children":692},{"class":279,"line":691},17,[693],{"type":55,"tag":277,"props":694,"children":695},{},[696],{"type":61,"value":697},"        logger.warning(\"Arize routing lookup failed; spans will not be exported\")\n",{"type":55,"tag":277,"props":699,"children":701},{"class":279,"line":700},18,[702],{"type":55,"tag":277,"props":703,"children":704},{},[705],{"type":61,"value":706},"        return run_without_arize_routing(request)\n",{"type":55,"tag":277,"props":708,"children":710},{"class":279,"line":709},19,[711],{"type":55,"tag":277,"props":712,"children":713},{"emptyLinePlaceholder":293},[714],{"type":61,"value":296},{"type":55,"tag":277,"props":716,"children":718},{"class":279,"line":717},20,[719],{"type":55,"tag":277,"props":720,"children":721},{},[722],{"type":61,"value":723},"    if target is None or not target.space_id or not target.project_name:\n",{"type":55,"tag":277,"props":725,"children":727},{"class":279,"line":726},21,[728],{"type":55,"tag":277,"props":729,"children":730},{},[731],{"type":61,"value":732},"        logger.warning(\"No Arize routing target; spans will not be exported\")\n",{"type":55,"tag":277,"props":734,"children":736},{"class":279,"line":735},22,[737],{"type":55,"tag":277,"props":738,"children":739},{},[740],{"type":61,"value":706},{"type":55,"tag":277,"props":742,"children":744},{"class":279,"line":743},23,[745],{"type":55,"tag":277,"props":746,"children":747},{"emptyLinePlaceholder":293},[748],{"type":61,"value":296},{"type":55,"tag":277,"props":750,"children":752},{"class":279,"line":751},24,[753],{"type":55,"tag":277,"props":754,"children":755},{},[756],{"type":61,"value":757},"    with set_routing_context(\n",{"type":55,"tag":277,"props":759,"children":761},{"class":279,"line":760},25,[762],{"type":55,"tag":277,"props":763,"children":764},{},[765],{"type":61,"value":766},"        space_id=target.space_id,\n",{"type":55,"tag":277,"props":768,"children":770},{"class":279,"line":769},26,[771],{"type":55,"tag":277,"props":772,"children":773},{},[774],{"type":61,"value":775},"        project_name=target.project_name,\n",{"type":55,"tag":277,"props":777,"children":779},{"class":279,"line":778},27,[780],{"type":55,"tag":277,"props":781,"children":782},{},[783],{"type":61,"value":784},"    ):\n",{"type":55,"tag":277,"props":786,"children":788},{"class":279,"line":787},28,[789],{"type":55,"tag":277,"props":790,"children":791},{},[792],{"type":61,"value":622},{"type":55,"tag":64,"props":794,"children":795},{},[796],{"type":61,"value":797},"Catch only the resolver's expected lookup\u002Fconfiguration exceptions; do not hide unrelated application failures. A fresh context on the no-target path intentionally prevents inherited routing values from reaching Arize. It may start a new trace for other exporters; tenant isolation takes priority. If preserving the distributed parent is mandatory, report the missing public routing-clear API as an SDK follow-up rather than using private context keys.",{"type":55,"tag":64,"props":799,"children":800},{},[801,803,809,810,816],{"type":61,"value":802},"All auto-instrumented and manual child spans created inside the routing context inherit ",{"type":55,"tag":70,"props":804,"children":806},{"className":805},[],[807],{"type":61,"value":808},"arize.space_id",{"type":61,"value":77},{"type":55,"tag":70,"props":811,"children":813},{"className":812},[],[814],{"type":61,"value":815},"arize.project.name",{"type":61,"value":817},". Do not set routing after spans have started.",{"type":55,"tag":64,"props":819,"children":820},{},[821],{"type":61,"value":822},"For background work, propagate the OpenTelemetry context explicitly or resolve and enter a new routing context in the worker. Never rely on request-local context after a queue or thread boundary.",{"type":55,"tag":64,"props":824,"children":825},{},[826,828,834],{"type":61,"value":827},"See ",{"type":55,"tag":70,"props":829,"children":831},{"className":830},[],[832],{"type":61,"value":833},"references\u002FREFERENCE.md",{"type":61,"value":835}," for agent experiment endpoints, existing-provider details, concurrency rules, testing, verification, and troubleshooting.",{"type":55,"tag":100,"props":837,"children":839},{"id":838},"verification",[840],{"type":61,"value":841},"Verification",{"type":55,"tag":156,"props":843,"children":844},{},[845,850,855,860,865,870,875,880],{"type":55,"tag":111,"props":846,"children":847},{},[848],{"type":61,"value":849},"Run focused unit tests for the resolver and execution boundary.",{"type":55,"tag":111,"props":851,"children":852},{},[853],{"type":61,"value":854},"Prove two different metadata values produce two different space\u002Fproject pairs.",{"type":55,"tag":111,"props":856,"children":857},{},[858],{"type":61,"value":859},"Prove child spans inherit the selected pair.",{"type":55,"tag":111,"props":861,"children":862},{},[863],{"type":61,"value":864},"Prove concurrent operations cannot leak routing context.",{"type":55,"tag":111,"props":866,"children":867},{},[868],{"type":61,"value":869},"Prove unknown metadata and resolver failures clear inherited routing, export no spans to any fallback destination, and leave business logic running.",{"type":55,"tag":111,"props":871,"children":872},{},[873],{"type":61,"value":874},"Prove pre-existing non-Arize exporters\u002Fprocessors remain attached and no fixed Arize path remains.",{"type":55,"tag":111,"props":876,"children":877},{},[878],{"type":61,"value":879},"Trigger one uniquely named trace per target in non-production spaces.",{"type":55,"tag":111,"props":881,"children":882},{},[883,885,891],{"type":61,"value":884},"Use ",{"type":55,"tag":70,"props":886,"children":888},{"className":887},[],[889],{"type":61,"value":890},"arize-trace",{"type":61,"value":892}," with the same credential context to confirm each trace exists only in its intended destination.",{"type":55,"tag":64,"props":894,"children":895},{},[896,898,904,905,911,913,919,921,926],{"type":61,"value":897},"For short-lived scripts, call ",{"type":55,"tag":70,"props":899,"children":901},{"className":900},[],[902],{"type":61,"value":903},"force_flush()",{"type":61,"value":77},{"type":55,"tag":70,"props":906,"children":908},{"className":907},[],[909],{"type":61,"value":910},"shutdown()",{"type":61,"value":912}," before exit. Finish as ",{"type":55,"tag":914,"props":915,"children":916},"strong",{},[917],{"type":61,"value":918},"confirmed",{"type":61,"value":920},", ",{"type":55,"tag":914,"props":922,"children":923},{},[924],{"type":61,"value":925},"confirmed with warnings",{"type":61,"value":927},", or a precise blocker; never report completion from unit tests alone when live verification was requested.",{"type":55,"tag":100,"props":929,"children":931},{"id":930},"guardrails-and-limits",[932],{"type":61,"value":933},"Guardrails and limits",{"type":55,"tag":107,"props":935,"children":936},{},[937,942,953,958],{"type":55,"tag":111,"props":938,"children":939},{},[940],{"type":61,"value":941},"Both routing values are required. Spans missing either value are skipped.",{"type":55,"tag":111,"props":943,"children":944},{},[945,951],{"type":55,"tag":70,"props":946,"children":948},{"className":947},[],[949],{"type":61,"value":950},"ArizeRoutingSpanProcessor",{"type":61,"value":952}," creates and caches one processor per unique space. Flag unbounded or high-cardinality space IDs before implementation.",{"type":55,"tag":111,"props":954,"children":955},{},[956],{"type":61,"value":957},"Routing selects spaces and projects only; other customer metadata still belongs in normal OpenInference attributes.",{"type":55,"tag":111,"props":959,"children":960},{},[961,963,969],{"type":61,"value":962},"If dogfooding exposes a missing ",{"type":55,"tag":70,"props":964,"children":966},{"className":965},[],[967],{"type":61,"value":968},"arize-otel",{"type":61,"value":970}," capability, stop and propose a separate SDK change instead of adding a compatibility hack.",{"type":55,"tag":100,"props":972,"children":974},{"id":973},"related-skills",[975],{"type":61,"value":976},"Related skills",{"type":55,"tag":107,"props":978,"children":979},{},[980,990,1000],{"type":55,"tag":111,"props":981,"children":982},{},[983,988],{"type":55,"tag":70,"props":984,"children":986},{"className":985},[],[987],{"type":61,"value":96},{"type":61,"value":989},": first-time or single-destination tracing",{"type":55,"tag":111,"props":991,"children":992},{},[993,998],{"type":55,"tag":70,"props":994,"children":996},{"className":995},[],[997],{"type":61,"value":890},{"type":61,"value":999},": post-export verification and debugging",{"type":55,"tag":111,"props":1001,"children":1002},{},[1003,1009],{"type":55,"tag":70,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":61,"value":1008},"arize-admin",{"type":61,"value":1010},": inspect or manage authorized spaces and API keys",{"type":55,"tag":1012,"props":1013,"children":1014},"style",{},[1015],{"type":61,"value":1016},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1018,"total":743},[1019,1036,1048,1060,1072,1082,1096,1106,1117,1132,1152,1162],{"slug":1020,"name":1020,"fn":1021,"description":1022,"org":1023,"tags":1024,"stars":1033,"repoUrl":1034,"updatedAt":1035},"annotate-spans","annotate LLM spans and traces","Write effective, consistent annotations on LLM\u002Fagent spans and traces, and coach the user on annotation practice. Load this whenever you are about to record structured feedback with the `batch_span_annotate` tool, or when the user asks how to annotate, label, score, or review spans\u002Ftraces, build a failure taxonomy, or set up human\u002FLLM review. Do NOT load for: pure analysis with no intent to save feedback (use debug-trace), latency or cost statistics, or prompt authoring (use playground).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1025,1028,1031,1032],{"name":1026,"slug":1027,"type":16},"Evals","evals",{"name":1029,"slug":1030,"type":16},"LLM","llm",{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},10513,"https:\u002F\u002Fgithub.com\u002FArize-ai\u002Fphoenix","2026-07-12T08:08:14.140984",{"slug":38,"name":38,"fn":1037,"description":1038,"org":1039,"tags":1040,"stars":1033,"repoUrl":1034,"updatedAt":1047},"reason about Phoenix dataset structure","Understand what a Phoenix dataset is and reason well about its examples, outputs, splits, and how it feeds evaluators and experiments. Load this whenever a dataset is in view or the user asks what a dataset is, how splits work, what an output \"means\", or how datasets relate to experiments and evals. This skill governs the judgment; any tool descriptions govern the mechanics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1041,1044,1046],{"name":1042,"slug":1043,"type":16},"Data Analysis","data-analysis",{"name":1045,"slug":38,"type":16},"Datasets",{"name":1026,"slug":1027,"type":16},"2026-07-12T08:08:21.695457",{"slug":1049,"name":1049,"fn":1050,"description":1051,"org":1052,"tags":1053,"stars":1033,"repoUrl":1034,"updatedAt":1059},"debug-trace","diagnose failures using trace investigation","Diagnose failure modes by systematically investigating traces. Trigger when the user explicitly asks for cross-trace diagnosis: \"what's going wrong?\", \"were there errors?\", \"debug this\", \"where is my agent struggling?\". Do NOT trigger on: (1) advice questions (\"what should I do?\"), (2) statistical questions (\"what's the average latency?\"), (3) summarize requests, (4) trace filtering (\"show me traces with errors\"), (5) vague questions (\"is there a problem?\"), (6) unrelated requests.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1054,1057,1058],{"name":1055,"slug":1056,"type":16},"Debugging","debugging",{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},"2026-07-12T08:08:10.44243",{"slug":1061,"name":1061,"fn":1062,"description":1063,"org":1064,"tags":1065,"stars":1033,"repoUrl":1034,"updatedAt":1071},"evaluators","author and refine Phoenix evaluators","Author or refine a Phoenix evaluator — code or LLM-as-a-judge — that scores a run's output. Trigger when the user wants to create a new evaluator, improve an existing one's logic or rubric, choose labels, or decide what to measure on a dataset or experiment. Do NOT trigger on: (1) manual prompt drafting (use `playground`), (2) running or comparing experiments themselves (use `experiments`), (3) cross-trace failure diagnosis with no evaluator in scope (use `debug-trace`).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1066,1067,1068],{"name":1026,"slug":1027,"type":16},{"name":1029,"slug":1030,"type":16},{"name":1069,"slug":1070,"type":16},"Testing","testing","2026-07-31T05:58:09.13624",{"slug":39,"name":39,"fn":1073,"description":1074,"org":1075,"tags":1076,"stars":1033,"repoUrl":1034,"updatedAt":1081},"run and compare dataset-backed experiments","Run, read, and compare dataset-backed experiments to find evidence that a prompt or pipeline is improving. Trigger when the user wants to iterate over a dataset with experiments, compare experiment runs, read experiment quality\u002Flatency\u002Fcost, or decide whether a change actually helped. Running a prompt over a dataset is implicitly an experiment — load this skill when dataset-backed work begins, before authoring evaluators for the experiment and before starting the recorded run, not only when reading results. Do NOT trigger on: (1) manual prompt drafting with no dataset-backed evaluation in scope (use `playground`), (2) authoring or refining an evaluator's logic or rubric (use `evaluators`), (3) cross-trace failure diagnosis with no experiment in scope (use `debug-trace`).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1077,1078,1079,1080],{"name":1045,"slug":38,"type":16},{"name":1026,"slug":1027,"type":16},{"name":1029,"slug":1030,"type":16},{"name":1069,"slug":1070,"type":16},"2026-07-12T08:08:11.691477",{"slug":1083,"name":1083,"fn":1084,"description":1085,"org":1086,"tags":1087,"stars":1033,"repoUrl":1034,"updatedAt":1095},"phoenix-graphql","query Phoenix API with GraphQL","Write efficient GraphQL queries against the Phoenix API. Load this skill in two cases: (1) before composing any non-trivial GraphQL query yourself for data analysis (via the `phoenix-gql` bash command) — it contains schema entrypoints and patterns that eliminate the need for introspection; (2) when the user asks for help writing GraphQL queries for their own scripts, tools, or integrations against Phoenix — it covers the endpoint, authentication, and client examples.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1088,1091,1092],{"name":1089,"slug":1090,"type":16},"Analytics","analytics",{"name":1042,"slug":1043,"type":16},{"name":1093,"slug":1094,"type":16},"GraphQL","graphql","2026-07-12T08:08:17.163493",{"slug":1097,"name":1097,"fn":1098,"description":1099,"org":1100,"tags":1101,"stars":1033,"repoUrl":1034,"updatedAt":1105},"playground","author and iterate on prompts in Phoenix","Author, edit, or iterate on prompts in the Phoenix prompt playground, including running experiments over a dataset. Load before any playground tool call, including single-shot prompt rewrites.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1102,1103,1104],{"name":1026,"slug":1027,"type":16},{"name":1029,"slug":1030,"type":16},{"name":1069,"slug":1070,"type":16},"2026-07-12T08:08:12.920792",{"slug":1107,"name":1107,"fn":1108,"description":1109,"org":1110,"tags":1111,"stars":1033,"repoUrl":1034,"updatedAt":1116},"span-coding","analyze and code Phoenix spans","Open-code Phoenix spans with PXI-owned notes, recover those notes for axial coding, and promote stable categories into structured annotations. Load this when analyzing spans to discover failure patterns before a taxonomy exists.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1112,1113,1114,1115],{"name":1055,"slug":1056,"type":16},{"name":1029,"slug":1030,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},"2026-07-12T08:08:19.597239",{"slug":1008,"name":1008,"fn":1118,"description":1119,"org":1120,"tags":1121,"stars":26,"repoUrl":27,"updatedAt":1131},"manage Arize enterprise user access","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\u002FSSO 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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1122,1125,1128],{"name":1123,"slug":1124,"type":16},"CLI","cli",{"name":1126,"slug":1127,"type":16},"Operations","operations",{"name":1129,"slug":1130,"type":16},"Permissions","permissions","2026-07-22T05:37:21.991338",{"slug":1133,"name":1133,"fn":1134,"description":1135,"org":1136,"tags":1137,"stars":26,"repoUrl":27,"updatedAt":1151},"arize-ai-provider-integration","manage Arize AI provider integrations","Creates, reads, updates, and deletes Arize AI integrations that store LLM provider credentials used by evaluators and other Arize features. Supports any LLM provider (e.g. OpenAI, Anthropic, Azure OpenAI, AWS Bedrock, Vertex AI, Gemini, NVIDIA NIM). Use when the user mentions AI integration, LLM provider credentials, create integration, list integrations, update credentials, delete integration, or connecting an LLM provider to Arize.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1138,1141,1144,1147,1148],{"name":1139,"slug":1140,"type":16},"Anthropic","anthropic",{"name":1142,"slug":1143,"type":16},"Azure","azure",{"name":1145,"slug":1146,"type":16},"Integrations","integrations",{"name":1029,"slug":1030,"type":16},{"name":1149,"slug":1150,"type":16},"OpenAI","openai","2026-07-22T05:37:23.90468",{"slug":1153,"name":1153,"fn":1154,"description":1155,"org":1156,"tags":1157,"stars":26,"repoUrl":27,"updatedAt":1161},"arize-annotation","manage Arize annotation workflows","Creates and manages annotation configs (categorical, continuous, freeform label schemas) and annotation queues (human review workflows) on Arize. Applies human annotations to project spans via the Python SDK. Use when the user mentions annotation config, annotation queue, label schema, human feedback, bulk annotate spans, update_annotations, labeling queue, annotate record, or human review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1158,1159,1160],{"name":1042,"slug":1043,"type":16},{"name":1029,"slug":1030,"type":16},{"name":18,"slug":19,"type":16},"2026-07-22T05:37:19.010776",{"slug":1163,"name":1163,"fn":1164,"description":1165,"org":1166,"tags":1167,"stars":26,"repoUrl":27,"updatedAt":1183},"arize-compliance-audit","audit AI agents for regulatory compliance","INVOKE THIS SKILL when auditing an AI agent or LLM app for regulatory compliance. Covers EU AI Act, GPAI Code of Practice, GDPR, NIST AI RMF, Colorado AI Act, HIPAA, and ISO 42001. Scans the codebase for compliance gaps, cross-references Arize instrumentation for audit trail coverage, and produces an actionable remediation checklist tailored to the selected frameworks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1168,1171,1174,1177,1180],{"name":1169,"slug":1170,"type":16},"Audit","audit",{"name":1172,"slug":1173,"type":16},"Compliance","compliance",{"name":1175,"slug":1176,"type":16},"GDPR","gdpr",{"name":1178,"slug":1179,"type":16},"Legal","legal",{"name":1181,"slug":1182,"type":16},"Security","security","2026-07-19T05:39:42.632738",{"items":1185,"total":656},[1186,1192,1200,1206,1214,1227,1237],{"slug":1008,"name":1008,"fn":1118,"description":1119,"org":1187,"tags":1188,"stars":26,"repoUrl":27,"updatedAt":1131},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1189,1190,1191],{"name":1123,"slug":1124,"type":16},{"name":1126,"slug":1127,"type":16},{"name":1129,"slug":1130,"type":16},{"slug":1133,"name":1133,"fn":1134,"description":1135,"org":1193,"tags":1194,"stars":26,"repoUrl":27,"updatedAt":1151},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1195,1196,1197,1198,1199],{"name":1139,"slug":1140,"type":16},{"name":1142,"slug":1143,"type":16},{"name":1145,"slug":1146,"type":16},{"name":1029,"slug":1030,"type":16},{"name":1149,"slug":1150,"type":16},{"slug":1153,"name":1153,"fn":1154,"description":1155,"org":1201,"tags":1202,"stars":26,"repoUrl":27,"updatedAt":1161},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1203,1204,1205],{"name":1042,"slug":1043,"type":16},{"name":1029,"slug":1030,"type":16},{"name":18,"slug":19,"type":16},{"slug":1163,"name":1163,"fn":1164,"description":1165,"org":1207,"tags":1208,"stars":26,"repoUrl":27,"updatedAt":1183},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1209,1210,1211,1212,1213],{"name":1169,"slug":1170,"type":16},{"name":1172,"slug":1173,"type":16},{"name":1175,"slug":1176,"type":16},{"name":1178,"slug":1179,"type":16},{"name":1181,"slug":1182,"type":16},{"slug":1215,"name":1215,"fn":1216,"description":1217,"org":1218,"tags":1219,"stars":26,"repoUrl":27,"updatedAt":1226},"arize-dataset","manage Arize datasets and examples","Creates, manages, and queries Arize datasets and examples. Covers dataset CRUD, appending examples, exporting data, and file-based dataset creation using the ax CLI. Use when the user needs test data, evaluation examples, or mentions create dataset, list datasets, export dataset, append examples, dataset version, golden dataset, or test set.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1220,1223,1224,1225],{"name":1221,"slug":1222,"type":16},"Data Engineering","data-engineering",{"name":1045,"slug":38,"type":16},{"name":1026,"slug":1027,"type":16},{"name":1029,"slug":1030,"type":16},"2026-07-22T05:37:20.943718",{"slug":1228,"name":1228,"fn":1229,"description":1230,"org":1231,"tags":1232,"stars":26,"repoUrl":27,"updatedAt":1236},"arize-evaluator","configure and run Arize evaluations","Handles LLM-as-judge and code evaluator workflows on Arize including creating\u002Fupdating evaluators, running evaluations on spans or experiments, managing tasks, trigger-run operations, column mapping, and continuous monitoring. Use when the user mentions create evaluator, LLM judge, code evaluator, hallucination, faithfulness, correctness, relevance, run eval, score spans, score experiment, trigger-run, column mapping, continuous monitoring, or improve evaluator prompt.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1233,1234,1235],{"name":1026,"slug":1027,"type":16},{"name":1029,"slug":1030,"type":16},{"name":18,"slug":19,"type":16},"2026-07-25T05:32:37.552903",{"slug":1238,"name":1238,"fn":1239,"description":1240,"org":1241,"tags":1242,"stars":26,"repoUrl":27,"updatedAt":1246},"arize-experiment","run and analyze Arize experiments","Creates, runs, and analyzes Arize experiments for evaluating and comparing model performance. Covers experiment CRUD, exporting runs, comparing results, and evaluation workflows using the ax CLI. Use when the user mentions create experiment, run experiment, compare models, model performance, evaluate AI, experiment results, benchmark, A\u002FB test models, or measure accuracy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1243,1244,1245],{"name":1089,"slug":1090,"type":16},{"name":1026,"slug":1027,"type":16},{"name":1029,"slug":1030,"type":16},"2026-07-31T05:53:44.725539"]