Official agent skill

Azure Storage Blob Rust

by microsoft in microsoft/skills

Azure Blob Storage library for Rust. An agent skill from microsoft/skills.

OfficialMITAuto-check passedBackend & APIs

Install Azure Storage Blob Rust

skills CLI
$ npx skills add microsoft/skills --skill azure-storage-blob-rust -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install microsoft/skills azure-storage-blob-rust --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/microsoft/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/plugins/azure-sdk-rust/skills/azure-storage-blob-rust .claude/skills/azure-storage-blob-rust && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
azure-storage-blob-rust
GitHub stars
3.1k
Token cost
~2.7k tokens
SKILL.md length
597 words
Files
1
Skills in repo
150
Repo updated
First seen
Licence
MIT

At a glance

Azure Blob Storage library for Rust. An agent skill from microsoft/skills.

  • Works in 12 steps: Use cargo add to manage dependencies,… → Add azure_core only when importing… → Use DeveloperToolsCredential for local… → …
  • Tasks that involve File uploads and storage
  • SKILL.md covers Installation, Environment Variables, Authentication and Client Types, plus 6 more sections
  • Calls cargo

What it does

Azure Storage Blob Rust is an agent skill from microsoft/skills, published by the product's own GitHub organization. Azure Blob Storage library for Rust. Upload, download, and manage blobs and containers. Triggers: "blob storage rust", "BlobClient rust", "upload blob rust", "download blob rust", "storage container rust", "BlobServiceClient rust".

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering File uploads and storage. It works with Azure Blob Storage, Rust and Microsoft Azure. The repository describes itself as: Skills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents. The licence is MIT.

When your agent uses it

  • Tasks that involve File uploads and storage

Example prompts

  • “blob storage rust”
  • “BlobClient rust”
  • “upload blob rust”
  • “/azure-storage-blob-rust”

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. Use cargo add to manage dependencies, never edit Cargo.toml directly. Add and remove Rust SDK dependencies with cargo commands instead of…
  2. Add azure_core only when importing azure_core types directly. If your code imports azure_core::http::Url…
  3. Use DeveloperToolsCredential for local dev, ManagedIdentityCredential for production — Rust does not provide a single…
  4. Never hardcode credentials — use environment variables or managed identity
  5. Use RequestContent::from() to wrap data for blob uploads — ensures proper content handling by the SDK
  6. Assign RBAC roles — ensure "Storage Blob Data Contributor" for write access
  7. Reuse clients — clients are thread-safe; create once, share across tasks
  8. Prefer BlobServiceClient as the entry point and derive container/blob clients from it
  9. Treat many storage model fields as optional. blob.name is an Option and content length is accessed via…
  10. Run cargo clippy -- -D warnings before considering the task complete when the prompt or CI expects strict lint compliance; fix style lints…
  11. Prefer crate README/examples over generated internal type names when validating public API shapes such as pagination results
  12. Future-proof #[non_exhaustive] SDK models — when constructing SDK model/options structs, end the initializer with ..Default::default()…

What it can do on your machine

Read from SKILL.md and the folder at commit 3898ec8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • crates.io
    • docs.rs
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Azure Storage Blob Rust loads about 2.7k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 597 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from microsoft/skills at commit 3898ec8, republished under its MIT licence (© microsoft). 597 words, ~2,702 tokens.

Download SKILL.mdSave it as .claude/skills/azure-storage-blob-rust/SKILL.md (or your agent's skills folder).
name
azure-storage-blob-rust
description
Azure Blob Storage library for Rust. Upload, download, and manage blobs and containers. Triggers: "blob storage rust", "BlobClient rust", "upload blob rust", "download blob rust", "storage container rust", "BlobServiceClient rust".
license
MIT
metadata.author
Microsoft
metadata.package
azure_storage_blob

Azure Blob Storage library for Rust

Client library for Azure Blob Storage — upload, download, and manage blobs and containers.

Use this skill when:

  • An app needs to upload or download blobs from Azure Storage in Rust
  • You need to create or manage blob containers
  • You need to list blobs with pagination
  • You need RBAC-based auth for blob operations

IMPORTANT: Only use the official azure_storage_blob crate published by the azure-sdk crates.io user. Do NOT use the unofficial azure_storage, azure_storage_blobs, or azure_sdk_for_rust community crates. Official crates use underscores in names and none have version 0.21.0.

Installation

sh
cargo add azure_storage_blob azure_identity azure_core tokio futures

If your code uses azure_core types directly (for example, azure_core::http::Url or azure_core::http::RequestContent), add azure_core to Cargo.toml. If you only use azure_storage_blob re-exports, direct azure_core dependency is optional.

Environment Variables

bash
AZURE_STORAGE_ACCOUNT=<account-name>                         # Preferred when the caller gives an account name
AZURE_STORAGE_ENDPOINT=https://<account>.blob.core.windows.net/ # Optional alternative when the caller gives a full endpoint

When both are available, prefer constructing the endpoint from AZURE_STORAGE_ACCOUNT so the code matches common evaluation prompts.

Authentication

Rust Azure SDK code must not use DefaultAzureCredential. The Rust identity crate does not provide that type.

rust
// Correct for local development
use azure_identity::DeveloperToolsCredential;

let credential = DeveloperToolsCredential::new(None)?;
rust
// Incorrect in Rust: this type does not exist in azure_identity
use azure_identity::DefaultAzureCredential;
rust
use azure_core::http::Url;
use azure_identity::DeveloperToolsCredential;
use azure_storage_blob::BlobServiceClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.
    let credential = DeveloperToolsCredential::new(None)?;
    let service_url = Url::parse("https://<storage_account_name>.blob.core.windows.net/")?;
    let service_client = BlobServiceClient::new(
        service_url,
        Some(credential),
        None,
    )?;

    // Derive container and blob clients by name.
    let container_client = service_client.blob_container_client("<container_name>");
    let blob_client = container_client.blob_client("<blob_name>");
    Ok(())
}

