Azure Blob Storage for TypeScript
A practical guide for uploading, downloading, and managing Azure Blob Storage from TypeScript and JavaScript applications.
The document recommends Entra ID, user-delegation SAS, HTTPS, short-lived tokens, and least privilege, and it exposes the relevant key, connection-string, and SAS data flows. However, it also demonstrates account keys, anonymous access, account-wide full-permission SAS, and direct SAS URL logging, without user confirmation, revocation/rollback guidance, or stronger secret-handling constraints, so points are deducted.
It covers installation, authentication, container and blob operations, streaming, SAS, and status-code-based error feedback. Static evidence lacks skill-specific tests, and the main document appears inconsistent with its references on uploadStream parameters and browser upload APIs; some environment and type assumptions are also unverified, limiting the score.
Triggers, SDK scope, Node.js/browser differences, and common scenarios are fairly clear. Non-fit boundaries, permission prerequisites, compatibility limits, Chinese-language guidance, and possible mainland-China reachability constraints for Azure endpoints are not stated, so points are deducted.
The material is layered across installation, authentication, operations, SAS, streaming, and best practices, with MIT licensing, author/version metadata, and reference material. However, the version is only stated as 12.x, with no changelog, explicit maintenance owner or update path, FAQ, or systematic limitations section, so points are deducted.
The skill addresses common Blob Storage tasks including upload, download, listing, deletion, copying, metadata, streaming, and SAS generation, with many usable patterns. Potential API/type inaccuracies and the absence of verified complete-project outputs or test results mean users may need substantial correction; the static score is capped accordingly.
References point to official Azure SDK and documentation sources, while repository context shows generic CI, evaluation workflows, and tests. There are no skill-specific acceptance tests, coverage results, or execution evidence, and this review did not execute code, so verifiability remains limited.
- Do not print account keys, connection strings, or SAS tokens to logs, client code, or long-term storage; prefer user-delegation SAS, HTTPS, short expiry, and least privilege.
- Verify the current @azure/storage-blob API before adopting examples, especially uploadStream, browser upload methods, concurrency parameters, and response-stream types.
- Deletion, overwrite, copy, and write-capable SAS operations can affect external data; add application-level confirmation, scoping, audit, and recovery controls.
- Azure endpoints, identity flows, and network access may be affected by mainland-China connectivity and enterprise policies; validate reachability before deployment.
What it does & when to use it
This skill supports TypeScript and JavaScript developers using @azure/storage-blob to integrate Azure Blob Storage. It covers client construction, authentication, container management, and common blob operations. Examples include block, append, and page blobs, SAS tokens, streaming, metadata, HTTP headers, and error handling. It also distinguishes Node.js-only features from browser-supported operations. It is a strong fit for coding agents generating Azure Storage integration code, but it is not a standalone storage service.
It shows how to install @azure/storage-blob and @azure/identity, read storage settings from environment variables, and construct BlobServiceClient, ContainerClient, and BlobClient instances. It provides TypeScript/JavaScript patterns for creating, listing, and deleting containers; uploading, downloading, listing, deleting, and copying blobs; and managing properties, metadata, and HTTP headers. It demonstrates Microsoft Entra credentials, connection strings, shared keys, and SAS authentication, including SAS generation. It also covers block, append, and page blobs, Node.js file and stream operations, browser uploads, RestError status handling, and platform differences.
- A TypeScript backend developer needs to upload strings, buffers, or local files to Azure Blob Storage.
- A Node.js application needs streamed uploads for large files with upload progress reporting.
- A browser application needs client-side blob uploads authorized with short-lived SAS tokens.
- A developer needs to list containers or blobs, filter by prefix, and work with virtual directories.
- A logging or audit system needs append blobs, or a virtual-disk scenario needs page blobs.
Pros & cons
- Covers containers, blobs, authentication, SAS, metadata, error handling, and Node.js/browser differences.
- Examples map directly to the main @azure/storage-blob clients and operations.
- Includes concrete patterns for streaming, file downloads, hierarchical listing, and multiple blob types.
- The README reports 17 test scenarios for this TypeScript skill.
- Requires Node.js 18 or later and the Azure SDK packages.
- Shared-key authentication, SAS generation, and file and stream methods are Node.js-only.
- Examples require an Azure Storage account, environment configuration, and suitable permissions; the skill does not provision resources.
- The collection is under active development, so content and tests may continue to change.
How to install
Run:
npx skills add microsoft/skills
Choose the required skill in the installation wizard. The collection installs skills into the selected coding agent's directory, such as .github/skills/ for GitHub Copilot, and can use symlinks for multiple agents. The skill is located at .github/plugins/azure-sdk-typescript/skills/azure-storage-blob-ts/SKILL.md. To use the SDK in a project, install its packages with:
npm install @azure/storage-blob @azure/identity
How to use
After making the skill available to a coding agent, use a direct request such as: “Using @azure/storage-blob and DefaultAzureCredential, create a BlobServiceClient, upload a file, and handle RestError.” Other valid prompts can request Azure Blob Storage upload, download, listing, or management code. The project must provide the account name and appropriate credentials, connection string, or SAS value; the source does not define a separate configuration file or standalone runtime command.