feat: Add Official Microsoft & Gemini Skills (845+ Total)
🚀 Impact Significantly expands the capabilities of **Antigravity Awesome Skills** by integrating official skill collections from **Microsoft** and **Google Gemini**. This update increases the total skill count to **845+**, making the library even more comprehensive for AI coding assistants. ✨ Key Changes 1. New Official Skills - **Microsoft Skills**: Added a massive collection of official skills from [microsoft/skills](https://github.com/microsoft/skills). - Includes Azure, .NET, Python, TypeScript, and Semantic Kernel skills. - Preserves the original directory structure under `skills/official/microsoft/`. - Includes plugin skills from the `.github/plugins` directory. - **Gemini Skills**: Added official Gemini API development skills under `skills/gemini-api-dev/`. 2. New Scripts & Tooling - **`scripts/sync_microsoft_skills.py`**: A robust synchronization script that: - Clones the official Microsoft repository. - Preserves the original directory heirarchy. - Handles symlinks and plugin locations. - Generates attribution metadata. - **`scripts/tests/inspect_microsoft_repo.py`**: Debug tool to inspect the remote repository structure. - **`scripts/tests/test_comprehensive_coverage.py`**: Verification script to ensure 100% of skills are captured during sync. 3. Core Improvements - **`scripts/generate_index.py`**: Enhanced frontmatter parsing to safely handle unquoted values containing `@` symbols and commas (fixing issues with some Microsoft skill descriptions). - **`package.json`**: Added `sync:microsoft` and `sync:all-official` scripts for easy maintenance. 4. Documentation - Updated `README.md` to reflect the new skill counts (845+) and added Microsoft/Gemini to the provider list. - Updated `CATALOG.md` and `skills_index.json` with the new skills. 🧪 Verification - Ran `scripts/tests/test_comprehensive_coverage.py` to verify all Microsoft skills are detected. - Validated `generate_index.py` fixes by successfully indexing the new skills.
This commit is contained in:
238
skills/official/microsoft/python/data/fileshare/SKILL.md
Normal file
238
skills/official/microsoft/python/data/fileshare/SKILL.md
Normal file
@@ -0,0 +1,238 @@
|
||||
---
|
||||
name: azure-storage-file-share-py
|
||||
description: |
|
||||
Azure Storage File Share SDK for Python. Use for SMB file shares, directories, and file operations in the cloud.
|
||||
Triggers: "azure-storage-file-share", "ShareServiceClient", "ShareClient", "file share", "SMB".
|
||||
---
|
||||
|
||||
# Azure Storage File Share SDK for Python
|
||||
|
||||
Manage SMB file shares for cloud-native and lift-and-shift scenarios.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install azure-storage-file-share
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
```bash
|
||||
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...
|
||||
# Or
|
||||
AZURE_STORAGE_ACCOUNT_URL=https://<account>.file.core.windows.net
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
### Connection String
|
||||
|
||||
```python
|
||||
from azure.storage.fileshare import ShareServiceClient
|
||||
|
||||
service = ShareServiceClient.from_connection_string(
|
||||
os.environ["AZURE_STORAGE_CONNECTION_STRING"]
|
||||
)
|
||||
```
|
||||
|
||||
### Entra ID
|
||||
|
||||
```python
|
||||
from azure.storage.fileshare import ShareServiceClient
|
||||
from azure.identity import DefaultAzureCredential
|
||||
|
||||
service = ShareServiceClient(
|
||||
account_url=os.environ["AZURE_STORAGE_ACCOUNT_URL"],
|
||||
credential=DefaultAzureCredential()
|
||||
)
|
||||
```
|
||||
|
||||
## Share Operations
|
||||
|
||||
### Create Share
|
||||
|
||||
```python
|
||||
share = service.create_share("my-share")
|
||||
```
|
||||
|
||||
### List Shares
|
||||
|
||||
```python
|
||||
for share in service.list_shares():
|
||||
print(f"{share.name}: {share.quota} GB")
|
||||
```
|
||||
|
||||
### Get Share Client
|
||||
|
||||
```python
|
||||
share_client = service.get_share_client("my-share")
|
||||
```
|
||||
|
||||
### Delete Share
|
||||
|
||||
```python
|
||||
service.delete_share("my-share")
|
||||
```
|
||||
|
||||
## Directory Operations
|
||||
|
||||
### Create Directory
|
||||
|
||||
```python
|
||||
share_client = service.get_share_client("my-share")
|
||||
share_client.create_directory("my-directory")
|
||||
|
||||
# Nested directory
|
||||
share_client.create_directory("my-directory/sub-directory")
|
||||
```
|
||||
|
||||
### List Directories and Files
|
||||
|
||||
```python
|
||||
directory_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)")
|
||||
```
|
||||
|
||||
### Delete Directory
|
||||
|
||||
```python
|
||||
share_client.delete_directory("my-directory")
|
||||
```
|
||||
|
||||
## File Operations
|
||||
|
||||
### Upload File
|
||||
|
||||
```python
|
||||
file_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")
|
||||
```
|
||||
|
||||
### Download File
|
||||
|
||||
```python
|
||||
file_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)
|
||||
```
|
||||
|
||||
### Get File Properties
|
||||
|
||||
```python
|
||||
properties = 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}")
|
||||
```
|
||||
|
||||
### Delete File
|
||||
|
||||
```python
|
||||
file_client.delete_file()
|
||||
```
|
||||
|
||||
### Copy File
|
||||
|
||||
```python
|
||||
source_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)
|
||||
```
|
||||
|
||||
## Range Operations
|
||||
|
||||
### Upload Range
|
||||
|
||||
```python
|
||||
# Upload to specific range
|
||||
file_client.upload_range(data=b"content", offset=0, length=7)
|
||||
```
|
||||
|
||||
### Download Range
|
||||
|
||||
```python
|
||||
# Download specific range
|
||||
download = file_client.download_file(offset=0, length=100)
|
||||
data = download.readall()
|
||||
```
|
||||
|
||||
## Snapshot Operations
|
||||
|
||||
### Create Snapshot
|
||||
|
||||
```python
|
||||
snapshot = share_client.create_snapshot()
|
||||
print(f"Snapshot: {snapshot['snapshot']}")
|
||||
```
|
||||
|
||||
### Access Snapshot
|
||||
|
||||
```python
|
||||
snapshot_client = service.get_share_client(
|
||||
"my-share",
|
||||
snapshot=snapshot["snapshot"]
|
||||
)
|
||||
```
|
||||
|
||||
## Async Client
|
||||
|
||||
```python
|
||||
from 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 Types
|
||||
|
||||
| Client | Purpose |
|
||||
|--------|---------|
|
||||
| `ShareServiceClient` | Account-level operations |
|
||||
| `ShareClient` | Share operations |
|
||||
| `ShareDirectoryClient` | Directory operations |
|
||||
| `ShareFileClient` | File operations |
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Use connection string** for simplest setup
|
||||
2. **Use Entra ID** for production with RBAC
|
||||
3. **Stream large files** using chunks() to avoid memory issues
|
||||
4. **Create snapshots** before major changes
|
||||
5. **Set quotas** to prevent unexpected storage costs
|
||||
6. **Use ranges** for partial file updates
|
||||
7. **Close async clients** explicitly
|
||||
Reference in New Issue
Block a user