Client Types

ClientPurpose
BlobServiceClientAccount-level operations, list containers
BlobContainerClientContainer operations, list blobs
BlobClientIndividual blob operations

Core Workflow

Upload Blob
rust
use azure_core::http::{RequestContent, Url};
use azure_identity::DeveloperToolsCredential;
use azure_storage_blob::BlobServiceClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.
    let credential = DeveloperToolsCredential::new(None)?;
    let service_url = Url::parse("https://<storage_account_name>.blob.core.windows.net/")?;
    let service_client = BlobServiceClient::new(service_url, Some(credential), None)?;
    let blob_client = service_client.blob_client("<container_name>", "<blob_name>");

    let data = b"hello world";
    blob_client.upload(RequestContent::from(data.to_vec()), None).await?;
    Ok(())
}
Download Blob / Get Properties
rust
// Get blob properties
let props = blob_client.get_properties(None).await?;

// Download blob content
let response = blob_client.download(None).await?;
let content = String::from_utf8(response.body.collect().await?.into())?;
Delete Blob
rust
blob_client.delete(None).await?;
Container Operations
rust
use azure_core::http::Url;
use azure_identity::DeveloperToolsCredential;
use azure_storage_blob::BlobServiceClient;
use futures::TryStreamExt as _;

let credential = DeveloperToolsCredential::new(None)?;
let service_url = Url::parse("https://<storage_account_name>.blob.core.windows.net/")?;
let service_client = BlobServiceClient::new(service_url, Some(credential), None)?;
let container_client = service_client.blob_container_client("<container_name>");

// Create container
container_client.create(None).await?;

// List blobs (the pager yields BlobItem values directly for this client pattern)
let mut pager = container_client.list_blobs(None)?;
while let Some(blob) = pager.try_next().await? {
    let name = blob.name.as_deref().unwrap_or("<unnamed>");
    let size = blob
        .properties
        .as_ref()
        .and_then(|properties| properties.content_length);

    match size {
        Some(size) => println!("Blob: {name} ({size} bytes)"),
        None => println!("Blob: {name}"),
    }
}

For azure_storage_blob 1.x, do not assume you need a nested page loop like for item in &page.blob_items. In this usage pattern, try_next() already yields the blob item you want to print.

Error Handling

Use StorageError for programmatic access to storage-specific error codes:

rust
use azure_core::error::ErrorKind;
use azure_storage_blob::StorageError;
use azure_storage_blob::models::StorageErrorCode;

let result = blob_client.download(None).await;

match result {
    Ok(response) => {
        let content: Vec<u8> = response.body.collect().await?.into();
        println!("Downloaded {} bytes", content.len());
    }
    Err(error) => {
        if matches!(error.kind(), ErrorKind::HttpResponse { .. }) {
            // Convert to StorageError for programmatic access
            let storage_error: StorageError = error.try_into()?;
            println!("HTTP Status: {}", storage_error.status_code);

            if let Some(error_code) = &storage_error.error_code {
                match error_code {
                    StorageErrorCode::BlobNotFound => {
                        println!("The blob does not exist.");
                    }
                    StorageErrorCode::ContainerNotFound => {
                        println!("The container does not exist.");
                    }
                    StorageErrorCode::AuthorizationFailure => {
                        println!("Authorization failed. Check RBAC roles.");
                    }
                    _ => println!("Storage error: {error_code}"),
                }
            }

            if let Some(request_id) = &storage_error.request_id {
                println!("Request ID (for Azure support): {request_id}");
            }
        } else {
            println!("Non-HTTP error: {:?}", error);
        }
    }
}

