azure-mgmt-fabric-py — скилл для Claude Code: управление Fabric
Скилл помогает писать Python-код для управления ёмкостями и ресурсами Microsoft Fabric через Azure SDK. Пригодится для создания, просмотра и изменения ёмкостей из проекта.
npx skills add microsoft/skills --skill azure-mgmt-fabric-py -a claude-codeЧто делает azure-mgmt-fabric-py
Скилл описывает работу с FabricMgmtClient: создание ёмкости, просмотр сведений, списки по группе ресурсов или подписке, смену SKU и тегов. Также в примерах есть приостановка и возобновление ёмкости, удаление, проверка доступности имени и просмотр SKU.
Для кода нужны пакеты azure-mgmt-fabric и azure-identity, а также переменные AZURE_SUBSCRIPTION_ID и AZURE_RESOURCE_GROUP. Для аутентификации рекомендуется DefaultAzureCredential; в рабочей среде для него задают AZURE_TOKEN_CREDENTIALS=prod. Клиент и учётные данные в асинхронном коде следует закрывать через менеджер контекста. Приостановленная ёмкость не тарифицируется, поэтому операцию можно использовать для остановки оплаты.
Какие задачи решает
- создать ёмкость Microsoft Fabric с заданным SKU
- получить состояние и параметры ёмкости
- перечислить ёмкости группы ресурсов или подписки
- изменить SKU и теги ёмкости
- приостановить или возобновить ёмкость
Примеры запросов агенту
- Напиши Python-код, который создаёт ёмкость Microsoft Fabric в группе ресурсов из
AZURE_RESOURCE_GROUP. - Покажи, как получить SKU и состояние ёмкости через
FabricMgmtClient. - Добавь код для приостановки ёмкости, чтобы остановить оплату.
Как установить azure-mgmt-fabric-py
1Через Skills CLI (Vercel)
npx skills add microsoft/skills --skill azure-mgmt-fabric-py -a claude-code2Вручную: положить файлы
~/.claude/skills/azure-mgmt-fabric-py/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/azure-mgmt-fabric-py/
Вручную: положить файлы
.agents/skills/azure-mgmt-fabric-py/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/azure-mgmt-fabric-py/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install microsoft/skills azure-mgmt-fabric-py2Вручную: положить файлы
.github/skills/azure-mgmt-fabric-py/SKILL.mdКомандой платформы
gemini skills install https://github.com/microsoft/skills --path .github/plugins/azure-sdk-python/skills/azure-mgmt-fabric-pyВручную: положить файлы
.devin/skills/azure-mgmt-fabric-py/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о azure-mgmt-fabric-py
Как установить azure-mgmt-fabric-py в Claude Code?
Выполните npx skills add microsoft/skills --skill azure-mgmt-fabric-py -a claude-code. Файл скилла находится по пути ~/.claude/skills/azure-mgmt-fabric-py/SKILL.md.
Что делает azure-mgmt-fabric-py?
Помогает работать с ёмкостями Microsoft Fabric через Python SDK: создавать их, получать сведения, менять SKU и приостанавливать.
Какие пакеты и переменные нужны для примеров?
Установите azure-mgmt-fabric и azure-identity. Задайте AZURE_SUBSCRIPTION_ID и AZURE_RESOURCE_GROUP; для DefaultAzureCredential в рабочей среде также задайте AZURE_TOKEN_CREDENTIALS=prod.
Исходный текст
SKILL.md · MIT
---
name: azure-mgmt-fabric-py
description: |-
Azure Fabric Management SDK for Python. Use for managing Microsoft Fabric capacities and resources.
Triggers: "azure-mgmt-fabric", "FabricMgmtClient", "Fabric capacity", "Microsoft Fabric", "Power BI capacity".
license: MIT
metadata:
author: Microsoft
version: "1.0.0"
---
# Azure Fabric Management SDK for Python
Manage Microsoft Fabric capacities and resources programmatically.
## Installation
```bash
pip install azure-mgmt-fabric
pip install azure-identity
```
## Environment Variables
```bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required for all auth methods
AZURE_RESOURCE_GROUP=<your-resource-group> # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```
## Authentication & Lifecycle
> **🔑 Two rules apply to every code sample below:**
>
> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI / VS Code / Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account/API keys — they bypass Entra audit and rotation.
> - Local dev: `DefaultAzureCredential` works as-is.
> - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=<specific_credential>`) to constrain the credential chain to production-safe credentials.
> 2. **Wrap every client in a context manager** so HTTP transports, sockets, and token caches are released deterministically:
> - Sync: `with <Client>(...) as client:`
> - Async: `async with <Client>(...) as client:` **and** `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)
>
> Snippets may abbreviate this setup, but production code should always follow both rules.
```python
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.mgmt.fabric import FabricMgmtClient
import os
# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()
with FabricMgmtClient(
credential=credential,
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"]
) as client:
# Use `client` for all subsequent operations (see examples below)
...
```
## Create Fabric Capacity
```python
from azure.mgmt.fabric import FabricMgmtClient
from azure.mgmt.fabric.models import FabricCapacity, FabricCapacityProperties, CapacitySku
from azure.identity import DefaultAzureCredential
import os
resource_group = os.environ["AZURE_RESOURCE_GROUP"]
capacity_name = "myfabriccapacity"
credential = DefaultAzureCredential()
with FabricMgmtClient(
credential=credential,
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"]
) as client:
capacity = client.fabric_capacities.begin_create_or_update(
resource_group_name=resource_group,
capacity_name=capacity_name,
resource=FabricCapacity(
location="eastus",
sku=CapacitySku(
name="F2", # Fabric SKU
tier="Fabric"
),
properties=FabricCapacityProperties(
administration=FabricCapacityAdministration(
members=["[email protected]"]
)
)
)
).result()
print(f"Capacity created: {capacity.name}")
```
## Get Capacity Details
```python
capacity = client.fabric_capacities.get(
resource_group_name=resource_group,
capacity_name=capacity_name
)
print(f"Capacity: {capacity.name}")
print(f"SKU: {capacity.sku.name}")
print(f"State: {capacity.properties.state}")
print(f"Location: {capacity.location}")
```
## List Capacities in Resource Group
```python
capacities = client.fabric_capacities.list_by_resource_group(
resource_group_name=resource_group
)
for capacity in capacities:
print(f"Capacity: {capacity.name} - SKU: {capacity.sku.name}")
```
## List All Capacities in Subscription
```python
all_capacities = client.fabric_capacities.list_by_subscription()
for capacity in all_capacities:
print(f"Capacity: {capacity.name} in {capacity.location}")
```
## Update Capacity
```python
from azure.mgmt.fabric.models import FabricCapacityUpdate, CapacitySku
updated = client.fabric_capacities.begin_update(
resource_group_name=resource_group,
capacity_name=capacity_name,
properties=FabricCapacityUpdate(
sku=CapacitySku(
name="F4", # Scale up
tier="Fabric"
),
tags={"environment": "production"}
)
).result()
print(f"Updated SKU: {updated.sku.name}")
```
## Suspend Capacity
Pause capacity to stop billing:
```python
client.fabric_capacities.begin_suspend(
resource_group_name=resource_group,
capacity_name=capacity_name
).result()
print("Capacity suspended")
```
## Resume Capacity
Resume a paused capacity:
```python
client.fabric_capacities.begin_resume(
resource_group_name=resource_group,
capacity_name=capacity_name
).result()
print("Capacity resumed")
```
## Delete Capacity
```python
client.fabric_capacities.begin_delete(
resource_group_name=resource_group,
capacity_name=capacity_name
).result()
print("Capacity deleted")
```
## Check Name Availability
```python
from azure.mgmt.fabric.models import CheckNameAvailabilityRequest
result = client.fabric_capacities.check_name_availability(
location="eastus",
body=CheckNameAvailabilityRequest(
name="my-new-capacity",
type="Microsoft.Fabric/capacities"
)
)
if result.name_available:
print("Name is available")
else:
print(f"Name not available: {result.reason}")
```
## List Available SKUs
```python
skus = client.fabric_capacities.list_skus(
resource_group_name=resource_group,
capacity_name=capacity_name
)
for sku in skus:
print(f"SKU: {sku.name} - Tier: {sku.tier}")
```
## Client Operations
| Operation | Method |
|-----------|--------|
| `client.fabric_capacities` | Capacity CRUD operations |
| `client.operations` | List available operations |
## Fabric SKUs
| SKU | Description | CUs |
|-----|-------------|-----|
| `F2` | Entry level | 2 Capacity Units |
| `F4` | Small | 4 Capacity Units |
| `F8` | Medium | 8 Capacity Units |
| `F16` | Large | 16 Capacity Units |
| `F32` | X-Large | 32 Capacity Units |
| `F64` | 2X-Large | 64 Capacity Units |
| `F128` | 4X-Large | 128 Capacity Units |
| `F256` | 8X-Large | 256 Capacity Units |
| `F512` | 16X-Large | 512 Capacity Units |
| `F1024` | 32X-Large | 1024 Capacity Units |
| `F2048` | 64X-Large | 2048 Capacity Units |
## Capacity States
| State | Description |
|-------|-------------|
| `Active` | Capacity is running |
| `Paused` | Capacity is suspended (no billing) |
| `Provisioning` | Being created |
| `Updating` | Being modified |
| `Deleting` | Being removed |
| `Failed` | Operation failed |
## Long-Running Operations
All mutating operations are long-running (LRO). Use `.result()` to wait:
```python
# Synchronous wait
capacity = client.fabric_capacities.begin_create_or_update(...).result()
# Or poll manually
poller = client.fabric_capacities.begin_create_or_update(...)
while not poller.done():
print(f"Status: {poller.status()}")
time.sleep(5)
capacity = poller.result()
```
## Best Practices
1. **Pick sync OR async and stay consistent.** Do not mix `azure.xxx` sync clients with `azure.xxx.aio` async clients in the same call path. Choose one mode per module.
2. **Always use context managers for clients and async credentials.** Wrap every client in `with Client(...) as client:` (sync) or `async with Client(...) as client:` (async). For async `DefaultAzureCredential` from `azure.identity.aio`, also use `async with credential:` so tokens and transports are cleaned up.
3. **Use `DefaultAzureCredential`** for code that runs locally. Use a specific token credential for code that runs in Azure.
4. **Suspend unused capacities** to reduce costs
5. **Start with smaller SKUs** and scale up as needed
6. **Use tags** for cost tracking and organization
7. **Check name availability** before creating capacities
8. **Handle LRO properly** — don't assume immediate completion
9. **Set up capacity admins** — specify users who can manage workspaces
10. **Monitor capacity usage** via Azure Monitor metrics
## Reference Files
| File | Contents |
|------|----------|
| [references/capabilities.md](references/capabilities.md) | Additional non-hero capabilities, operation-group coverage, and production checklists. |
| [references/non-hero-scenarios.md](references/non-hero-scenarios.md) | Dedicated non-hero examples for secondary/advanced scenarios. |
© Microsoft · MIT · microsoft/skills