Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Azure Resource Manager SDK for Arize AI Observability and Evaluation (.NET).
.claude/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | — | — |
| case-03 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-11 | ✗→✓ | ▲ Improved | — | — |
.NET SDK for managing Arize AI Observability and Evaluation resources on Azure.
bashdotnet add package Azure.ResourceManager.ArizeAIObservabilityEval --version 1.0.0
| Property | Value | |----------|-------| | Package | Azure.ResourceManager.ArizeAIObservabilityEval | | Version | 1.0.0 (GA) | | API Version | 2024-10-01 | | ARM Type | ArizeAi.ObservabilityEval/organizations | | Dependencies | Azure.Core >= 1.46.2, Azure.ResourceManager >= 1.13.1 |
bashAZURE_SUBSCRIPTION_ID=<your-subscription-id> AZURE_TENANT_ID=<your-tenant-id> AZURE_CLIENT_ID=<your-client-id> AZURE_CLIENT_SECRET=<your-client-secret>
csharpusing Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.ArizeAIObservabilityEval; // Always use DefaultAzureCredential var credential = new DefaultAzureCredential(); var armClient = new ArmClient(credential);
csharpusing Azure.Core; using Azure.ResourceManager.Resources; using Azure.ResourceManager.ArizeAIObservabilityEval; using Azure.ResourceManager.ArizeAIObservabilityEval.Models; // Get subscription and resource group var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID"); var subscription = await armClient.GetSubscriptionResource( SubscriptionResource.CreateResourceIdentifier(subscriptionId)).GetAsync(); var resourceGroup = await subscription.Value.GetResourceGroupAsync("my-resource-group"); // Get the organization collection var collection = resourceGroup.Value.GetArizeAIObservabilityEvalOrganizations(); // Create organization data var data = new ArizeAIObservabilityEvalOrganizationData(AzureLocation.EastUS) { Properties = new ArizeAIObservabilityEvalOrganizationProperties { Marketplace = new ArizeAIObservabilityEvalMarketplaceDetails { SubscriptionId = "marketplace-subscription-id", OfferDetails = new ArizeAIObservabilityEvalOfferDetails { PublisherId = "arikimlabs1649082416596", OfferId = "arize-liftr-1", PlanId = "arize-liftr-1-plan", PlanName = "Arize AI Plan", TermUnit = "P1M", TermId = "term-id" } }, User = new ArizeAIObservabilityEvalUserDetails { FirstName = "John", LastName = "Doe", EmailAddress = "john.doe@example.com" } }, Tags = { ["environment"] = "production" } }; // Create (long-running operation) var operation = await collection.CreateOrUpdateAsync( WaitUntil.Completed, "my-arize-org", data); var organization = operation.Value; Console.WriteLine($"Created: {organization.Data.Name}");
csharp// Option 1: From collection var org = await collection.GetAsync("my-arize-org"); // Option 2: Check if exists first var exists = await collection.ExistsAsync("my-arize-org"); if (exists.Value) { var org = await collection.GetAsync("my-arize-org"); } // Option 3: GetIfExists (returns null if not found) var response = await collection.GetIfExistsAsync("my-arize-org"); if (response.HasValue) { var org = response.Value; }
csharp// List in resource group await foreach (var org in collection.GetAllAsync()) { Console.WriteLine($"Org: {org.Data.Name}, State: {org.Data.Properties?.ProvisioningState}"); } // List in subscription await foreach (var org in subscription.Value.GetArizeAIObservabilityEvalOrganizationsAsync()) { Console.WriteLine($"Org: {org.Data.Name}"); }
csharp// Update tags var org = await collection.GetAsync("my-arize-org"); var updateData = new ArizeAIObservabilityEvalOrganizationPatch { Tags = { ["environment"] = "staging", ["team"] = "ml-ops" } }; var updated = await org.Value.UpdateAsync(updateData);
csharpvar org = await collection.GetAsync("my-arize-org"); await org.Value.DeleteAsync(WaitUntil.Completed);
| Type | Purpose | |------|---------| | ArizeAIObservabilityEvalOrganizationResource | Main ARM resource for Arize organizations | | ArizeAIObservabilityEvalOrganizationCollection | Collection for CRUD operations | | ArizeAIObservabilityEvalOrganizationData | Resource data model | | ArizeAIObservabilityEvalOrganizationProperties | Organization properties | | ArizeAIObservabilityEvalMarketplaceDetails | Azure Marketplace subscription info | | ArizeAIObservabilityEvalOfferDetails | Marketplace offer configuration | | ArizeAIObservabilityEvalUserDetails | User contact information | | ArizeAIObservabilityEvalOrganizationPatch | Patch model for updates | | ArizeAIObservabilityEvalSingleSignOnPropertiesV2 | SSO configuration |
| Enum | Values | |------|--------| | ArizeAIObservabilityEvalOfferProvisioningState | Succeeded, Failed, Canceled, Provisioning, Updating, Deleting, Accepted | | ArizeAIObservabilityEvalMarketplaceSubscriptionStatus | PendingFulfillmentStart, Subscribed, Suspended, Unsubscribed | | ArizeAIObservabilityEvalSingleSignOnState | Initial, Enable, Disable | | ArizeAIObservabilityEvalSingleSignOnType | Saml, OpenId |
WaitUntil.Completed or poll manuallyArmClientOptionsusing statements or dispose explicitlycsharptry { var org = await collection.GetAsync("my-arize-org"); } catch (Azure.RequestFailedException ex) when (ex.Status == 404) { Console.WriteLine("Organization not found"); } catch (Azure.RequestFailedException ex) { Console.WriteLine($"Azure error: {ex.Message}"); }
csharp// Access resource directly by ID (without listing) var resourceId = ArizeAIObservabilityEvalOrganizationResource.CreateResourceIdentifier( subscriptionId, "my-resource-group", "my-arize-org"); var org = armClient.GetArizeAIObservabilityEvalOrganizationResource(resourceId); var data = await org.GetAsync();
This skill is applicable to execute the workflow or actions described in the overview.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +50 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.