Note: StorageError::try_into requires an owned error object — it will not compile if handed a reference to an error.

RBAC Roles

For Entra ID auth, assign one of these roles to the identity:

RoleAccess
Storage Blob Data ReaderRead-only
Storage Blob Data ContributorRead/write
Storage Blob Data OwnerFull access including RBAC
Show full SKILL.md (315 more words)Show less

Best Practices

  1. Use cargo add to manage dependencies, never edit Cargo.toml directly. Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.
  2. Add azure_core only when importing azure_core types directly. If your code imports azure_core::http::Url, azure_core::http::RequestContent, or azure_core::error::ErrorKind, include azure_core; otherwise a direct dependency is optional.
  3. Use DeveloperToolsCredential for local dev, ManagedIdentityCredential for production — Rust does not provide a single DefaultAzureCredential type
  4. Never hardcode credentials — use environment variables or managed identity
  5. Use RequestContent::from() to wrap data for blob uploads — ensures proper content handling by the SDK
  6. Assign RBAC roles — ensure "Storage Blob Data Contributor" for write access
  7. Reuse clients — clients are thread-safe; create once, share across tasks
  8. Prefer BlobServiceClient as the entry point and derive container/blob clients from it
  9. Treat many storage model fields as optional. blob.name is an Option<String> and content length is accessed via blob.properties.as_ref().and_then(|p| p.content_length).
  10. Run cargo clippy -- -D warnings before considering the task complete when the prompt or CI expects strict lint compliance; fix style lints such as collapsible if blocks, not just compiler errors.
  11. Prefer crate README/examples over generated internal type names when validating public API shapes such as pagination results
  12. Future-proof #[non_exhaustive] SDK models — when constructing SDK model/options structs, end the initializer with ..Default::default() (add #[allow(clippy::needless_update)]) and use a _ wildcard arm when matching SDK enums, so new service-added fields/variants don't break your build

Common Rust Blob Pitfalls

  • Do not import azure_identity::DefaultAzureCredential; use DeveloperToolsCredential or another real Rust credential type.
  • Do not assume generated internal model names describe the public pager item type; follow the documented list_blobs example for this crate.
  • Do not print blob.name with {} directly; unwrap or provide a fallback because it is optional.
  • Do not stop after cargo build passes when the task also requires cargo clippy -- -D warnings.

© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/plugins/azure-sdk-rust/skills/azure-storage-blob-rust of microsoft/skills.

Open the folder on GitHubat commit 3898ec8

Compare with similar skills

Azure Storage Blob Rust next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Azure Storage Blob Rust compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Azure Storage Blob Rust this skillmicrosoft/skills3.1k—~2.7kAutomated safety check: PassMIT
Azure Storagemicrosoft/GitHub-Copilot-for-Azure2552 repos~1.3kAutomated safety check: PassMIT
Cloud Retention Configmukul975/Privacy-Data-Protection-Skills297—~3.7kAutomated safety check: PassApache-2.0
Apex Azure Storagejonathan-vella/apex217—~1.7kAutomated safety check: PassMIT
FoundatioFoundatioFx/Foundatio2.1k—~3.9kAutomated safety check: PassApache-2.0
Edgeone Makers StorageTencentEdgeOne/edgeone-makers-tools1.9k1 repos~930Automated safety check: PassMIT

Similar skills

  • Azure Storage

    microsoft/GitHub-Copilot-for-Azure

    Official

    Azure Storage Services including Blob Storage, File Shares, Queue Storage, Table Storage, and Data Lake.

    255 GitHub starsUsed in 2 repos~1.3k tokens
    DatabasesAuto-check passed
  • Cloud Retention Config

    mukul975/Privacy-Data-Protection-Skills

    Configures cloud storage retention policies across AWS S3, Azure Blob Storage, and Google Cloud Storage.

    297 GitHub stars~3.7k tokensUpdated 6 mo ago
    Legal & ComplianceAuto-check passed
  • Apex Azure Storage

    jonathan-vella/apex

    UTILITY SKILL — Azure Storage: Blob, File Shares, Queue, Table and Data Lake, including access tiers and lifecycle management.

    217 GitHub stars~1.7k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Foundatio

    FoundatioFx/Foundatio

    A skill your agent uses when working with Foundatio infrastructure abstractions for .NET -- caching, queuing, messaging, file storage, distributed locking, or background jobs.

    2.1k GitHub stars~3.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • Edgeone Makers Storage

    TencentEdgeOne/edgeone-makers-tools

    KV and Blob storage services on EdgeOne Makers. An agent skill from TencentEdgeOne/edgeone-makers-tools.

    1.9k GitHub starsUsed in 1 repo~930 tokens
    Backend & APIsAuto-check passed
  • Takeover

    PentesterFlow/agent

    Subdomain takeover playbook — sweep subdomains for dangling CNAMEs / NS records pointing at unclaimed third-party resources (GitHub Pages, S3, Heroku, Azure, Netlify, Shopify, ...), confirm with the…

    1.4k GitHub stars~3.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed

