{"id":"a12a676a-053c-4cde-91f1-b9f615d7bbf6","shortId":"g4t7Xg","kind":"skill","title":"azure-storage-blob-java","tagline":"Build blob storage applications using the Azure Storage Blob SDK for Java.","description":"# Azure Storage Blob SDK for Java\n\nBuild blob storage applications using the Azure Storage Blob SDK for Java.\n\n## Installation\n\n```xml\n<dependency>\n    <groupId>com.azure</groupId>\n    <artifactId>azure-storage-blob</artifactId>\n    <version>12.33.0</version>\n</dependency>\n```\n\n## Client Creation\n\n### BlobServiceClient\n\n```java\nimport com.azure.storage.blob.BlobServiceClient;\nimport com.azure.storage.blob.BlobServiceClientBuilder;\n\n// With SAS token\nBlobServiceClient serviceClient = new BlobServiceClientBuilder()\n    .endpoint(\"<storage-account-url>\")\n    .sasToken(\"<sas-token>\")\n    .buildClient();\n\n// With connection string\nBlobServiceClient serviceClient = new BlobServiceClientBuilder()\n    .connectionString(\"<connection-string>\")\n    .buildClient();\n```\n\n### With DefaultAzureCredential\n\n```java\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\nBlobServiceClient serviceClient = new BlobServiceClientBuilder()\n    .endpoint(\"<storage-account-url>\")\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .buildClient();\n```\n\n### BlobContainerClient\n\n```java\nimport com.azure.storage.blob.BlobContainerClient;\n\n// From service client\nBlobContainerClient containerClient = serviceClient.getBlobContainerClient(\"mycontainer\");\n\n// Direct construction\nBlobContainerClient containerClient = new BlobContainerClientBuilder()\n    .connectionString(\"<connection-string>\")\n    .containerName(\"mycontainer\")\n    .buildClient();\n```\n\n### BlobClient\n\n```java\nimport com.azure.storage.blob.BlobClient;\n\n// From container client\nBlobClient blobClient = containerClient.getBlobClient(\"myblob.txt\");\n\n// With directory structure\nBlobClient blobClient = containerClient.getBlobClient(\"folder/subfolder/myblob.txt\");\n\n// Direct construction\nBlobClient blobClient = new BlobClientBuilder()\n    .connectionString(\"<connection-string>\")\n    .containerName(\"mycontainer\")\n    .blobName(\"myblob.txt\")\n    .buildClient();\n```\n\n## Core Patterns\n\n### Create Container\n\n```java\n// Create container\nserviceClient.createBlobContainer(\"mycontainer\");\n\n// Create if not exists\nBlobContainerClient container = serviceClient.createBlobContainerIfNotExists(\"mycontainer\");\n\n// From container client\ncontainerClient.create();\ncontainerClient.createIfNotExists();\n```\n\n### Upload Data\n\n```java\nimport com.azure.core.util.BinaryData;\n\n// Upload string\nString data = \"Hello, Azure Blob Storage!\";\nblobClient.upload(BinaryData.fromString(data));\n\n// Upload with overwrite\nblobClient.upload(BinaryData.fromString(data), true);\n```\n\n### Upload from File\n\n```java\nblobClient.uploadFromFile(\"local-file.txt\");\n\n// With overwrite\nblobClient.uploadFromFile(\"local-file.txt\", true);\n```\n\n### Upload from Stream\n\n```java\nimport com.azure.storage.blob.specialized.BlockBlobClient;\n\nBlockBlobClient blockBlobClient = blobClient.getBlockBlobClient();\n\ntry (ByteArrayInputStream dataStream = new ByteArrayInputStream(data.getBytes())) {\n    blockBlobClient.upload(dataStream, data.length());\n}\n```\n\n### Upload with Options\n\n```java\nimport com.azure.storage.blob.models.BlobHttpHeaders;\nimport com.azure.storage.blob.options.BlobParallelUploadOptions;\n\nBlobHttpHeaders headers = new BlobHttpHeaders()\n    .setContentType(\"text/plain\")\n    .setCacheControl(\"max-age=3600\");\n\nMap<String, String> metadata = Map.of(\"author\", \"john\", \"version\", \"1.0\");\n\ntry (InputStream stream = new FileInputStream(\"large-file.bin\")) {\n    BlobParallelUploadOptions options = new BlobParallelUploadOptions(stream)\n        .setHeaders(headers)\n        .setMetadata(metadata);\n    \n    blobClient.uploadWithResponse(options, null, Context.NONE);\n}\n```\n\n### Upload if Not Exists\n\n```java\nimport com.azure.storage.blob.models.BlobRequestConditions;\n\nBlobParallelUploadOptions options = new BlobParallelUploadOptions(inputStream, length)\n    .setRequestConditions(new BlobRequestConditions().setIfNoneMatch(\"*\"));\n\nblobClient.uploadWithResponse(options, null, Context.NONE);\n```\n\n### Download Data\n\n```java\n// Download to BinaryData\nBinaryData content = blobClient.downloadContent();\nString text = content.toString();\n\n// Download to file\nblobClient.downloadToFile(\"downloaded-file.txt\");\n```\n\n### Download to Stream\n\n```java\ntry (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {\n    blobClient.downloadStream(outputStream);\n    byte[] data = outputStream.toByteArray();\n}\n```\n\n### Download with InputStream\n\n```java\nimport com.azure.storage.blob.specialized.BlobInputStream;\n\ntry (BlobInputStream blobIS = blobClient.openInputStream()) {\n    byte[] buffer = new byte[1024];\n    int bytesRead;\n    while ((bytesRead = blobIS.read(buffer)) != -1) {\n        // Process buffer\n    }\n}\n```\n\n### Upload via OutputStream\n\n```java\nimport com.azure.storage.blob.specialized.BlobOutputStream;\n\ntry (BlobOutputStream blobOS = blobClient.getBlockBlobClient().getBlobOutputStream()) {\n    blobOS.write(\"Data to upload\".getBytes());\n}\n```\n\n### List Blobs\n\n```java\nimport com.azure.storage.blob.models.BlobItem;\n\n// List all blobs\nfor (BlobItem blobItem : containerClient.listBlobs()) {\n    System.out.println(\"Blob: \" + blobItem.getName());\n}\n\n// List with prefix (virtual directory)\nimport com.azure.storage.blob.models.ListBlobsOptions;\n\nListBlobsOptions options = new ListBlobsOptions().setPrefix(\"folder/\");\nfor (BlobItem blobItem : containerClient.listBlobs(options, null)) {\n    System.out.println(\"Blob: \" + blobItem.getName());\n}\n```\n\n### List Blobs by Hierarchy\n\n```java\nimport com.azure.storage.blob.models.BlobListDetails;\n\nString delimiter = \"/\";\nListBlobsOptions options = new ListBlobsOptions()\n    .setPrefix(\"data/\")\n    .setDetails(new BlobListDetails().setRetrieveMetadata(true));\n\nfor (BlobItem item : containerClient.listBlobsByHierarchy(delimiter, options, null)) {\n    if (item.isPrefix()) {\n        System.out.println(\"Directory: \" + item.getName());\n    } else {\n        System.out.println(\"Blob: \" + item.getName());\n    }\n}\n```\n\n### Delete Blob\n\n```java\nblobClient.delete();\n\n// Delete if exists\nblobClient.deleteIfExists();\n\n// Delete with snapshots\nimport com.azure.storage.blob.models.DeleteSnapshotsOptionType;\nblobClient.deleteWithResponse(DeleteSnapshotsOptionType.INCLUDE, null, null, Context.NONE);\n```\n\n### Copy Blob\n\n```java\nimport com.azure.storage.blob.models.BlobCopyInfo;\nimport com.azure.core.util.polling.SyncPoller;\n\n// Async copy (for large blobs or cross-account)\nSyncPoller<BlobCopyInfo, Void> poller = blobClient.beginCopy(\"<source-blob-url>\", Duration.ofSeconds(1));\npoller.waitForCompletion();\n\n// Sync copy from URL (for same account)\nblobClient.copyFromUrl(\"<source-blob-url>\");\n```\n\n### Generate SAS Token\n\n```java\nimport com.azure.storage.blob.sas.*;\nimport java.time.OffsetDateTime;\n\n// Blob-level SAS\nBlobSasPermission permissions = new BlobSasPermission().setReadPermission(true);\nOffsetDateTime expiry = OffsetDateTime.now().plusDays(1);\n\nBlobServiceSasSignatureValues sasValues = new BlobServiceSasSignatureValues(expiry, permissions);\nString sasToken = blobClient.generateSas(sasValues);\n\n// Container-level SAS\nBlobContainerSasPermission containerPermissions = new BlobContainerSasPermission()\n    .setReadPermission(true)\n    .setListPermission(true);\n    \nBlobServiceSasSignatureValues containerSasValues = new BlobServiceSasSignatureValues(expiry, containerPermissions);\nString containerSas = containerClient.generateSas(containerSasValues);\n```\n\n### Blob Properties and Metadata\n\n```java\nimport com.azure.storage.blob.models.BlobProperties;\n\n// Get properties\nBlobProperties properties = blobClient.getProperties();\nSystem.out.println(\"Size: \" + properties.getBlobSize());\nSystem.out.println(\"Content-Type: \" + properties.getContentType());\nSystem.out.println(\"Last Modified: \" + properties.getLastModified());\n\n// Set metadata\nMap<String, String> metadata = Map.of(\"key1\", \"value1\", \"key2\", \"value2\");\nblobClient.setMetadata(metadata);\n\n// Set HTTP headers\nBlobHttpHeaders headers = new BlobHttpHeaders()\n    .setContentType(\"application/json\")\n    .setCacheControl(\"max-age=86400\");\nblobClient.setHttpHeaders(headers);\n```\n\n### Lease Blob\n\n```java\nimport com.azure.storage.blob.specialized.BlobLeaseClient;\nimport com.azure.storage.blob.specialized.BlobLeaseClientBuilder;\n\nBlobLeaseClient leaseClient = new BlobLeaseClientBuilder()\n    .blobClient(blobClient)\n    .buildClient();\n\n// Acquire lease (-1 for infinite)\nString leaseId = leaseClient.acquireLease(60);\n\n// Renew lease\nleaseClient.renewLease();\n\n// Release lease\nleaseClient.releaseLease();\n```\n\n## Error Handling\n\n```java\nimport com.azure.storage.blob.models.BlobStorageException;\n\ntry {\n    blobClient.download(outputStream);\n} catch (BlobStorageException e) {\n    System.out.println(\"Status: \" + e.getStatusCode());\n    System.out.println(\"Error code: \" + e.getErrorCode());\n    // 404 = Blob not found\n    // 409 = Conflict (lease, etc.)\n}\n```\n\n## Proxy Configuration\n\n```java\nimport com.azure.core.http.ProxyOptions;\nimport com.azure.core.http.netty.NettyAsyncHttpClientBuilder;\nimport java.net.InetSocketAddress;\n\nProxyOptions proxyOptions = new ProxyOptions(\n    ProxyOptions.Type.HTTP,\n    new InetSocketAddress(\"localhost\", 8888));\n\nBlobServiceClient client = new BlobServiceClientBuilder()\n    .endpoint(\"<endpoint>\")\n    .sasToken(\"<sas-token>\")\n    .httpClient(new NettyAsyncHttpClientBuilder().proxy(proxyOptions).build())\n    .buildClient();\n```\n\n## Environment Variables\n\n```bash\nAZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...\nAZURE_STORAGE_ACCOUNT_URL=https://<account>.blob.core.windows.net\n```\n\n## Trigger Phrases\n\n- \"Azure Blob Storage Java\"\n- \"upload download blob\"\n- \"blob container SDK\"\n- \"storage streaming\"\n- \"SAS token generation\"\n- \"blob metadata properties\"\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","storage","blob","java","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents"],"capabilities":["skill","source-sickn33","skill-azure-storage-blob-java","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-storage-blob-java","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34928 github stars · SKILL.md body (10,128 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T18:50:34.185Z","embedding":null,"createdAt":"2026-04-18T21:33:10.403Z","updatedAt":"2026-04-24T18:50:34.185Z","lastSeenAt":"2026-04-24T18:50:34.185Z","tsv":"'-1':331,597 '1':463,495 '1.0':238 '1024':324 '12.33.0':43 '3600':229 '404':628 '409':632 '60':603 '86400':578 '8888':653 'account':456,471,679 'accountnam':676 'acquir':595 'action':714 'age':228,577 'applic':9,27,708 'application/json':573 'ask':752 'async':448 'author':235 'azur':2,12,18,30,40,169,670,677,684 'azure-storage-blob':39 'azure-storage-blob-java':1 'bash':669 'binarydata':284,285 'binarydata.fromstring':173,179 'blob':4,7,14,20,25,32,42,170,351,357,363,385,388,421,424,442,452,482,528,582,629,685,690,691,699 'blob-level':481 'blob.core.windows.net':681 'blobclient':107,114,115,121,122,127,128,592,593 'blobclient.begincopy':461 'blobclient.copyfromurl':472 'blobclient.delete':426 'blobclient.deleteifexists':430 'blobclient.deletewithresponse':436 'blobclient.download':616 'blobclient.downloadcontent':287 'blobclient.downloadstream':305 'blobclient.downloadtofile':294 'blobclient.generatesas':504 'blobclient.getblockblobclient':201,343 'blobclient.getproperties':539 'blobclient.openinputstream':319 'blobclient.sethttpheaders':579 'blobclient.setmetadata':563 'blobclient.upload':172,178 'blobclient.uploadfromfile':186,190 'blobclient.uploadwithresponse':254,275 'blobclientbuild':130 'blobcontainercli':86,93,99,150 'blobcontainerclientbuild':102 'blobcontainersaspermiss':510,513 'blobcopyinfo':458 'blobhttphead':219,222,568,571 'blobi':318 'blobinputstream':317 'blobis.read':329 'blobitem':359,360,379,380,408 'blobitem.getname':364,386 'blobleasecli':588 'blobleaseclientbuild':591 'bloblistdetail':404 'blobnam':134 'blobo':342 'blobos.write':345 'bloboutputstream':341 'blobparalleluploadopt':245,248,265,268 'blobproperti':537 'blobrequestcondit':273 'blobsaspermiss':485,488 'blobservicecli':46,55,65,76,654 'blobserviceclientbuild':58,68,79,657 'blobservicesassignaturevalu':496,499,518,521 'blobstorageexcept':619 'blockblobcli':199,200 'blockblobclient.upload':208 'boundari':760 'buffer':321,330,333 'build':6,24,84,665 'buildclient':61,70,85,106,136,594,666 'byte':307,320,323 'bytearrayinputstream':203,206 'bytearrayoutputstream':301,304 'bytesread':326,328 'catch':618 'clarif':754 'clear':727 'client':44,92,113,156,655 'code':626 'com.azure':38 'com.azure.core.http.netty.nettyasynchttpclientbuilder':642 'com.azure.core.http.proxyoptions':640 'com.azure.core.util.binarydata':163 'com.azure.core.util.polling.syncpoller':447 'com.azure.identity.defaultazurecredentialbuilder':75 'com.azure.storage.blob.blobclient':110 'com.azure.storage.blob.blobcontainerclient':89 'com.azure.storage.blob.blobserviceclient':49 'com.azure.storage.blob.blobserviceclientbuilder':51 'com.azure.storage.blob.models.blobcopyinfo':445 'com.azure.storage.blob.models.blobhttpheaders':216 'com.azure.storage.blob.models.blobitem':354 'com.azure.storage.blob.models.bloblistdetails':393 'com.azure.storage.blob.models.blobproperties':534 'com.azure.storage.blob.models.blobrequestconditions':264 'com.azure.storage.blob.models.blobstorageexception':614 'com.azure.storage.blob.models.deletesnapshotsoptiontype':435 'com.azure.storage.blob.models.listblobsoptions':371 'com.azure.storage.blob.options.blobparalleluploadoptions':218 'com.azure.storage.blob.sas':478 'com.azure.storage.blob.specialized.blobinputstream':315 'com.azure.storage.blob.specialized.blobleaseclient':585 'com.azure.storage.blob.specialized.blobleaseclientbuilder':587 'com.azure.storage.blob.specialized.bloboutputstream':339 'com.azure.storage.blob.specialized.blockblobclient':198 'configur':637 'conflict':633 'connect':63,672 'connectionstr':69,103,131 'construct':98,126 'contain':112,140,143,151,155,507,692 'container-level':506 'containercli':94,100 'containerclient.create':157 'containerclient.createifnotexists':158 'containerclient.generatesas':526 'containerclient.getblobclient':116,123 'containerclient.listblobs':361,381 'containerclient.listblobsbyhierarchy':410 'containernam':104,132 'containerpermiss':511,523 'containersa':525 'containersasvalu':519,527 'content':286,545 'content-typ':544 'content.tostring':290 'context.none':257,278,440 'copi':441,449,466 'core':137 'creat':139,142,146 'creation':45 'credenti':81 'criteria':763 'cross':455 'cross-account':454 'data':160,167,174,180,280,308,346,401 'data.getbytes':207 'data.length':210 'datastream':204,209 'defaultazurecredenti':72 'defaultazurecredentialbuild':83 'defaultendpointsprotocol':674 'delet':423,427,431 'deletesnapshotsoptiontype.include':437 'delimit':395,411 'describ':715,731 'direct':97,125 'directori':119,369,417 'download':279,282,291,296,310,689 'downloaded-file.txt':295 'duration.ofseconds':462 'e':620 'e.geterrorcode':627 'e.getstatuscode':623 'els':419 'endpoint':59,80,658 'environ':667,743 'environment-specif':742 'error':610,625 'etc':635 'execut':710 'exist':149,261,429 'expert':748 'expiri':492,500,522 'file':184,293 'fileinputstream':243 'folder':377 'folder/subfolder/myblob.txt':124 'found':631 'generat':473,698 'get':535 'getbloboutputstream':344 'getbyt':349 'handl':611 'header':220,251,567,569,580 'hello':168 'hierarchi':390 'http':566 'httpclient':660 'https':675 'import':48,50,74,88,109,162,197,215,217,263,314,338,353,370,392,434,444,446,477,479,533,584,586,613,639,641,643 'inetsocketaddress':651 'infinit':599 'input':757 'inputstream':240,269,312 'instal':36 'int':325 'item':409 'item.getname':418,422 'item.isprefix':415 'java':5,17,23,35,47,73,87,108,141,161,185,196,214,262,281,299,313,337,352,391,425,443,476,532,583,612,638,687 'java.net.inetsocketaddress':644 'java.time.offsetdatetime':480 'john':236 'key1':559 'key2':561 'larg':451 'large-file.bin':244 'last':549 'leas':581,596,605,608,634 'leasecli':589 'leaseclient.acquirelease':602 'leaseclient.releaselease':609 'leaseclient.renewlease':606 'leaseid':601 'length':270 'level':483,508 'limit':719 'list':350,355,365,387 'listblobsopt':372,375,396,399 'local-file.txt':187,191 'localhost':652 'map':230,554 'map.of':234,558 'match':728 'max':227,576 'max-ag':226,575 'metadata':233,253,531,553,557,564,700 'miss':765 'modifi':550 'myblob.txt':117,135 'mycontain':96,105,133,145,153 'nettyasynchttpclientbuild':662 'new':57,67,78,82,101,129,205,221,242,247,267,272,303,322,374,398,403,487,498,512,520,570,590,647,650,656,661 'null':256,277,383,413,438,439 'offsetdatetim':491 'offsetdatetime.now':493 'option':213,246,255,266,276,373,382,397,412 'output':737 'outputstream':302,306,336,617 'outputstream.tobytearray':309 'overview':718 'overwrit':177,189 'pattern':138 'permiss':486,501,758 'phrase':683 'plusday':494 'poller':460 'poller.waitforcompletion':464 'prefix':367 'process':332 'properti':529,536,538,701 'properties.getblobsize':542 'properties.getcontenttype':547 'properties.getlastmodified':551 'proxi':636,663 'proxyopt':645,646,648,664 'proxyoptions.type.http':649 'releas':607 'renew':604 'requir':756 'review':749 'safeti':759 'sas':53,474,484,509,696 'sastoken':60,503,659 'sasvalu':497,505 'scope':730 'sdk':15,21,33,693 'servic':91 'servicecli':56,66,77 'serviceclient.createblobcontainer':144 'serviceclient.createblobcontainerifnotexists':152 'serviceclient.getblobcontainerclient':95 'set':552,565 'setcachecontrol':225,574 'setcontenttyp':223,572 'setdetail':402 'sethead':250 'setifnonematch':274 'setlistpermiss':516 'setmetadata':252 'setprefix':376,400 'setreadpermiss':489,514 'setrequestcondit':271 'setretrievemetadata':405 'size':541 'skill':706,722 'skill-azure-storage-blob-java' 'snapshot':433 'source-sickn33' 'specif':744 'status':622 'stop':750 'storag':3,8,13,19,26,31,41,171,671,678,686,694 'stream':195,241,249,298,695 'string':64,165,166,231,232,288,394,502,524,555,556,600,673 'structur':120 'substitut':740 'success':762 'sync':465 'syncpol':457 'system.out.println':362,384,416,420,540,543,548,621,624 'task':726 'test':746 'text':289 'text/plain':224 'token':54,475,697 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':735 'tri':202,239,300,316,340,615 'trigger':682 'true':181,192,406,490,515,517 'type':546 'upload':159,164,175,182,193,211,258,334,348,688 'url':468,680 'use':10,28,704,720 'valid':745 'value1':560 'value2':562 'variabl':668 'version':237 'via':335 'virtual':368 'void':459 'workflow':712 'xml':37","prices":[{"id":"8d7ac591-e44c-44cf-b36f-12503d590304","listingId":"a12a676a-053c-4cde-91f1-b9f615d7bbf6","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:33:10.403Z"}],"sources":[{"listingId":"a12a676a-053c-4cde-91f1-b9f615d7bbf6","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-storage-blob-java","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-storage-blob-java","isPrimary":false,"firstSeenAt":"2026-04-18T21:33:10.403Z","lastSeenAt":"2026-04-24T18:50:34.185Z"}],"details":{"listingId":"a12a676a-053c-4cde-91f1-b9f615d7bbf6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-storage-blob-java","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34928,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"e2c909b0ee9170c19d59c0a1b330b8560d6e8c00","skill_md_path":"skills/azure-storage-blob-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-storage-blob-java"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-storage-blob-java","description":"Build blob storage applications using the Azure Storage Blob SDK for Java."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-storage-blob-java"},"updatedAt":"2026-04-24T18:50:34.185Z"}}