azure-mgmt-arizeaiobservabilityeval-dotnet — Claude Code skill
Guides agents in managing Arize AI Observability resources on Azure using the .NET SDK. Helps provision and manage organizations via Azure Marketplace.
npx skills add microsoft/skills --skill azure-mgmt-arizeaiobservabilityeval-dotnet -a claude-codeWhat azure-mgmt-arizeaiobservabilityeval-dotnet does
This skill instructs the agent on using the Azure.ResourceManager.ArizeAIObservabilityEval NuGet package (version 1.0.0). It provides patterns for initializing ArmClient, authenticating with DefaultAzureCredential, and managing Arize AI resources under the ArizeAi.ObservabilityEval/organizations ARM type.
Code workflows cover creating organizations with marketplace offer details, updating tags with patch models, and listing resources across subscriptions. It emphasizes asynchronous patterns and safe checks like GetIfExistsAsync to avoid exceptions.
The underlying SDK requires Azure.Core 1.46.2 or higher and Azure.ResourceManager 1.13.1 or higher. Without AZURE_SUBSCRIPTION_ID defined in the environment, client calls will fail immediately.
What it helps with
- provision an Arize AI organization using the Azure .NET SDK
- link Azure Marketplace plan details to an Arize resource
- patch tags on existing Arize AI organizations
- check resource presence safely using
GetIfExistsAsync
Example prompts for the agent
- Generate C# code to create an Arize AI organization with marketplace offer details in East US
- Show how to list all Arize AI Observability organizations in an Azure subscription
- Write a .NET snippet to update tags on an Arize AI organization using a patch model
How to install azure-mgmt-arizeaiobservabilityeval-dotnet
1Skills CLI (Vercel)
npx skills add microsoft/skills --skill azure-mgmt-arizeaiobservabilityeval-dotnet -a claude-code2Manually: put the files in place
~/.claude/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/
Manually: put the files in place
.agents/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install microsoft/skills azure-mgmt-arizeaiobservabilityeval-dotnet2Manually: put the files in place
.github/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdPlatform CLI
gemini skills install https://github.com/microsoft/skills --path .github/plugins/azure-sdk-dotnet/skills/azure-mgmt-arizeaiobservabilityeval-dotnetManually: put the files in place
.devin/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.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 azure-mgmt-arizeaiobservabilityeval-dotnet
How to install azure-mgmt-arizeaiobservabilityeval-dotnet in Claude Code?
Run npx skills add microsoft/skills --skill azure-mgmt-arizeaiobservabilityeval-dotnet -a claude-code. The skill file is placed at ~/.claude/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.md.
What does azure-mgmt-arizeaiobservabilityeval-dotnet do?
It provides reference workflows and C# code snippets for managing Arize AI organizations on Azure. It guides agents through ARM client setup, Marketplace offer assignment, and CRUD operations.
What dependencies and environment variables are required?
The package requires Azure.Core >= 1.46.2 and Azure.ResourceManager >= 1.13.1. You must set AZURE_SUBSCRIPTION_ID, along with authentication credentials like AZURE_CLIENT_ID and AZURE_CLIENT_SECRET if using a service principal.
Source text
SKILL.md · MIT
---
name: azure-mgmt-arizeaiobservabilityeval-dotnet
description: "Azure Resource Manager SDK for Arize AI Observability and Evaluation (.NET). Use when managing Arize AI organizations \non Azure via Azure Marketplace, creating/updating/deleting Arize resources, or integrating Arize ML observability \ninto .NET applications. Triggers: \"Arize AI\", \"ML observability\", \"ArizeAIObservabilityEval\", \"Arize organization\".\n"
license: MIT
metadata:
author: Microsoft
version: "1.0.0"
package: Azure.ResourceManager.ArizeAIObservabilityEval
---
# Azure.ResourceManager.ArizeAIObservabilityEval
.NET SDK for managing Arize AI Observability and Evaluation resources on Azure.
## Installation
```bash
dotnet add package Azure.ResourceManager.ArizeAIObservabilityEval --version 1.0.0
```
## Package Info
| 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 |
## Environment Variables
```bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription ID
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
AZURE_TENANT_ID=<your-tenant-id> # For service principal auth (optional)
AZURE_CLIENT_ID=<your-client-id> # For service principal auth (optional)
AZURE_CLIENT_SECRET=<your-client-secret> # For service principal auth (optional)
```
## Authentication
```csharp
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.ArizeAIObservabilityEval;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
var credential = new DefaultAzureCredential(
DefaultAzureCredential.DefaultEnvironmentVariableName
);
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes
// var credential = new ManagedIdentityCredential();
var armClient = new ArmClient(credential);
```
## Core Workflow
### Create an Arize AI Organization
```csharp
using 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 = "[email protected]"
}
},
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}");
```
### Get an Organization
```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;
}
```
### List Organizations
```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}");
}
```
### Update an Organization
```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);
```
### Delete an Organization
```csharp
var org = await collection.GetAsync("my-arize-org");
await org.Value.DeleteAsync(WaitUntil.Completed);
```
## Key Types
| 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 |
## Enums
| Enum | Values |
|------|--------|
| `ArizeAIObservabilityEvalOfferProvisioningState` | `Succeeded`, `Failed`, `Canceled`, `Provisioning`, `Updating`, `Deleting`, `Accepted` |
| `ArizeAIObservabilityEvalMarketplaceSubscriptionStatus` | `PendingFulfillmentStart`, `Subscribed`, `Suspended`, `Unsubscribed` |
| `ArizeAIObservabilityEvalSingleSignOnState` | `Initial`, `Enable`, `Disable` |
| `ArizeAIObservabilityEvalSingleSignOnType` | `Saml`, `OpenId` |
## Best Practices
1. **Use async methods** — All operations support async/await
2. **Handle long-running operations** — Use `WaitUntil.Completed` or poll manually
3. **Use GetIfExistsAsync** — Avoid exceptions for conditional logic
4. **Implement retry policies** — Configure via `ArmClientOptions`
5. **Use resource identifiers** — For direct resource access without listing
6. **Close clients properly** — Use `using` statements or dispose explicitly
## Error Handling
```csharp
try
{
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}");
}
```
## Direct Resource Access
```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();
```
## Links
- [NuGet Package](https://www.nuget.org/packages/Azure.ResourceManager.ArizeAIObservabilityEval)
- [Azure SDK for .NET](https://github.com/Azure/azure-sdk-for-net)
- [Arize AI](https://arize.com/)
© Microsoft · MIT · microsoft/skills