More from microsoft/skills

All 150 skills in this repo
  • Official

    Covers producer, consumer, and checkpoint-store setup for Azure Event Hubs streaming in Python, with Entra ID auth and partition targeting.

    3.1k GitHub starsUsed in 1 repo~2.3k tokens
    Auto-check passed
  • Official

    Builds podcast-style audio narration from text with Azure OpenAI's GPT Realtime Mini over WebSocket, from a Python FastAPI backend to a React player.

    3.1k GitHub starsUsed in 1 repo~947 tokens
    Auto-check passed
  • Frontend UI Dark TS

    microsoft/skills

    Official

    Build dark-themed React applications using Tailwind CSS with custom theming, glassmorphism effects, and Framer Motion animations.

    3.1k GitHub starsUsed in 5 repos~3.6k tokens
    Auto-check passed
  • Pydantic Models Py

    microsoft/skills

    Official

    Create Pydantic models following the multi-model pattern with Base, Create, Update, Response, and InDB variants.

    3.1k GitHub starsUsed in 5 repos~496 tokens
    Auto-check passed
  • Official

    Reference for building on Microsoft Foundry with the azure-ai-projects Python SDK: project clients, versioned agents, evaluations, connections, datasets and indexes.

    3.1k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Skill Creator

    microsoft/skills

    Official

    Guide for creating effective skills for AI coding agents working with Azure SDKs and Microsoft Foundry services.

    3.1k GitHub starsUsed in 5 repos~17k tokens
    Auto-check passed

Categories

Questions about Azure Storage Blob Rust

What does Azure Storage Blob Rust do?

Azure Blob Storage library for Rust. An agent skill from microsoft/skills. Azure Storage Blob Rust is an agent skill from microsoft/skills, published by the product's own GitHub organization. Azure Blob Storage library for Rust.

When should I use Azure Storage Blob Rust?

Azure Storage Blob Rust fits situations like: tasks that involve File uploads and storage.

How do I install Azure Storage Blob Rust in Claude Code?

Run `npx skills add microsoft/skills --skill azure-storage-blob-rust -a claude-code`. Or copy the skill folder (.github/plugins/azure-sdk-rust/skills/azure-storage-blob-rust in microsoft/skills) into .claude/skills/azure-storage-blob-rust in your project. Claude Code loads it when a task matches its description.

How do I install Azure Storage Blob Rust in Codex?

Run `npx skills add microsoft/skills --skill azure-storage-blob-rust -a codex`. Or copy the skill folder (.github/plugins/azure-sdk-rust/skills/azure-storage-blob-rust in microsoft/skills) into .agents/skills/azure-storage-blob-rust in your project. Codex loads it when a task matches its description.

Can I use Azure Storage Blob Rust in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/skills --skill azure-storage-blob-rust -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/azure-storage-blob-rust, .gemini/skills/azure-storage-blob-rust, .github/skills/azure-storage-blob-rust and .opencode/skills/azure-storage-blob-rust in your project.

What does Azure Storage Blob Rust need to run?

Going by SKILL.md and its folder, Azure Storage Blob Rust needs the command-line tools its instructions call (cargo).

Does Azure Storage Blob Rust access the network?

SKILL.md names 3 domains. As links in the text: crates.io, docs.rs and github.com. This is read from the text; nothing was executed.

Is Azure Storage Blob Rust safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Azure Storage Blob Rust use?

Azure Storage Blob Rust is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Azure Storage Blob Rust use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Azure Storage Blob Rust?

Skills that share tags, products or a category with Azure Storage Blob Rust: Azure Storage (microsoft/GitHub-Copilot-for-Azure, 255 stars), Cloud Retention Config (mukul975/Privacy-Data-Protection-Skills, 297 stars), Apex Azure Storage (jonathan-vella/apex, 217 stars) and Foundatio (FoundatioFx/Foundatio, 2.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Azure Storage Blob Rust?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/skills, which has 3,094 GitHub stars. The repository holds 150 skills in this directory. The repository was last updated on October 9, 2026.

Source: microsoft/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.