azure-mgmt-arizeaiobservabilityeval-dotnet — скилл для Claude Code
Помогает создавать, настраивать и удалять ресурсы Arize AI Observability в Azure через .NET SDK. Пригодится при автоматизации мониторинга ML-моделей в облаке.
npx skills add microsoft/skills --skill azure-mgmt-arizeaiobservabilityeval-dotnet -a claude-codeЧто делает azure-mgmt-arizeaiobservabilityeval-dotnet
Скилл обучает ИИ-агента работать с библиотекой Azure.ResourceManager.ArizeAIObservabilityEval версии 1.0.0. Он содержит примеры инициализации ArmClient, вызовы операций управления организациями Arize AI и параметры для Azure Marketplace.
В коде используются типы ArizeAIObservabilityEvalOrganizationResource и ArizeAIObservabilityEvalOrganizationCollection. Агент получает готовые шаблоны для асинхронного создания организаций с планами маркетплейса, обновления тегов через патч-модели и безопасного удаления.
Для работы библиотеки требуются пакеты Azure.Core версии не ниже 1.46.2 и Azure.ResourceManager от 1.13.1. Без переменной среды AZURE_SUBSCRIPTION_ID и настроенной аутентификации через DefaultAzureCredential вызовы ARM API завершатся ошибкой.
Какие задачи решает
- развернуть организацию Arize AI в Azure через .NET SDK
- привязать параметры плана Azure Marketplace к ресурсу мониторинга
- обновить теги организации Arize через патч-модель
- проверить наличие ресурса с помощью метода
GetIfExistsAsync
Примеры запросов агенту
- Напиши код на C# для создания организации Arize AI в регионе East US с планом из Azure Marketplace
- Покажи, как обновить теги организации Arize через Azure.ResourceManager.ArizeAIObservabilityEval
- Как перечислить все ресурсы Arize AI Observability в текущей подписке Azure на .NET?
Как установить azure-mgmt-arizeaiobservabilityeval-dotnet
1Через Skills CLI (Vercel)
npx skills add microsoft/skills --skill azure-mgmt-arizeaiobservabilityeval-dotnet -a claude-code2Вручную: положить файлы
~/.claude/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/
Вручную: положить файлы
.agents/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install microsoft/skills azure-mgmt-arizeaiobservabilityeval-dotnet2Вручную: положить файлы
.github/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdКомандой платформы
gemini skills install https://github.com/microsoft/skills --path .github/plugins/azure-sdk-dotnet/skills/azure-mgmt-arizeaiobservabilityeval-dotnetВручную: положить файлы
.devin/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о azure-mgmt-arizeaiobservabilityeval-dotnet
Как установить azure-mgmt-arizeaiobservabilityeval-dotnet в Claude Code?
Выполните команду npx skills add microsoft/skills --skill azure-mgmt-arizeaiobservabilityeval-dotnet -a claude-code. Файл навыка будет сохранён в ~/.claude/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.md.
Для чего нужен этот скилл?
Он предоставляет агенту готовые примеры кода на C# для управления ресурсами Arize AI Observability в Azure. Агент учится корректно вызывать CRUD-методы через официальный ARM SDK.
Какие переменные окружения требуются для запуска кода?
Обязательно нужна переменная AZURE_SUBSCRIPTION_ID. Для авторизации сервисного принципала также используются AZURE_TENANT_ID, AZURE_CLIENT_ID и AZURE_CLIENT_SECRET.
Исходный текст
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