AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides comprehensive guidance on Azure Storage services, covering Blob Storage, File Shares, Queue Storage, Table Storage, and Data Lake. It offers practical information on storage account tiers, blob access tiers (Hot, Cool, Cold, Archive), and redundancy options. The skill also includes instructions for using the Azure MCP server for direct interaction, CLI fallback commands, and links to language-specific SDK documentation for .NET, Java, JavaScript, Python, Go, and Rust.
What it does
- Explains Azure Storage service types and their specific use cases.
- Provides MCP tool commands for listing and managing storage accounts, containers, and blobs.
- Offers CLI commands for common storage operations as a fallback.
- Details blob access tiers and storage redundancy options.
- Provides links to SDK quick-start guides for multiple programming languages.
- Includes best practices for authentication using Azure Identity.
When to use it
- When you need to understand which Azure storage service fits your data needs.
- When you are setting up or managing Azure storage accounts, containers, or blobs.
- When you need to choose the appropriate access tier for cost and performance optimization.
- When you are developing applications that interact with Azure Storage programmatically.
- When you need to troubleshoot or perform basic storage operations via CLI.
Advantages
- Centralizes information on storage tiers, redundancy, and service selection.
- Provides clear paths for both MCP-enabled and CLI-based workflows.
- Includes language-specific SDK references for rapid development.
- Promotes secure authentication patterns using managed identities.
Usage examples
- “What is the difference between Hot and Archive access tiers in Azure Blob Storage?”
- The agent explains the access frequency requirements and cost trade-offs for Hot versus Archive tiers, including the rehydration process for archived data.
- “How do I list the blobs in my Azure storage container using the MCP tool?”
- The agent provides the specific azure__storage command to list blobs, or guides the user to enable the Azure MCP if it is not currently active.
- “Show me how to upload a file to Azure Blob Storage using the Python SDK.”
- The agent provides a code snippet using the BlobServiceClient and DefaultAzureCredential, along with the necessary installation command for the Python SDK.
- “Which redundancy option should I choose for a development environment?”
- The agent recommends LRS (Locally-redundant storage) for dev/test environments based on the provided durability and use-case table.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/microsoft/azure-storage/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-storage.zip -d .agents/skills
Documentation by Microsoft
Azure Storage Services
Services
| Service | Use When | MCP Tools | CLI |
|---|---|---|---|
| Blob Storage | Objects, files, backups, static content | azure__storage | az storage blob |
| File Shares | SMB file shares, lift-and-shift | - | az storage file |
| Queue Storage | Async messaging, task queues | - | az storage queue |
| Table Storage | NoSQL key-value (consider Cosmos DB) | - | az storage table |
| Data Lake | Big data analytics, hierarchical namespace | - | az storage fs |
MCP Server (Preferred)
When Azure MCP is enabled:
azure__storagewith commandstorage_account_list- List storage accountsazure__storagewith commandstorage_container_list- List containers in accountazure__storagewith commandstorage_blob_list- List blobs in containerazure__storagewith commandstorage_blob_get- Download blob contentazure__storagewith commandstorage_blob_put- Upload blob content
If Azure MCP is not enabled: In Copilot CLI or Claude Code, ask the user to run /mcp and enable Azure MCP; in other hosts, ask the user to enable Azure MCP through the host's MCP configuration.
CLI Fallback
# List storage accounts
az storage account list --output table
# List containers
az storage container list --account-name ACCOUNT --output table
# List blobs
az storage blob list --account-name ACCOUNT --container-name CONTAINER --output table
# Download blob
az storage blob download --account-name ACCOUNT --container-name CONTAINER --name BLOB --file LOCAL_PATH
# Upload blob
az storage blob upload --account-name ACCOUNT --container-name CONTAINER --name BLOB --file LOCAL_PATHStorage Account Tiers
| Tier | Use Case | Performance |
|---|---|---|
| Standard | General purpose, backup | Milliseconds |
| Premium | Databases, high IOPS | Sub-millisecond |
Blob Access Tiers
| Tier | Access Frequency | Cost |
|---|---|---|
| Hot | Frequent | Higher storage, lower access |
| Cool | Infrequent (30+ days) | Lower storage, higher access |
| Cold | Rare (90+ days) | Lower still |
| Archive | Rarely (180+ days) | Lowest storage, rehydration required |
Redundancy Options
| Type | Durability | Use Case |
|---|---|---|
| LRS | 11 nines | Dev/test, recreatable data |
| ZRS | 12 nines | Regional high availability |
| GRS | 16 nines | Disaster recovery |
| GZRS | 16 nines | Best durability |
Service Details
For deep documentation on specific services:
Blob storage patterns and lifecycle -> Blob Storage documentation
File shares and Azure File Sync -> Azure Files documentation
Queue patterns and poison handling -> Queue Storage documentation
SDK Quick References
For building applications with Azure Storage SDKs, see the condensed guides:
Blob Storage: Python | TypeScript | Java | Rust
Queue Storage: Python | TypeScript
File Shares: Python | TypeScript
Data Lake: Python
For full package listing across all languages, see SDK Usage Guide.
Azure SDKs
For building applications that interact with Azure Storage programmatically, Azure provides SDK packages in multiple languages (.NET, Java, JavaScript, Python, Go, Rust). See SDK Usage Guide for package names, installation commands, and quick start examples.
Files
- ATTRIBUTION.mdAdded by AutoGineer971 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md4.9 KiB
- references/auth-best-practices.md6.1 KiB
- references/sdk-usage.md4.4 KiB
- references/sdk/azure-data-tables-java.md1.3 KiB
- references/sdk/azure-data-tables-py.md1.0 KiB
- references/sdk/azure-storage-blob-java.md1.3 KiB
- references/sdk/azure-storage-blob-py.md1.0 KiB
- references/sdk/azure-storage-blob-rust.md1.1 KiB
- references/sdk/azure-storage-blob-ts.md1.2 KiB
- references/sdk/azure-storage-file-datalake-py.md1.3 KiB
- references/sdk/azure-storage-file-share-py.md1006 B
- references/sdk/azure-storage-file-share-ts.md1.2 KiB
- references/sdk/azure-storage-queue-py.md1.1 KiB
- references/sdk/azure-storage-queue-ts.md1.2 KiB
references/auth-best-practices.md
Azure Authentication Best Practices
Source: Microsoft — Passwordless connections for Azure services and Azure Identity client libraries.
Golden Rule
Use managed identities and Azure RBAC in production. Reserve DefaultAzureCredential for local development only.
Authentication by Environment
| Environment | Recommended Credential | Why |
|---|---|---|
| Production (Azure-hosted) | ManagedIdentityCredential (system- or user-assigned) | No secrets to manage; auto-rotated by Azure |
| Production (on-premises) | ClientCertificateCredential or WorkloadIdentityCredential | Deterministic; no fallback chain overhead |
| CI/CD pipelines | AzurePipelinesCredential / WorkloadIdentityCredential | Scoped to pipeline identity |
| Local development | DefaultAzureCredential | Chains CLI, PowerShell, and VS Code credentials for convenience |
Why Not DefaultAzureCredential in Production?
Unpredictable fallback chain — walks through multiple credential types, adding latency and making failures harder to diagnose.
Broad surface area — checks environment variables, CLI tokens, and other sources that should not exist in production.
Non-deterministic — which credential actually authenticates depends on the environment, making behavior inconsistent across deployments.
Performance — each failed credential attempt adds network round-trips before falling back to the next.
Production Patterns
.NET
using Azure.Identity;
var credential = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT") == "Development"
? new DefaultAzureCredential() // local dev — uses CLI/VS credentials
: new ManagedIdentityCredential(); // production — deterministic, no fallback chain
// For user-assigned identity: new ManagedIdentityCredential("<client-id>")TypeScript / JavaScript
import { DefaultAzureCredential, ManagedIdentityCredential } from "@azure/identity";
const credential = process.env.NODE_ENV === "development"
? new DefaultAzureCredential() // local dev — uses CLI/VS credentials
: new ManagedIdentityCredential(); // production — deterministic, no fallback chain
// For user-assigned identity: new ManagedIdentityCredential("<client-id>")Python
import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
credential = (
DefaultAzureCredential() # local dev — uses CLI/VS credentials
if os.getenv("AZURE_FUNCTIONS_ENVIRONMENT") == "Development"
else ManagedIdentityCredential() # production — deterministic, no fallback chain
)
# For user-assigned identity: ManagedIdentityCredential(client_id="<client-id>")Java
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
var credential = "Development".equals(System.getenv("AZURE_FUNCTIONS_ENVIRONMENT"))
? new DefaultAzureCredentialBuilder().build() // local dev — uses CLI/VS credentials
: new ManagedIdentityCredentialBuilder().build(); // production — deterministic, no fallback chain
// For user-assigned identity: new ManagedIdentityCredentialBuilder().clientId("<client-id>").build()Local Development Setup
DefaultAzureCredential is ideal for local dev because it automatically picks up credentials from developer tools:
Azure CLI —
az loginAzure Developer CLI —
azd auth loginAzure PowerShell —
Connect-AzAccountVisual Studio / VS Code — sign in via Azure extension
import { DefaultAzureCredential } from "@azure/identity";
// Local development only — uses CLI/PowerShell/VS Code credentials
const credential = new DefaultAzureCredential();Environment-Aware Pattern
Detect the runtime environment and select the appropriate credential. The key principle: use DefaultAzureCredential only when running locally, and a specific credential in production.
Tip: Azure Functions sets
AZURE_FUNCTIONS_ENVIRONMENTto"Development"when running locally. For App Service or containers, use any environment variable you control (e.g.NODE_ENV,ASPNETCORE_ENVIRONMENT).
import { DefaultAzureCredential, ManagedIdentityCredential } from "@azure/identity";
function getCredential() {
if (process.env.NODE_ENV === "development") {
return new DefaultAzureCredential(); // picks up az login / VS Code creds
}
return process.env.AZURE_CLIENT_ID
? new ManagedIdentityCredential(process.env.AZURE_CLIENT_ID) // user-assigned
: new ManagedIdentityCredential(); // system-assigned
}Security Checklist
[ ] Use managed identity for all Azure-hosted apps
[ ] Never hardcode credentials, connection strings, or keys
[ ] Apply least-privilege RBAC roles at the narrowest scope
[ ] Use
ManagedIdentityCredential(notDefaultAzureCredential) in production[ ] Store any required secrets in Azure Key Vault
[ ] Rotate secrets and certificates on a schedule
[ ] Enable Microsoft Defender for Cloud on production resources
Further Reading
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server, Needs a command-line tool
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/azure-skills/skills/azure-storage · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from .github/plugins/azure-skills/LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- microsoft/azure-skills
AutoGineer is not affiliated with or endorsed by Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-storage.zip