{"id":"4a3dbbb8-c54f-4186-bd15-366ccd225abf","shortId":"JzFg6x","kind":"skill","title":"azure-storage-file-share-ts","tagline":"Azure File Share JavaScript/TypeScript SDK (@azure/storage-file-share) for SMB file share operations.","description":"# @azure/storage-file-share (TypeScript/JavaScript)\n\nSDK for Azure File Share operations — SMB file shares, directories, and file operations.\n\n## Installation\n\n```bash\nnpm install @azure/storage-file-share @azure/identity\n```\n\n**Current Version**: 12.x  \n**Node.js**: >= 18.0.0\n\n## Environment Variables\n\n```bash\nAZURE_STORAGE_ACCOUNT_NAME=<account-name>\nAZURE_STORAGE_ACCOUNT_KEY=<account-key>\n# OR connection string\nAZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...\n```\n\n## Authentication\n\n### Connection String (Simplest)\n\n```typescript\nimport { ShareServiceClient } from \"@azure/storage-file-share\";\n\nconst client = ShareServiceClient.fromConnectionString(\n  process.env.AZURE_STORAGE_CONNECTION_STRING!\n);\n```\n\n### StorageSharedKeyCredential (Node.js only)\n\n```typescript\nimport { ShareServiceClient, StorageSharedKeyCredential } from \"@azure/storage-file-share\";\n\nconst accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME!;\nconst accountKey = process.env.AZURE_STORAGE_ACCOUNT_KEY!;\n\nconst sharedKeyCredential = new StorageSharedKeyCredential(accountName, accountKey);\nconst client = new ShareServiceClient(\n  `https://${accountName}.file.core.windows.net`,\n  sharedKeyCredential\n);\n```\n\n### DefaultAzureCredential\n\n```typescript\nimport { ShareServiceClient } from \"@azure/storage-file-share\";\nimport { DefaultAzureCredential } from \"@azure/identity\";\n\nconst accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME!;\nconst client = new ShareServiceClient(\n  `https://${accountName}.file.core.windows.net`,\n  new DefaultAzureCredential()\n);\n```\n\n### SAS Token\n\n```typescript\nimport { ShareServiceClient } from \"@azure/storage-file-share\";\n\nconst accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME!;\nconst sasToken = process.env.AZURE_STORAGE_SAS_TOKEN!;\n\nconst client = new ShareServiceClient(\n  `https://${accountName}.file.core.windows.net${sasToken}`\n);\n```\n\n## Client Hierarchy\n\n```\nShareServiceClient (account level)\n└── ShareClient (share level)\n    └── ShareDirectoryClient (directory level)\n        └── ShareFileClient (file level)\n```\n\n## Share Operations\n\n### Create Share\n\n```typescript\nconst shareClient = client.getShareClient(\"my-share\");\nawait shareClient.create();\n\n// Create with quota (in GB)\nawait shareClient.create({ quota: 100 });\n```\n\n### List Shares\n\n```typescript\nfor await (const share of client.listShares()) {\n  console.log(share.name, share.properties.quota);\n}\n\n// With prefix filter\nfor await (const share of client.listShares({ prefix: \"logs-\" })) {\n  console.log(share.name);\n}\n```\n\n### Delete Share\n\n```typescript\nawait shareClient.delete();\n\n// Delete if exists\nawait shareClient.deleteIfExists();\n```\n\n### Get Share Properties\n\n```typescript\nconst properties = await shareClient.getProperties();\nconsole.log(\"Quota:\", properties.quota, \"GB\");\nconsole.log(\"Last Modified:\", properties.lastModified);\n```\n\n### Set Share Quota\n\n```typescript\nawait shareClient.setQuota(200); // 200 GB\n```\n\n## Directory Operations\n\n### Create Directory\n\n```typescript\nconst directoryClient = shareClient.getDirectoryClient(\"my-directory\");\nawait directoryClient.create();\n\n// Create nested directory\nconst nestedDir = shareClient.getDirectoryClient(\"parent/child/grandchild\");\nawait nestedDir.create();\n```\n\n### List Directories and Files\n\n```typescript\nconst directoryClient = shareClient.getDirectoryClient(\"my-directory\");\n\nfor await (const item of directoryClient.listFilesAndDirectories()) {\n  if (item.kind === \"directory\") {\n    console.log(`[DIR] ${item.name}`);\n  } else {\n    console.log(`[FILE] ${item.name} (${item.properties.contentLength} bytes)`);\n  }\n}\n```\n\n### Delete Directory\n\n```typescript\nawait directoryClient.delete();\n\n// Delete if exists\nawait directoryClient.deleteIfExists();\n```\n\n### Check if Directory Exists\n\n```typescript\nconst exists = await directoryClient.exists();\nif (!exists) {\n  await directoryClient.create();\n}\n```\n\n## File Operations\n\n### Upload File (Simple)\n\n```typescript\nconst fileClient = shareClient\n  .getDirectoryClient(\"my-directory\")\n  .getFileClient(\"my-file.txt\");\n\n// Upload string\nconst content = \"Hello, World!\";\nawait fileClient.create(content.length);\nawait fileClient.uploadRange(content, 0, content.length);\n```\n\n### Upload File (Node.js - from local file)\n\n```typescript\nimport * as fs from \"fs\";\nimport * as path from \"path\";\n\nconst fileClient = shareClient.rootDirectoryClient.getFileClient(\"uploaded.txt\");\nconst localFilePath = \"/path/to/local/file.txt\";\nconst fileSize = fs.statSync(localFilePath).size;\n\nawait fileClient.create(fileSize);\nawait fileClient.uploadFile(localFilePath);\n```\n\n### Upload File (Buffer)\n\n```typescript\nconst buffer = Buffer.from(\"Hello, Azure Files!\");\nconst fileClient = shareClient.rootDirectoryClient.getFileClient(\"buffer-file.txt\");\n\nawait fileClient.create(buffer.length);\nawait fileClient.uploadRange(buffer, 0, buffer.length);\n```\n\n### Upload File (Stream)\n\n```typescript\nimport * as fs from \"fs\";\n\nconst fileClient = shareClient.rootDirectoryClient.getFileClient(\"streamed.txt\");\nconst readStream = fs.createReadStream(\"/path/to/local/file.txt\");\nconst fileSize = fs.statSync(\"/path/to/local/file.txt\").size;\n\nawait fileClient.create(fileSize);\nawait fileClient.uploadStream(readStream, fileSize, 4 * 1024 * 1024, 4); // 4MB buffer, 4 concurrency\n```\n\n### Download File\n\n```typescript\nconst fileClient = shareClient\n  .getDirectoryClient(\"my-directory\")\n  .getFileClient(\"my-file.txt\");\n\nconst downloadResponse = await fileClient.download();\n\n// Read as string\nconst chunks: Buffer[] = [];\nfor await (const chunk of downloadResponse.readableStreamBody!) {\n  chunks.push(Buffer.from(chunk));\n}\nconst content = Buffer.concat(chunks).toString(\"utf-8\");\n```\n\n### Download to File (Node.js)\n\n```typescript\nconst fileClient = shareClient.rootDirectoryClient.getFileClient(\"my-file.txt\");\nawait fileClient.downloadToFile(\"/path/to/local/destination.txt\");\n```\n\n### Download to Buffer (Node.js)\n\n```typescript\nconst fileClient = shareClient.rootDirectoryClient.getFileClient(\"my-file.txt\");\nconst buffer = await fileClient.downloadToBuffer();\nconsole.log(buffer.toString());\n```\n\n### Delete File\n\n```typescript\nconst fileClient = shareClient.rootDirectoryClient.getFileClient(\"my-file.txt\");\nawait fileClient.delete();\n\n// Delete if exists\nawait fileClient.deleteIfExists();\n```\n\n### Copy File\n\n```typescript\nconst sourceUrl = \"https://account.file.core.windows.net/share/source.txt\";\nconst destFileClient = shareClient.rootDirectoryClient.getFileClient(\"destination.txt\");\n\n// Start copy operation\nconst copyPoller = await destFileClient.startCopyFromURL(sourceUrl);\nawait copyPoller.pollUntilDone();\n```\n\n## File Properties & Metadata\n\n### Get File Properties\n\n```typescript\nconst fileClient = shareClient.rootDirectoryClient.getFileClient(\"my-file.txt\");\nconst properties = await fileClient.getProperties();\n\nconsole.log(\"Content-Length:\", properties.contentLength);\nconsole.log(\"Content-Type:\", properties.contentType);\nconsole.log(\"Last Modified:\", properties.lastModified);\nconsole.log(\"ETag:\", properties.etag);\n```\n\n### Set Metadata\n\n```typescript\nawait fileClient.setMetadata({\n  author: \"John Doe\",\n  category: \"documents\",\n});\n```\n\n### Set HTTP Headers\n\n```typescript\nawait fileClient.setHttpHeaders({\n  fileContentType: \"text/plain\",\n  fileCacheControl: \"max-age=3600\",\n  fileContentDisposition: \"attachment; filename=download.txt\",\n});\n```\n\n## Range Operations\n\n### Upload Range\n\n```typescript\nconst data = Buffer.from(\"partial content\");\nawait fileClient.uploadRange(data, 100, data.length); // Write at offset 100\n```\n\n### Download Range\n\n```typescript\nconst downloadResponse = await fileClient.download(100, 50); // offset 100, length 50\n```\n\n### Clear Range\n\n```typescript\nawait fileClient.clearRange(0, 100); // Clear first 100 bytes\n```\n\n## Snapshot Operations\n\n### Create Snapshot\n\n```typescript\nconst snapshotResponse = await shareClient.createSnapshot();\nconsole.log(\"Snapshot:\", snapshotResponse.snapshot);\n```\n\n### Access Snapshot\n\n```typescript\nconst snapshotShareClient = shareClient.withSnapshot(snapshotResponse.snapshot!);\nconst snapshotFileClient = snapshotShareClient.rootDirectoryClient.getFileClient(\"file.txt\");\nconst content = await snapshotFileClient.downloadToBuffer();\n```\n\n### Delete Snapshot\n\n```typescript\nawait shareClient.delete({ deleteSnapshots: \"include\" });\n```\n\n## SAS Token Generation (Node.js only)\n\n### Generate File SAS\n\n```typescript\nimport {\n  generateFileSASQueryParameters,\n  FileSASPermissions,\n  StorageSharedKeyCredential,\n} from \"@azure/storage-file-share\";\n\nconst sharedKeyCredential = new StorageSharedKeyCredential(accountName, accountKey);\n\nconst sasToken = generateFileSASQueryParameters(\n  {\n    shareName: \"my-share\",\n    filePath: \"my-directory/my-file.txt\",\n    permissions: FileSASPermissions.parse(\"r\"), // read only\n    expiresOn: new Date(Date.now() + 3600 * 1000), // 1 hour\n  },\n  sharedKeyCredential\n).toString();\n\nconst sasUrl = `https://${accountName}.file.core.windows.net/my-share/my-directory/my-file.txt?${sasToken}`;\n```\n\n### Generate Share SAS\n\n```typescript\nimport { ShareSASPermissions, generateFileSASQueryParameters } from \"@azure/storage-file-share\";\n\nconst sasToken = generateFileSASQueryParameters(\n  {\n    shareName: \"my-share\",\n    permissions: ShareSASPermissions.parse(\"rcwdl\"), // read, create, write, delete, list\n    expiresOn: new Date(Date.now() + 24 * 3600 * 1000), // 24 hours\n  },\n  sharedKeyCredential\n).toString();\n```\n\n## Error Handling\n\n```typescript\nimport { RestError } from \"@azure/storage-file-share\";\n\ntry {\n  await shareClient.create();\n} catch (error) {\n  if (error instanceof RestError) {\n    switch (error.statusCode) {\n      case 404:\n        console.log(\"Share not found\");\n        break;\n      case 409:\n        console.log(\"Share already exists\");\n        break;\n      case 403:\n        console.log(\"Access denied\");\n        break;\n      default:\n        console.error(`Storage error ${error.statusCode}: ${error.message}`);\n    }\n  }\n  throw error;\n}\n```\n\n## TypeScript Types Reference\n\n```typescript\nimport {\n  // Clients\n  ShareServiceClient,\n  ShareClient,\n  ShareDirectoryClient,\n  ShareFileClient,\n\n  // Authentication\n  StorageSharedKeyCredential,\n  AnonymousCredential,\n\n  // SAS\n  FileSASPermissions,\n  ShareSASPermissions,\n  AccountSASPermissions,\n  AccountSASServices,\n  AccountSASResourceTypes,\n  generateFileSASQueryParameters,\n  generateAccountSASQueryParameters,\n\n  // Options & Responses\n  ShareCreateResponse,\n  FileDownloadResponseModel,\n  DirectoryItem,\n  FileItem,\n  ShareProperties,\n  FileProperties,\n\n  // Errors\n  RestError,\n} from \"@azure/storage-file-share\";\n```\n\n## Best Practices\n\n1. **Use connection strings for simplicity** — Easiest setup for development\n2. **Use DefaultAzureCredential for production** — Enable managed identity in Azure\n3. **Set quotas on shares** — Prevent unexpected storage costs\n4. **Use streaming for large files** — `uploadStream`/`downloadToFile` for files > 256MB\n5. **Use ranges for partial updates** — More efficient than full file replacement\n6. **Create snapshots before major changes** — Point-in-time recovery\n7. **Handle errors gracefully** — Check `RestError.statusCode` for specific handling\n8. **Use `*IfExists` methods** — For idempotent operations\n\n## Platform Differences\n\n| Feature | Node.js | Browser |\n|---------|---------|---------|\n| `StorageSharedKeyCredential` | ✅ | ❌ |\n| `uploadFile()` | ✅ | ❌ |\n| `uploadStream()` | ✅ | ❌ |\n| `downloadToFile()` | ✅ | ❌ |\n| `downloadToBuffer()` | ✅ | ❌ |\n| SAS generation | ✅ | ❌ |\n| DefaultAzureCredential | ✅ | ❌ |\n| Anonymous/SAS access | ✅ | ✅ |\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","file","share","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents"],"capabilities":["skill","source-sickn33","skill-azure-storage-file-share-ts","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-file-share-ts","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 (12,048 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.594Z","embedding":null,"createdAt":"2026-04-18T21:33:14.989Z","updatedAt":"2026-04-24T18:50:34.594Z","lastSeenAt":"2026-04-24T18:50:34.594Z","tsv":"'-8':496 '/my-file.txt':728 '/my-share/my-directory/my-file.txt?$':749 '/path/to/local/destination.txt':508 '/path/to/local/file.txt':388,438,442 '/share/source.txt':545 '0':363,420,656 '1':740,867 '100':201,632,637,645,648,657,660 '1000':739,781 '1024':452,453 '12':41 '18.0.0':44 '2':877 '200':259,260 '24':779,782 '256mb':906 '3':887 '3600':614,738,780 '4':451,454,457,896 '403':819 '404':805 '409':812 '4mb':455 '5':907 '50':646,650 '6':919 '7':930 '8':939 'access':674,821,960 'account':50,54,95,101,130,151,169 'account.file.core.windows.net':544 'account.file.core.windows.net/share/source.txt':543 'accountkey':98,108,716 'accountnam':65,92,107,113,127,136,148,163,715,746 'accountsaspermiss':848 'accountsasresourcetyp':850 'accountsasservic':849 'action':973 'age':613 'alreadi':815 'anonymous/sas':959 'anonymouscredenti':844 'applic':967 'ask':1011 'attach':616 'authent':66,842 'author':597 'await':191,198,206,218,230,235,243,257,273,282,296,316,321,330,334,357,360,394,397,414,417,444,447,473,482,506,520,531,536,555,558,573,595,606,629,643,654,669,687,692,794 'azur':2,7,22,48,52,59,408,886 'azure-storage-file-share-t':1 'azure/identity':38,125 'azure/storage-file-share':12,18,37,74,90,121,146,710,759,792,864 'bash':34,47 'best':865 'boundari':1019 'break':810,817,823 'browser':950 'buffer':402,405,419,456,480,511,519 'buffer-file.txt':413 'buffer.concat':492 'buffer.from':406,488,626 'buffer.length':416,421 'buffer.tostring':523 'byte':312,661 'case':804,811,818 'catch':796 'categori':600 'chang':924 'check':323,934 'chunk':479,484,489,493 'chunks.push':487 'clarif':1013 'clear':651,658,986 'client':76,110,133,160,166,837 'client.getshareclient':187 'client.listshares':210,222 'concurr':458 'connect':57,61,67,80,869 'console.error':825 'console.log':211,225,245,249,304,308,522,575,580,585,589,671,806,813,820 'const':75,91,97,103,109,126,132,147,153,159,185,207,219,241,267,278,289,297,328,342,353,382,386,389,404,410,431,435,439,462,471,478,483,490,502,514,518,527,541,546,553,567,571,624,641,667,677,681,685,711,717,744,760 'content':354,362,491,577,582,628,686 'content-length':576 'content-typ':581 'content.length':359,364 'copi':538,551 'copypol':554 'copypoller.polluntildone':559 'cost':895 'creat':182,193,264,275,664,771,920 'criteria':1022 'current':39 'data':625,631 'data.length':633 'date':736,777 'date.now':737,778 'default':824 'defaultazurecredenti':116,123,139,879,958 'defaultendpointsprotocol':63 'delet':227,232,313,318,524,533,689,773 'deletesnapshot':694 'deni':822 'describ':974,990 'destfilecli':547 'destfileclient.startcopyfromurl':556 'destination.txt':549 'develop':876 'differ':947 'dir':305 'directori':29,175,262,265,272,277,285,294,303,314,325,348,468,727 'directorycli':268,290 'directoryclient.create':274,335 'directoryclient.delete':317 'directoryclient.deleteifexists':322 'directoryclient.exists':331 'directoryclient.listfilesanddirectories':300 'directoryitem':857 'document':601 'doe':599 'download':459,497,509,638 'download.txt':618 'downloadrespons':472,642 'downloadresponse.readablestreambody':486 'downloadtobuff':955 'downloadtofil':903,954 'easiest':873 'effici':914 'els':307 'enabl':882 'environ':45,1002 'environment-specif':1001 'error':786,797,799,827,831,861,932 'error.message':829 'error.statuscode':803,828 'etag':590 'execut':969 'exist':234,320,326,329,333,535,816 'expert':1007 'expireson':734,775 'featur':948 'file':4,8,15,23,27,31,178,287,309,336,339,366,370,401,409,423,460,499,525,539,560,564,702,901,905,917 'file.core.windows.net':114,137,164,748 'file.core.windows.net/my-share/my-directory/my-file.txt?$':747 'file.txt':684 'filecachecontrol':610 'filecli':343,383,411,432,463,503,515,528,568 'fileclient.clearrange':655 'fileclient.create':358,395,415,445 'fileclient.delete':532 'fileclient.deleteifexists':537 'fileclient.download':474,644 'fileclient.downloadtobuffer':521 'fileclient.downloadtofile':507 'fileclient.getproperties':574 'fileclient.sethttpheaders':607 'fileclient.setmetadata':596 'fileclient.uploadfile':398 'fileclient.uploadrange':361,418,630 'fileclient.uploadstream':448 'filecontentdisposit':615 'filecontenttyp':608 'filedownloadresponsemodel':856 'fileitem':858 'filenam':617 'filepath':724 'fileproperti':860 'files':390,396,440,446,450 'filesaspermiss':707,846 'filesaspermissions.parse':730 'filter':216 'first':659 'found':809 'fs':374,376,428,430 'fs.createreadstream':437 'fs.statsync':391,441 'full':916 'gb':197,248,261 'generat':698,701,751,957 'generateaccountsasqueryparamet':852 'generatefilesasqueryparamet':706,719,757,762,851 'get':237,563 'getdirectorycli':345,465 'getfilecli':349,469 'grace':933 'handl':787,931,938 'header':604 'hello':355,407 'hierarchi':167 'hour':741,783 'http':603 'https':64 'idempot':944 'ident':884 'ifexist':941 'import':71,86,118,122,143,372,377,426,705,755,789,836 'includ':695 'input':1016 'instal':33,36 'instanceof':800 'item':298 'item.kind':302 'item.name':306,310 'item.properties.contentlength':311 'javascript/typescript':10 'john':598 'key':55,102 'larg':900 'last':250,586 'length':578,649 'level':170,173,176,179 'limit':978 'list':202,284,774 'local':369 'localfilepath':387,392,399 'log':224 'major':923 'manag':883 'match':987 'max':612 'max-ag':611 'metadata':562,593 'method':942 'miss':1024 'modifi':251,587 'my-directori':270,292,346,466,725 'my-file.txt':350,470,505,517,530,570 'my-shar':188,721,764 'name':51,96,131,152 'nest':276 'nesteddir':279 'nesteddir.create':283 'new':105,111,134,138,161,713,735,776 'node.js':43,83,367,500,512,699,949 'npm':35 'offset':636,647 'oper':17,25,32,181,263,337,552,620,663,945 'option':853 'output':996 'overview':977 'parent/child/grandchild':281 'partial':627,911 'path':379,381 'permiss':729,767,1017 'platform':946 'point':926 'point-in-tim':925 'practic':866 'prefix':215,223 'prevent':892 'process.env.azure':78,93,99,128,149,155 'product':881 'properti':239,242,561,565,572 'properties.contentlength':579 'properties.contenttype':584 'properties.etag':591 'properties.lastmodified':252,588 'properties.quota':247 'quota':195,200,246,255,889 'r':731 'rang':619,622,639,652,909 'rcwdl':769 'read':475,732,770 'readstream':436,449 'recoveri':929 'refer':834 'replac':918 'requir':1015 'respons':854 'resterror':790,801,862 'resterror.statuscode':935 'review':1008 'safeti':1018 'sas':140,157,696,703,753,845,956 'sastoken':154,165,718,750,761 'sasurl':745 'scope':989 'sdk':11,20 'set':253,592,602,888 'setup':874 'share':5,9,16,24,28,172,180,183,190,203,208,220,228,238,254,723,752,766,807,814,891 'share.name':212,226 'share.properties.quota':213 'sharecli':171,186,344,464,839 'shareclient.create':192,199,795 'shareclient.createsnapshot':670 'shareclient.delete':231,693 'shareclient.deleteifexists':236 'shareclient.getdirectoryclient':269,280,291 'shareclient.getproperties':244 'shareclient.rootdirectoryclient.getfileclient':384,412,433,504,516,529,548,569 'shareclient.setquota':258 'shareclient.withsnapshot':679 'sharecreaterespons':855 'sharedirectorycli':174,840 'sharedkeycredenti':104,115,712,742,784 'sharefilecli':177,841 'sharenam':720,763 'shareproperti':859 'sharesaspermiss':756,847 'sharesaspermissions.parse':768 'shareservicecli':72,87,112,119,135,144,162,168,838 'shareserviceclient.fromconnectionstring':77 'simpl':340 'simplest':69 'simplic':872 'size':393,443 'skill':965,981 'skill-azure-storage-file-share-ts' 'smb':14,26 'snapshot':662,665,672,675,690,921 'snapshotfilecli':682 'snapshotfileclient.downloadtobuffer':688 'snapshotrespons':668 'snapshotresponse.snapshot':673,680 'snapshotsharecli':678 'snapshotshareclient.rootdirectoryclient.getfileclient':683 'source-sickn33' 'sourceurl':542,557 'specif':937,1003 'start':550 'stop':1009 'storag':3,49,53,60,79,94,100,129,150,156,826,894 'storagesharedkeycredenti':82,88,106,708,714,843,951 'stream':424,898 'streamed.txt':434 'string':58,62,68,81,352,477,870 'substitut':999 'success':1021 'switch':802 'task':985 'test':1005 'text/plain':609 'throw':830 'time':928 'token':141,158,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' 'tostr':494,743,785 'treat':994 'tri':793 'ts':6 'type':583,833 'typescript':70,85,117,142,184,204,229,240,256,266,288,315,327,341,371,403,425,461,501,513,526,540,566,594,605,623,640,653,666,676,691,704,754,788,832,835 'typescript/javascript':19 'unexpect':893 'updat':912 'upload':338,351,365,400,422,621 'uploaded.txt':385 'uploadfil':952 'uploadstream':902,953 'use':868,878,897,908,940,963,979 'utf':495 'valid':1004 'variabl':46 'version':40 'workflow':971 'world':356 'write':634,772 'x':42","prices":[{"id":"465d58ed-75e4-45f7-b0ea-24215b15dd4d","listingId":"4a3dbbb8-c54f-4186-bd15-366ccd225abf","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:14.989Z"}],"sources":[{"listingId":"4a3dbbb8-c54f-4186-bd15-366ccd225abf","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-storage-file-share-ts","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-storage-file-share-ts","isPrimary":false,"firstSeenAt":"2026-04-18T21:33:14.989Z","lastSeenAt":"2026-04-24T18:50:34.594Z"}],"details":{"listingId":"4a3dbbb8-c54f-4186-bd15-366ccd225abf","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-storage-file-share-ts","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":"c7b0f477a042e92d12dc843d4586bd0306c1791c","skill_md_path":"skills/azure-storage-file-share-ts/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-storage-file-share-ts"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-storage-file-share-ts","description":"Azure File Share JavaScript/TypeScript SDK (@azure/storage-file-share) for SMB file share operations."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-storage-file-share-ts"},"updatedAt":"2026-04-24T18:50:34.594Z"}}