[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69ASBG9M5JMQK8VZJXHGZCB":3,"skill-same:01M69ASBG9M5JMQK8VZJXHGZCB":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M69ASBG9M5JMQK8VZJXHGZCB","azure-identity-py",null,"Azure Identity SDK for Python authentication with Microsoft Entra ID. Use for DefaultAzureCredential, managed identity, service principals, and token caching.\nTriggers: \"azure-identity\", \"DefaultAzureCredential\", \"authentication\", \"managed identity\", \"service principal\", \"credential\".","microsoft\u002Fskills","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69AJYYW4E1RMSYCQDJ4FJSH",3202,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-sdk-python\u002Fskills\u002Fazure-identity-py\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,9,35],"identity","azure","azure identity py","credential","managed","for","with","id","triggers","service","token","caching","python","use","authentication","entra id","sdk","2026-11-10 10:12:30",false,"---\nname: azure-identity-py\ndescription: |\n  Azure Identity SDK for Python authentication with Microsoft Entra ID. Use for DefaultAzureCredential, managed identity, service principals, and token caching.\n  Triggers: \"azure-identity\", \"DefaultAzureCredential\", \"authentication\", \"managed identity\", \"service principal\", \"credential\".\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: azure-identity\n---\n\n# Azure Identity library for Python\n\nAuthentication library for Azure SDK clients using Microsoft Entra ID.\n\nUse this skill when:\n- An app needs to authenticate to Azure services from Python\n- You need `DefaultAzureCredential` for local dev + Azure deployment\n- You need `ManagedIdentityCredential` for Azure-hosted workloads\n- You need service principal auth with secret or certificate\n- You need direct token acquisition with `get_token()`\n- You need to troubleshoot credential chain failures\n\n## Installation\n\n```bash\npip install azure-identity\n```\n\nFor VS Code or broker-based desktop auth:\n\n```bash\npip install azure-identity-broker\n```\n\n## Python Version\n\n`azure-identity` supports Python 3.9+.\n\n## Environment Variables\n\n```bash\n# Service principal with client secret\nAZURE_TENANT_ID=\u003Cyour-tenant-id>\nAZURE_CLIENT_ID=\u003Cyour-client-id>\nAZURE_CLIENT_SECRET=\u003Cyour-client-secret>\n\n# Service principal with certificate\nAZURE_TENANT_ID=\u003Cyour-tenant-id>\nAZURE_CLIENT_ID=\u003Cyour-client-id>\nAZURE_CLIENT_CERTIFICATE_PATH=\u002Fpath\u002Fto\u002Fcert.pem\nAZURE_CLIENT_CERTIFICATE_PASSWORD=\u003Coptional-password>\n\n# Authority (sovereign clouds)\nAZURE_AUTHORITY_HOST=login.microsoftonline.com  # Default; or login.chinacloudapi.cn, login.microsoftonline.us\n\n# User-assigned managed identity\nAZURE_CLIENT_ID=\u003Cmanaged-identity-client-id>\n\n# Credential selection (new)\nAZURE_TOKEN_CREDENTIALS=dev|prod|\u003Ccredential-name>  # Optional, restricts DAC chain\n```\n\n## Authentication & Lifecycle\n\n> **? Two rules apply to every code sample below:**\n>\n> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI \u002F VS Code \u002F Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account\u002FAPI keys — they bypass Entra audit and rotation.\n>    - Local dev: `DefaultAzureCredential` works as-is.\n>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>`) to constrain the credential chain to production-safe credentials.\n> 2. **Wrap credentials and clients in context managers** when they own token caches \u002F transports:\n>    - Sync: `with DefaultAzureCredential() as credential:`\n>    - Async: `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)\n>\n> Snippets may abbreviate this setup, but production code should always follow both rules.\n\n### DefaultAzureCredential\n\nThe recommended credential for most scenarios. Tries multiple authentication methods in order:\n\n```python\nfrom azure.identity import DefaultAzureCredential\nfrom azure.storage.blob import BlobServiceClient\n\n# Works in local dev AND production without code changes\ncredential = DefaultAzureCredential()\n\nwith BlobServiceClient(\n    account_url=\"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\",\n    credential=credential\n) as client:\n    containers = list(client.list_containers())\n```\n\n### Credential Chain Order\n\nSee [DefaultAzureCredential overview](https:\u002F\u002Faka.ms\u002Fazsdk\u002Fpython\u002Fidentity\u002Fcredential-chains#defaultazurecredential-overview) for the current credential chain order and defaults.\n\n### Customizing DefaultAzureCredential\n\n```python\n# Exclude credentials you don't need\ncredential = DefaultAzureCredential(\n    exclude_environment_credential=True,\n    exclude_shared_token_cache_credential=True,\n    managed_identity_client_id=\"\u003Cuser-assigned-mi-client-id>\"  # For user-assigned MI (also accepts object ID or resource ID)\n)\n\n# Enable interactive browser (disabled by default)\ncredential = DefaultAzureCredential(\n    exclude_interactive_browser_credential=False\n)\n\n# Set subprocess timeout for CLI-based credentials (default: 10s)\ncredential = DefaultAzureCredential(process_timeout=30)\n\n# Require AZURE_TOKEN_CREDENTIALS env var to be set\ncredential = DefaultAzureCredential(require_envvar=True)\n```\n\n### Exclude Parameters\n\n| Parameter | Default | Effect |\n|-----------|---------|--------|\n| `exclude_environment_credential` | False | Skip env-var-based auth |\n| `exclude_workload_identity_credential` | False | Skip Kubernetes workload identity |\n| `exclude_managed_identity_credential` | False | Skip managed identity |\n| `exclude_shared_token_cache_credential` | False | Skip shared token cache |\n| `exclude_visual_studio_code_credential` | False | Skip VS Code credential |\n| `exclude_cli_credential` | False | Skip Azure CLI |\n| `exclude_powershell_credential` | False | Skip Azure PowerShell |\n| `exclude_developer_cli_credential` | False | Skip Azure Developer CLI |\n| `exclude_interactive_browser_credential` | **True** | Skip interactive browser |\n| `exclude_broker_credential` | False | Skip WAM broker |\n\n## get_bearer_token_provider\n\nHelper that wraps a credential into a callable returning a bearer token string. Essential for OpenAI SDK and other non-Azure-SDK clients:\n\n```python\nfrom azure.identity import DefaultAzureCredential, get_bearer_token_provider\n\ncredential = DefaultAzureCredential()\ntoken_provider = get_bearer_token_provider(\n    credential, \"https:\u002F\u002Fcognitiveservices.azure.com\u002F.default\"\n)\n\n# Use with OpenAI SDK\nfrom openai import AzureOpenAI\n\nwith AzureOpenAI(\n    azure_endpoint=\"https:\u002F\u002F\u003Cresource>.openai.azure.com\u002F\",\n    azure_ad_token_provider=token_provider,\n    api_version=\"2024-10-21\",\n) as client:\n    # response = client.chat.completions.create(...)\n    ...\n```\n\n## Credential Types\n\n### Credential Chains\n\n| Credential | Use Case |\n|------------|----------|\n| `DefaultAzureCredential` | Most scenarios — auto-detects environment |\n| `ChainedTokenCredential` | Custom credential chain with explicit ordering |\n\n### Azure-Hosted Applications\n\n| Credential | Use Case |\n|------------|----------|\n| `EnvironmentCredential` | Auth via AZURE_CLIENT_SECRET \u002F AZURE_CLIENT_CERTIFICATE_PATH env vars |\n| `ManagedIdentityCredential` | Azure VMs, App Service, Functions, AKS, Arc, Service Fabric |\n| `WorkloadIdentityCredential` | Kubernetes with Microsoft Entra Workload ID |\n\n### Service Principals\n\n| Credential | Use Case |\n|------------|----------|\n| `ClientSecretCredential` | Service principal with client secret |\n| `CertificateCredential` | Service principal with PEM\u002FPKCS12 certificate |\n| `ClientAssertionCredential` | Service principal with signed JWT assertion |\n| `AzurePipelinesCredential` | Azure Pipelines with workload identity federation |\n| `OnBehalfOfCredential` | Middle-tier on-behalf-of flow (delegated user identity) |\n\n### User Authentication\n\n| Credential | Use Case |\n|------------|----------|\n| `InteractiveBrowserCredential` | Interactive browser OAuth sign-in |\n| `DeviceCodeCredential` | Headless\u002FSSH device code flow |\n| `AuthorizationCodeCredential` | Previously obtained authorization code |\n\n### Developer Tools\n\n| Credential | Use Case |\n|------------|----------|\n| `AzureCliCredential` | `az login` |\n| `AzureDeveloperCliCredential` | `azd auth login` |\n| `AzurePowerShellCredential` | `Connect-AzAccount` |\n| `VisualStudioCodeCredential` | VS Code Azure Resources extension |\n\n## Specific Credential Examples\n\n### ManagedIdentityCredential\n\nFor Azure-hosted resources (VMs, App Service, Functions, AKS):\n\n```python\nfrom azure.identity import ManagedIdentityCredential\n\n# System-assigned managed identity\ncredential = ManagedIdentityCredential()\n\n# User-assigned managed identity (client_id, object_id, or resource_id)\ncredential = ManagedIdentityCredential(\n    client_id=\"\u003Cuser-assigned-mi-client-id>\"\n)\n# Also valid:\n# credential = ManagedIdentityCredential(object_id=\"\u003Cobject-id>\")\n# credential = ManagedIdentityCredential(resource_id=\"\u003Cresource-id>\")\n```\n\n### ClientSecretCredential\n\n```python\nimport os\nfrom azure.identity import ClientSecretCredential\n\ncredential = ClientSecretCredential(\n    tenant_id=os.environ[\"AZURE_TENANT_ID\"],\n    client_id=os.environ[\"AZURE_CLIENT_ID\"],\n    client_secret=os.environ[\"AZURE_CLIENT_SECRET\"],\n)\n```\n\n### CertificateCredential\n\n> **Note:** The class is `CertificateCredential`, NOT `ClientCertificateCredential`.\n\n```python\nfrom azure.identity import CertificateCredential\n\n# From file path\ncredential = CertificateCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    certificate_path=\"\u002Fpath\u002Fto\u002Fcert.pem\",\n)\n\n# From bytes with password\ncredential = CertificateCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    certificate_data=cert_bytes,\n    password=\"\u003Ccert-password>\",\n    send_certificate_chain=True,  # Required for SNI auth\n)\n```\n\n### AzureCliCredential\n\n```python\nfrom azure.identity import AzureCliCredential\n\ncredential = AzureCliCredential()\n# With tenant restriction\ncredential = AzureCliCredential(tenant_id=\"\u003Ctenant-id>\")\n```\n\n### ChainedTokenCredential\n\nCustom credential chain:\n\n```python\nfrom azure.identity import (\n    ChainedTokenCredential,\n    ManagedIdentityCredential,\n    AzureCliCredential,\n)\n\n# Try managed identity first, fall back to CLI\ncredential = ChainedTokenCredential(\n    ManagedIdentityCredential(client_id=\"\u003Cuser-assigned-mi-client-id>\"),\n    AzureCliCredential(),\n)\n```\n\n### WorkloadIdentityCredential\n\nFor Azure Kubernetes Service with workload identity:\n\n```python\nfrom azure.identity import WorkloadIdentityCredential\n\n# Reads from AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_FEDERATED_TOKEN_FILE\ncredential = WorkloadIdentityCredential()\n\n# Or explicit configuration\ncredential = WorkloadIdentityCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    token_file_path=\"\u002Fvar\u002Frun\u002Fsecrets\u002Fazure\u002Ftokens\u002Fazure-identity-token\",\n)\n```\n\n### DeviceCodeCredential\n\nFor headless devices (IoT, SSH, CLI tools):\n\n```python\nfrom azure.identity import DeviceCodeCredential\n\ncredential = DeviceCodeCredential()\n# Prints device code prompt to stdout by default\n\n# With custom prompt callback\ndef prompt_callback(verification_uri, user_code, expires_on):\n    print(f\"Go to {verification_uri} and enter code {user_code}\")\n\ncredential = DeviceCodeCredential(\n    client_id=\"\u003Cclient-id>\",\n    prompt_callback=prompt_callback,\n)\n```\n\n### InteractiveBrowserCredential\n\nFor interactive OAuth browser sign-in:\n\n```python\nfrom azure.identity import InteractiveBrowserCredential\n\ncredential = InteractiveBrowserCredential()\n\n# With specific tenant and client\ncredential = InteractiveBrowserCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n)\n```\n\n### OnBehalfOfCredential\n\nFor middle-tier services propagating user identity:\n\n```python\nfrom azure.identity import OnBehalfOfCredential\n\ncredential = OnBehalfOfCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    client_secret=\"\u003Cclient-secret>\",\n    user_assertion=\"\u003Caccess-token-from-client>\",\n)\n```\n\n### AzurePipelinesCredential\n\nFor Azure DevOps pipelines with workload identity federation:\n\n```python\nimport os\nfrom azure.identity import AzurePipelinesCredential\n\ncredential = AzurePipelinesCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    service_connection_id=\"\u003Cservice-connection-id>\",\n    system_access_token=os.environ[\"SYSTEM_ACCESSTOKEN\"],\n)\n```\n\n## Getting Tokens Directly\n\n```python\nfrom azure.identity import DefaultAzureCredential\n\nwith DefaultAzureCredential() as credential:\n    # Get token for a specific scope\n    token = credential.get_token(\"https:\u002F\u002Fmanagement.azure.com\u002F.default\")\n    print(f\"Token expires: {token.expires_on}\")\n\n    # For Azure Database for PostgreSQL\n    token = credential.get_token(\"https:\u002F\u002Fossrdbms-aad.database.windows.net\u002F.default\")\n```\n\n## Async Credentials\n\nAsync credentials are in `azure.identity.aio`. Always close them or use `async with`:\n\n```python\nfrom azure.identity.aio import DefaultAzureCredential\nfrom azure.storage.blob.aio import BlobServiceClient\n\nasync def main():\n    # Preferred: use async context manager for both credential and client\n    async with DefaultAzureCredential() as credential:\n        async with BlobServiceClient(\n            account_url=\"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\",\n            credential=credential,\n        ) as client:\n            # ... async operations\n            pass\n```\n\n> The async `get_bearer_token_provider` is at `azure.identity.aio.get_bearer_token_provider`.\n\n## Sovereign Clouds\n\nUse `AzureAuthorityHosts` or the `AZURE_AUTHORITY_HOST` env var:\n\n```python\nfrom azure.identity import DefaultAzureCredential, AzureAuthorityHosts\n\n# Azure Government\ncredential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)\n\n# Azure China\ncredential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_CHINA)\n```\n\n| Constant | Authority |\n|----------|-----------|\n| `AzureAuthorityHosts.AZURE_PUBLIC_CLOUD` | `login.microsoftonline.com` (default) |\n| `AzureAuthorityHosts.AZURE_GOVERNMENT` | `login.microsoftonline.us` |\n| `AzureAuthorityHosts.AZURE_CHINA` | `login.chinacloudapi.cn` |\n\n## Persistent Token Caching\n\nOpt-in disk-based caching with `TokenCachePersistenceOptions`:\n\n```python\nfrom azure.identity import DefaultAzureCredential, TokenCachePersistenceOptions\n\ncredential = DefaultAzureCredential(\n    cache_persistence_options=TokenCachePersistenceOptions()\n)\n\n# Allow unencrypted fallback (NOT recommended for production)\ncredential = DefaultAzureCredential(\n    cache_persistence_options=TokenCachePersistenceOptions(allow_unencrypted_storage=True)\n)\n```\n\nStorage: Windows (DPAPI), macOS (Keychain), Linux (Keyring).\n\n## Multi-Tenant Support\n\nAllow token acquisition for additional tenants beyond the configured one:\n\n```python\nfrom azure.identity import ClientSecretCredential\n\ncredential = ClientSecretCredential(\n    tenant_id=\"\u003Chome-tenant>\",\n    client_id=\"\u003Cclient-id>\",\n    client_secret=\"\u003Csecret>\",\n    additionally_allowed_tenants=[\"\u003Cother-tenant>\", \"*\"],  # \"*\" allows any tenant\n)\n```\n\n## Error Handling\n\n```python\nfrom azure.identity import DefaultAzureCredential, CredentialUnavailableError\nfrom azure.core.exceptions import ClientAuthenticationError\n\nwith DefaultAzureCredential() as credential:\n    try:\n        token = credential.get_token(\"https:\u002F\u002Fmanagement.azure.com\u002F.default\")\n    except CredentialUnavailableError:\n        # No credential in the chain could attempt authentication\n        pass\n    except ClientAuthenticationError as e:\n        # Authentication was attempted but failed\n        # e.message contains details from each credential in the chain\n        pass\n```\n\n## Logging\n\nEnable authentication logging for debugging:\n\n```python\nimport logging\n\n# Enable verbose Azure Identity logging\nlogging.basicConfig(level=logging.DEBUG)\nlogger = logging.getLogger(\"azure.identity\")\nlogger.setLevel(logging.DEBUG)\n```\n\n```bash\n# Or via environment variable\nAZURE_LOG_LEVEL=debug\n```\n\n## Credential Selection Matrix\n\n| Environment | Recommended Credential |\n|-------------|------------------------|\n| Local Development | `DefaultAzureCredential` (uses Azure CLI) |\n| Azure App Service | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Functions | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Kubernetes Service | `WorkloadIdentityCredential` |\n| Azure VMs | `DefaultAzureCredential` (uses Managed Identity) |\n| CI\u002FCD Pipeline | `EnvironmentCredential` or `AzurePipelinesCredential` |\n| Desktop App | `InteractiveBrowserCredential` |\n| CLI \u002F Headless Tool | `DeviceCodeCredential` |\n| Middle-tier Service | `OnBehalfOfCredential` |\n\n## Best Practices\n\n1. **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.\n2. **Use credentials as context managers** (`with DefaultAzureCredential() as credential:`) when they own token caches \u002F HTTP transports you want cleaned up; for async, use `async with` on credentials from `azure.identity.aio`.\n3. **Use `DefaultAzureCredential`** for code that runs locally. Use a specific token credential for code that runs in Azure.\n4. **Never hardcode credentials** — use environment variables or managed identity\n5. **Prefer managed identity** in production Azure deployments\n6. **Use `get_bearer_token_provider`** for non-Azure-SDK clients (OpenAI, REST APIs)\n7. **Use `ChainedTokenCredential`** when you need a custom credential order\n8. **Set `AZURE_CLIENT_ID`** for user-assigned managed identities (object ID and resource ID are also valid identifiers)\n9. **Exclude unused credentials** to speed up `DefaultAzureCredential` authentication\n10. **Use `CertificateCredential`** (not `ClientCertificateCredential` — that name doesn't exist)\n11. **Enable `cache_persistence_options`** for long-running services to reduce token requests\n12. **Reuse credential instances** — same credential can be shared across multiple clients\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| PyPI Package | https:\u002F\u002Fpypi.org\u002Fproject\u002Fazure-identity\u002F |\n| API Reference | https:\u002F\u002Flearn.microsoft.com\u002Fpython\u002Fapi\u002Fazure-identity |\n| GitHub Source | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-python\u002Ftree\u002Fmain\u002Fsdk\u002Fidentity\u002Fazure-identity |\n| Credential Chains | https:\u002F\u002Faka.ms\u002Fazsdk\u002Fpython\u002Fidentity\u002Fcredential-chains |\n\n## Reference Files\n\n| File | Contents |\n|------|----------|\n| [references\u002Fcapabilities.md](references\u002Fcapabilities.md) | Additional non-hero capabilities, operation-group coverage, and production checklists. |\n| [references\u002Fnon-hero-scenarios.md](references\u002Fnon-hero-scenarios.md) | Dedicated non-hero examples for secondary\u002Fadvanced scenarios. |\n","# Azure Identity library for Python\n\nAuthentication library for Azure SDK clients using Microsoft Entra ID.\n\nUse this skill when:\n- An app needs to authenticate to Azure services from Python\n- You need `DefaultAzureCredential` for local dev + Azure deployment\n- You need `ManagedIdentityCredential` for Azure-hosted workloads\n- You need service principal auth with secret or certificate\n- You need direct token acquisition with `get_token()`\n- You need to troubleshoot credential chain failures\n\n## Installation\n\n```bash\npip install azure-identity\n```\n\nFor VS Code or broker-based desktop auth:\n\n```bash\npip install azure-identity-broker\n```\n\n## Python Version\n\n`azure-identity` supports Python 3.9+.\n\n## Environment Variables\n\n```bash\n# Service principal with client secret\nAZURE_TENANT_ID=\u003Cyour-tenant-id>\nAZURE_CLIENT_ID=\u003Cyour-client-id>\nAZURE_CLIENT_SECRET=\u003Cyour-client-secret>\n\n# Service principal with certificate\nAZURE_TENANT_ID=\u003Cyour-tenant-id>\nAZURE_CLIENT_ID=\u003Cyour-client-id>\nAZURE_CLIENT_CERTIFICATE_PATH=\u002Fpath\u002Fto\u002Fcert.pem\nAZURE_CLIENT_CERTIFICATE_PASSWORD=\u003Coptional-password>\n\n# Authority (sovereign clouds)\nAZURE_AUTHORITY_HOST=login.microsoftonline.com  # Default; or login.chinacloudapi.cn, login.microsoftonline.us\n\n# User-assigned managed identity\nAZURE_CLIENT_ID=\u003Cmanaged-identity-client-id>\n\n# Credential selection (new)\nAZURE_TOKEN_CREDENTIALS=dev|prod|\u003Ccredential-name>  # Optional, restricts DAC chain\n```\n\n## Authentication & Lifecycle\n\n> **? Two rules apply to every code sample below:**\n>\n> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI \u002F VS Code \u002F Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account\u002FAPI keys — they bypass Entra audit and rotation.\n>    - Local dev: `DefaultAzureCredential` works as-is.\n>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>`) to constrain the credential chain to production-safe credentials.\n> 2. **Wrap credentials and clients in context managers** when they own token caches \u002F transports:\n>    - Sync: `with DefaultAzureCredential() as credential:`\n>    - Async: `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)\n>\n> Snippets may abbreviate this setup, but production code should always follow both rules.\n\n### DefaultAzureCredential\n\nThe recommended credential for most scenarios. Tries multiple authentication methods in order:\n\n```python\nfrom azure.identity import DefaultAzureCredential\nfrom azure.storage.blob import BlobServiceClient\n\n# Works in local dev AND production without code changes\ncredential = DefaultAzureCredential()\n\nwith BlobServiceClient(\n    account_url=\"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\",\n    credential=credential\n) as client:\n    containers = list(client.list_containers())\n```\n\n### Credential Chain Order\n\nSee [DefaultAzureCredential overview](https:\u002F\u002Faka.ms\u002Fazsdk\u002Fpython\u002Fidentity\u002Fcredential-chains#defaultazurecredential-overview) for the current credential chain order and defaults.\n\n### Customizing DefaultAzureCredential\n\n```python\n# Exclude credentials you don't need\ncredential = DefaultAzureCredential(\n    exclude_environment_credential=True,\n    exclude_shared_token_cache_credential=True,\n    managed_identity_client_id=\"\u003Cuser-assigned-mi-client-id>\"  # For user-assigned MI (also accepts object ID or resource ID)\n)\n\n# Enable interactive browser (disabled by default)\ncredential = DefaultAzureCredential(\n    exclude_interactive_browser_credential=False\n)\n\n# Set subprocess timeout for CLI-based credentials (default: 10s)\ncredential = DefaultAzureCredential(process_timeout=30)\n\n# Require AZURE_TOKEN_CREDENTIALS env var to be set\ncredential = DefaultAzureCredential(require_envvar=True)\n```\n\n### Exclude Parameters\n\n| Parameter | Default | Effect |\n|-----------|---------|--------|\n| `exclude_environment_credential` | False | Skip env-var-based auth |\n| `exclude_workload_identity_credential` | False | Skip Kubernetes workload identity |\n| `exclude_managed_identity_credential` | False | Skip managed identity |\n| `exclude_shared_token_cache_credential` | False | Skip shared token cache |\n| `exclude_visual_studio_code_credential` | False | Skip VS Code credential |\n| `exclude_cli_credential` | False | Skip Azure CLI |\n| `exclude_powershell_credential` | False | Skip Azure PowerShell |\n| `exclude_developer_cli_credential` | False | Skip Azure Developer CLI |\n| `exclude_interactive_browser_credential` | **True** | Skip interactive browser |\n| `exclude_broker_credential` | False | Skip WAM broker |\n\n## get_bearer_token_provider\n\nHelper that wraps a credential into a callable returning a bearer token string. Essential for OpenAI SDK and other non-Azure-SDK clients:\n\n```python\nfrom azure.identity import DefaultAzureCredential, get_bearer_token_provider\n\ncredential = DefaultAzureCredential()\ntoken_provider = get_bearer_token_provider(\n    credential, \"https:\u002F\u002Fcognitiveservices.azure.com\u002F.default\"\n)\n\n# Use with OpenAI SDK\nfrom openai import AzureOpenAI\n\nwith AzureOpenAI(\n    azure_endpoint=\"https:\u002F\u002F\u003Cresource>.openai.azure.com\u002F\",\n    azure_ad_token_provider=token_provider,\n    api_version=\"2024-10-21\",\n) as client:\n    # response = client.chat.completions.create(...)\n    ...\n```\n\n## Credential Types\n\n### Credential Chains\n\n| Credential | Use Case |\n|------------|----------|\n| `DefaultAzureCredential` | Most scenarios — auto-detects environment |\n| `ChainedTokenCredential` | Custom credential chain with explicit ordering |\n\n### Azure-Hosted Applications\n\n| Credential | Use Case |\n|------------|----------|\n| `EnvironmentCredential` | Auth via AZURE_CLIENT_SECRET \u002F AZURE_CLIENT_CERTIFICATE_PATH env vars |\n| `ManagedIdentityCredential` | Azure VMs, App Service, Functions, AKS, Arc, Service Fabric |\n| `WorkloadIdentityCredential` | Kubernetes with Microsoft Entra Workload ID |\n\n### Service Principals\n\n| Credential | Use Case |\n|------------|----------|\n| `ClientSecretCredential` | Service principal with client secret |\n| `CertificateCredential` | Service principal with PEM\u002FPKCS12 certificate |\n| `ClientAssertionCredential` | Service principal with signed JWT assertion |\n| `AzurePipelinesCredential` | Azure Pipelines with workload identity federation |\n| `OnBehalfOfCredential` | Middle-tier on-behalf-of flow (delegated user identity) |\n\n### User Authentication\n\n| Credential | Use Case |\n|------------|----------|\n| `InteractiveBrowserCredential` | Interactive browser OAuth sign-in |\n| `DeviceCodeCredential` | Headless\u002FSSH device code flow |\n| `AuthorizationCodeCredential` | Previously obtained authorization code |\n\n### Developer Tools\n\n| Credential | Use Case |\n|------------|----------|\n| `AzureCliCredential` | `az login` |\n| `AzureDeveloperCliCredential` | `azd auth login` |\n| `AzurePowerShellCredential` | `Connect-AzAccount` |\n| `VisualStudioCodeCredential` | VS Code Azure Resources extension |\n\n## Specific Credential Examples\n\n### ManagedIdentityCredential\n\nFor Azure-hosted resources (VMs, App Service, Functions, AKS):\n\n```python\nfrom azure.identity import ManagedIdentityCredential\n\n# System-assigned managed identity\ncredential = ManagedIdentityCredential()\n\n# User-assigned managed identity (client_id, object_id, or resource_id)\ncredential = ManagedIdentityCredential(\n    client_id=\"\u003Cuser-assigned-mi-client-id>\"\n)\n# Also valid:\n# credential = ManagedIdentityCredential(object_id=\"\u003Cobject-id>\")\n# credential = ManagedIdentityCredential(resource_id=\"\u003Cresource-id>\")\n```\n\n### ClientSecretCredential\n\n```python\nimport os\nfrom azure.identity import ClientSecretCredential\n\ncredential = ClientSecretCredential(\n    tenant_id=os.environ[\"AZURE_TENANT_ID\"],\n    client_id=os.environ[\"AZURE_CLIENT_ID\"],\n    client_secret=os.environ[\"AZURE_CLIENT_SECRET\"],\n)\n```\n\n### CertificateCredential\n\n> **Note:** The class is `CertificateCredential`, NOT `ClientCertificateCredential`.\n\n```python\nfrom azure.identity import CertificateCredential\n\n# From file path\ncredential = CertificateCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    certificate_path=\"\u002Fpath\u002Fto\u002Fcert.pem\",\n)\n\n# From bytes with password\ncredential = CertificateCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    certificate_data=cert_bytes,\n    password=\"\u003Ccert-password>\",\n    send_certificate_chain=True,  # Required for SNI auth\n)\n```\n\n### AzureCliCredential\n\n```python\nfrom azure.identity import AzureCliCredential\n\ncredential = AzureCliCredential()\n# With tenant restriction\ncredential = AzureCliCredential(tenant_id=\"\u003Ctenant-id>\")\n```\n\n### ChainedTokenCredential\n\nCustom credential chain:\n\n```python\nfrom azure.identity import (\n    ChainedTokenCredential,\n    ManagedIdentityCredential,\n    AzureCliCredential,\n)\n\n# Try managed identity first, fall back to CLI\ncredential = ChainedTokenCredential(\n    ManagedIdentityCredential(client_id=\"\u003Cuser-assigned-mi-client-id>\"),\n    AzureCliCredential(),\n)\n```\n\n### WorkloadIdentityCredential\n\nFor Azure Kubernetes Service with workload identity:\n\n```python\nfrom azure.identity import WorkloadIdentityCredential\n\n# Reads from AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_FEDERATED_TOKEN_FILE\ncredential = WorkloadIdentityCredential()\n\n# Or explicit configuration\ncredential = WorkloadIdentityCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    token_file_path=\"\u002Fvar\u002Frun\u002Fsecrets\u002Fazure\u002Ftokens\u002Fazure-identity-token\",\n)\n```\n\n### DeviceCodeCredential\n\nFor headless devices (IoT, SSH, CLI tools):\n\n```python\nfrom azure.identity import DeviceCodeCredential\n\ncredential = DeviceCodeCredential()\n# Prints device code prompt to stdout by default\n\n# With custom prompt callback\ndef prompt_callback(verification_uri, user_code, expires_on):\n    print(f\"Go to {verification_uri} and enter code {user_code}\")\n\ncredential = DeviceCodeCredential(\n    client_id=\"\u003Cclient-id>\",\n    prompt_callback=prompt_callback,\n)\n```\n\n### InteractiveBrowserCredential\n\nFor interactive OAuth browser sign-in:\n\n```python\nfrom azure.identity import InteractiveBrowserCredential\n\ncredential = InteractiveBrowserCredential()\n\n# With specific tenant and client\ncredential = InteractiveBrowserCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n)\n```\n\n### OnBehalfOfCredential\n\nFor middle-tier services propagating user identity:\n\n```python\nfrom azure.identity import OnBehalfOfCredential\n\ncredential = OnBehalfOfCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    client_secret=\"\u003Cclient-secret>\",\n    user_assertion=\"\u003Caccess-token-from-client>\",\n)\n```\n\n### AzurePipelinesCredential\n\nFor Azure DevOps pipelines with workload identity federation:\n\n```python\nimport os\nfrom azure.identity import AzurePipelinesCredential\n\ncredential = AzurePipelinesCredential(\n    tenant_id=\"\u003Ctenant-id>\",\n    client_id=\"\u003Cclient-id>\",\n    service_connection_id=\"\u003Cservice-connection-id>\",\n    system_access_token=os.environ[\"SYSTEM_ACCESSTOKEN\"],\n)\n```\n\n## Getting Tokens Directly\n\n```python\nfrom azure.identity import DefaultAzureCredential\n\nwith DefaultAzureCredential() as credential:\n    # Get token for a specific scope\n    token = credential.get_token(\"https:\u002F\u002Fmanagement.azure.com\u002F.default\")\n    print(f\"Token expires: {token.expires_on}\")\n\n    # For Azure Database for PostgreSQL\n    token = credential.get_token(\"https:\u002F\u002Fossrdbms-aad.database.windows.net\u002F.default\")\n```\n\n## Async Credentials\n\nAsync credentials are in `azure.identity.aio`. Always close them or use `async with`:\n\n```python\nfrom azure.identity.aio import DefaultAzureCredential\nfrom azure.storage.blob.aio import BlobServiceClient\n\nasync def main():\n    # Preferred: use async context manager for both credential and client\n    async with DefaultAzureCredential() as credential:\n        async with BlobServiceClient(\n            account_url=\"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\",\n            credential=credential,\n        ) as client:\n            # ... async operations\n            pass\n```\n\n> The async `get_bearer_token_provider` is at `azure.identity.aio.get_bearer_token_provider`.\n\n## Sovereign Clouds\n\nUse `AzureAuthorityHosts` or the `AZURE_AUTHORITY_HOST` env var:\n\n```python\nfrom azure.identity import DefaultAzureCredential, AzureAuthorityHosts\n\n# Azure Government\ncredential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)\n\n# Azure China\ncredential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_CHINA)\n```\n\n| Constant | Authority |\n|----------|-----------|\n| `AzureAuthorityHosts.AZURE_PUBLIC_CLOUD` | `login.microsoftonline.com` (default) |\n| `AzureAuthorityHosts.AZURE_GOVERNMENT` | `login.microsoftonline.us` |\n| `AzureAuthorityHosts.AZURE_CHINA` | `login.chinacloudapi.cn` |\n\n## Persistent Token Caching\n\nOpt-in disk-based caching with `TokenCachePersistenceOptions`:\n\n```python\nfrom azure.identity import DefaultAzureCredential, TokenCachePersistenceOptions\n\ncredential = DefaultAzureCredential(\n    cache_persistence_options=TokenCachePersistenceOptions()\n)\n\n# Allow unencrypted fallback (NOT recommended for production)\ncredential = DefaultAzureCredential(\n    cache_persistence_options=TokenCachePersistenceOptions(allow_unencrypted_storage=True)\n)\n```\n\nStorage: Windows (DPAPI), macOS (Keychain), Linux (Keyring).\n\n## Multi-Tenant Support\n\nAllow token acquisition for additional tenants beyond the configured one:\n\n```python\nfrom azure.identity import ClientSecretCredential\n\ncredential = ClientSecretCredential(\n    tenant_id=\"\u003Chome-tenant>\",\n    client_id=\"\u003Cclient-id>\",\n    client_secret=\"\u003Csecret>\",\n    additionally_allowed_tenants=[\"\u003Cother-tenant>\", \"*\"],  # \"*\" allows any tenant\n)\n```\n\n## Error Handling\n\n```python\nfrom azure.identity import DefaultAzureCredential, CredentialUnavailableError\nfrom azure.core.exceptions import ClientAuthenticationError\n\nwith DefaultAzureCredential() as credential:\n    try:\n        token = credential.get_token(\"https:\u002F\u002Fmanagement.azure.com\u002F.default\")\n    except CredentialUnavailableError:\n        # No credential in the chain could attempt authentication\n        pass\n    except ClientAuthenticationError as e:\n        # Authentication was attempted but failed\n        # e.message contains details from each credential in the chain\n        pass\n```\n\n## Logging\n\nEnable authentication logging for debugging:\n\n```python\nimport logging\n\n# Enable verbose Azure Identity logging\nlogging.basicConfig(level=logging.DEBUG)\nlogger = logging.getLogger(\"azure.identity\")\nlogger.setLevel(logging.DEBUG)\n```\n\n```bash\n# Or via environment variable\nAZURE_LOG_LEVEL=debug\n```\n\n## Credential Selection Matrix\n\n| Environment | Recommended Credential |\n|-------------|------------------------|\n| Local Development | `DefaultAzureCredential` (uses Azure CLI) |\n| Azure App Service | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Functions | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Kubernetes Service | `WorkloadIdentityCredential` |\n| Azure VMs | `DefaultAzureCredential` (uses Managed Identity) |\n| CI\u002FCD Pipeline | `EnvironmentCredential` or `AzurePipelinesCredential` |\n| Desktop App | `InteractiveBrowserCredential` |\n| CLI \u002F Headless Tool | `DeviceCodeCredential` |\n| Middle-tier Service | `OnBehalfOfCredential` |\n\n## Best Practices\n\n1. **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.\n2. **Use credentials as context managers** (`with DefaultAzureCredential() as credential:`) when they own token caches \u002F HTTP transports you want cleaned up; for async, use `async with` on credentials from `azure.identity.aio`.\n3. **Use `DefaultAzureCredential`** for code that runs locally. Use a specific token credential for code that runs in Azure.\n4. **Never hardcode credentials** — use environment variables or managed identity\n5. **Prefer managed identity** in production Azure deployments\n6. **Use `get_bearer_token_provider`** for non-Azure-SDK clients (OpenAI, REST APIs)\n7. **Use `ChainedTokenCredential`** when you need a custom credential order\n8. **Set `AZURE_CLIENT_ID`** for user-assigned managed identities (object ID and resource ID are also valid identifiers)\n9. **Exclude unused credentials** to speed up `DefaultAzureCredential` authentication\n10. **Use `CertificateCredential`** (not `ClientCertificateCredential` — that name doesn't exist)\n11. **Enable `cache_persistence_options`** for long-running services to reduce token requests\n12. **Reuse credential instances** — same credential can be shared across multiple clients\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| PyPI Package | https:\u002F\u002Fpypi.org\u002Fproject\u002Fazure-identity\u002F |\n| API Reference | https:\u002F\u002Flearn.microsoft.com\u002Fpython\u002Fapi\u002Fazure-identity |\n| GitHub Source | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-python\u002Ftree\u002Fmain\u002Fsdk\u002Fidentity\u002Fazure-identity |\n| Credential Chains | https:\u002F\u002Faka.ms\u002Fazsdk\u002Fpython\u002Fidentity\u002Fcredential-chains |\n\n## Reference Files\n\n| File | Contents |\n|------|----------|\n| [references\u002Fcapabilities.md](references\u002Fcapabilities.md) | Additional non-hero capabilities, operation-group coverage, and production checklists. |\n| [references\u002Fnon-hero-scenarios.md](references\u002Fnon-hero-scenarios.md) | Dedicated non-hero examples for secondary\u002Fadvanced scenarios. |\n",{"name":5,"license":15,"metadata":41,"description":44},{"author":12,"package":42,"version":43},"azure-identity","1.0.0","Azure Identity SDK for Python authentication with Microsoft Entra ID. Use for DefaultAzureCredential, managed identity, service principals, and token caching.\nTriggers: \"azure-identity\", \"DefaultAzureCredential\", \"authentication\", \"managed identity\", \"service principal\", \"credential\".\n","main","3f5b461b2314e01c400564051e92469114c5b68f",".github\u002Fplugins\u002Fazure-sdk-python\u002Fskills\u002Fazure-identity-py",368,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","https:\u002F\u002Fmicrosoft.github.io\u002Fskills\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-14 02:08:41",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add microsoft\u002Fskills --skill azure-identity-py",{"tool":61,"command":62},"bunx","bunx skills add microsoft\u002Fskills --skill azure-identity-py",{"tool":64,"command":65},"pnpm","pnpm dlx skills add microsoft\u002Fskills --skill azure-identity-py","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-sdk-python\u002Fskills\u002Fazure-identity-py\u002FSKILL.md",true,[69,75],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fcapabilities.md","REFERENCE","参考文档",2234,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-sdk-python\u002Fskills\u002Fazure-identity-py\u002Freferences\u002Fcapabilities.md",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fnon-hero-scenarios.md",4355,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-sdk-python\u002Fskills\u002Fazure-identity-py\u002Freferences\u002Fnon-hero-scenarios.md",[80,106,143,170,190,228],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":91,"publishedAt":36},"01M69B4JCRQV5SPXAFCKXQRV0H","skill-creator","Guide for creating effective skills for AI coding agents working with Azure SDKs and Microsoft Foundry services. Use when creating new skills or updating existing skills.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fskill-creator\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[92,93,94,9,95,96,97,20,98,99,100,32,101,25,102,24,103,104,105],"skill creator","creator","coding agents","foundry","microsoft foundry","ai coding agents","services","coding","guide","ai coding","sdks","Existing","when","new",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":122,"publishedAt":36},"01M69B4FD57V1MYKRWAJJECTZ7","podcast-generation","Generate AI-powered podcast-style audio narratives using Azure OpenAI's GPT Realtime Mini model via WebSocket. Use when building text-to-speech features, audio narrative generation, podcast creation from content, or integrating with Azure OpenAI Realtime API for real audio output. Covers full-stack implementation from React frontend to Python FastAPI backend with WebSocket streaming.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpodcast-generation\u002FSKILL.md",[112,115,118,121],{"categoryNo":113,"categoryName":114,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":116,"categoryName":117,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":119,"categoryName":120,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[123,124,125,126,31,127,128,20,129,130,131,132,133,134,135,136,137,138,139,140,141,104,142],"podcast generation","podcast","generation","frontend","react","realtime","azure openai","generate","streaming","api","Audio","stack","text","model","fastapi","creation","python fastapi","narrative","features","fastapi backend",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":150,"publishedAt":36},"01M69B4CYPM5SESY5ZWEFDXEQZ","microsoft-docs","Understand Microsoft technologies by querying official documentation. Use whenever the user asks how something works, wants tutorials, needs configuration options, limits, quotas, or best practices for any Microsoft technology (Azure, .NET, M365, Windows, Power Platform, etc.)—even if they don't mention \"docs.\" If the question is about understanding a concept rather than writing code, this is the right skill.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[149],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[151,9,152,153,154,155,156,157,158,159,160,20,161,162,163,32,164,58,165,166,167,168,169,24],"docs","microsoft docs","MCP","writing","cli","mcp server","windows","power platform","official","documentation","learn","best practices","question","power","back","technology","platform","learn mcp","concept",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":177,"publishedAt":36},"01M69B49C3YPD1ZJ3NC0HPCY58","mcp-builder","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP), Node\u002FTypeScript (MCP SDK), or C#\u002F.NET (Microsoft MCP SDK).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmcp-builder\u002FSKILL.md",[176],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[153,178,179,180,31,181,35,182,9,183,184,136,185,186,100,32,187,188,189,25,24,104],"mcp builder","builder","typescript","llms","model context protocol","fastmcp","Tools","node","context","integrate","mcp sdk","building mcp servers",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":208,"publishedAt":36},"01M69B467A7CDMFQ0T6Q0ZA12Q","kql","KQL language expertise for writing correct, efficient Kusto Query Language queries. Covers syntax gotchas, join patterns, dynamic types, datetime pitfalls, regex patterns, serialization, memory management, result-size discipline, and advanced functions (geo, vector, graph). USE THIS SKILL whenever writing, debugging, or reviewing KQL queries — even simple ones — because the gotchas section prevents the most common errors that waste tool calls and cause expensive retry cascades. Trigger on: KQL, Kusto, ADX, Azure Data Explorer, Fabric Real-Time Intelligence, EventHouse, Log Analytics, log analysis, data exploration, time series, anomaly detection, summarize, where clause, join, extend, project, let statement, parse operator, extract function, any mention of pipe-forward query syntax.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fkql\u002FSKILL.md",[196,199,200,205],{"categoryNo":197,"categoryName":198,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},{"categoryNo":201,"categoryName":202,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",{"categoryNo":206,"categoryName":207,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000036","内容创作者",[192,154,209,210,211,20,212,213,214,215,216,217,218,219,220,221,222,223,224,24,225,226,227],"summarize","memory","analytics","vector","time series","tool","discipline","log","geo","exploration","pipe","time","project","regex","join","datetime","section","anomaly","parse",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":232,"categories":233,"keywords":234,"publishedAt":36},"01M69B44HJQ7897EZ7NE7DWQX3","github-issue-creator","Convert raw notes, error logs, voice dictation, or screenshots into crisp GitHub-flavored markdown issue reports. Use when the user pastes bug info, error messages, or informal descriptions and wants a structured GitHub issue. Supports images\u002FGIFs for visual evidence.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgithub-issue-creator\u002FSKILL.md",[],[235,236,237,238,93,239,240,241,242,243,244,245,32,246,247,248,249,250,251,24,104],"github","github issue creator","github issue","issue","issue creator","screenshots","notes","logs","error messages","messages","convert","evidence","reports","images","info","visual","error"]