Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Azure Storage File Share SDK for Python. Use for SMB file shares, directories, and file operations in the cloud.
.claude/skills/azure-storage-file-share-py/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-09 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✓→✓ | = Same ✓ | — | — |
| case-05 | ✓→✓ | = Same ✓ | — | — |
Manage SMB file shares for cloud-native and lift-and-shift scenarios.
bashpip install azure-storage-file-share
bashAZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...;AccountKey=... # Or AZURE_STORAGE_ACCOUNT_URL=https://<account>.file.core.windows.net
pythonfrom azure.storage.fileshare import ShareServiceClient service = ShareServiceClient.from_connection_string( os.environ["AZURE_STORAGE_CONNECTION_STRING"] )
pythonfrom azure.storage.fileshare import ShareServiceClient from azure.identity import DefaultAzureCredential service = ShareServiceClient( account_url=os.environ["AZURE_STORAGE_ACCOUNT_URL"], credential=DefaultAzureCredential() )
pythonshare = service.create_share("my-share")
pythonfor share in service.list_shares(): print(f"{share.name}: {share.quota} GB")
pythonshare_client = service.get_share_client("my-share")
pythonservice.delete_share("my-share")
pythonshare_client = service.get_share_client("my-share") share_client.create_directory("my-directory") # Nested directory share_client.create_directory("my-directory/sub-directory")
pythondirectory_client = share_client.get_directory_client("my-directory") for item in directory_client.list_directories_and_files(): if item["is_directory"]: print(f"[DIR] {item['name']}") else: print(f"[FILE] {item['name']} ({item['size']} bytes)")
pythonshare_client.delete_directory("my-directory")
pythonfile_client = share_client.get_file_client("my-directory/file.txt") # From string file_client.upload_file("Hello, World!") # From file with open("local-file.txt", "rb") as f: file_client.upload_file(f) # From bytes file_client.upload_file(b"Binary content")
pythonfile_client = share_client.get_file_client("my-directory/file.txt") # To bytes data = file_client.download_file().readall() # To file with open("downloaded.txt", "wb") as f: data = file_client.download_file() data.readinto(f) # Stream chunks download = file_client.download_file() for chunk in download.chunks(): process(chunk)
pythonproperties = file_client.get_file_properties() print(f"Size: {properties.size}") print(f"Content type: {properties.content_settings.content_type}") print(f"Last modified: {properties.last_modified}")
pythonfile_client.delete_file()
pythonsource_url = "https://account.file.core.windows.net/share/source.txt" dest_client = share_client.get_file_client("destination.txt") dest_client.start_copy_from_url(source_url)
python# Upload to specific range file_client.upload_range(data=b"content", offset=0, length=7)
python# Download specific range download = file_client.download_file(offset=0, length=100) data = download.readall()
pythonsnapshot = share_client.create_snapshot() print(f"Snapshot: {snapshot['snapshot']}")
pythonsnapshot_client = service.get_share_client( "my-share", snapshot=snapshot["snapshot"] )
pythonfrom azure.storage.fileshare.aio import ShareServiceClient from azure.identity.aio import DefaultAzureCredential async def upload_file(): credential = DefaultAzureCredential() service = ShareServiceClient(account_url, credential=credential) share = service.get_share_client("my-share") file_client = share.get_file_client("test.txt") await file_client.upload_file("Hello!") await service.close() await credential.close()
| Client | Purpose | |--------|---------| | ShareServiceClient | Account-level operations | | ShareClient | Share operations | | ShareDirectoryClient | Directory operations | | ShareFileClient | File operations |
This skill is applicable to execute the workflow or actions described in the overview.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +13 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.