Claude-skill-registry azure-expert
Expert-level Microsoft Azure cloud platform, services, and architecture
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/azure-expert" ~/.claude/skills/majiayu000-claude-skill-registry-azure-expert && rm -rf "$T"
manifest:
skills/data/azure-expert/SKILL.mdsource content
Microsoft Azure Expert
Expert guidance for Microsoft Azure cloud platform, services, and cloud-native architecture.
Core Concepts
- Azure Resource Manager (ARM)
- Virtual Machines and App Services
- Azure Functions (serverless)
- Azure Storage (Blob, Queue, Table)
- Azure SQL Database
- Cosmos DB
- Azure Kubernetes Service (AKS)
- Azure Active Directory
Azure CLI
# Login az login # Create resource group az group create --name myResourceGroup --location eastus # Create VM az vm create \ --resource-group myResourceGroup \ --name myVM \ --image UbuntuLTS \ --admin-username azureuser \ --generate-ssh-keys # Create App Service az webapp create \ --resource-group myResourceGroup \ --plan myAppServicePlan \ --name myWebApp \ --runtime "NODE|14-lts" # Create storage account az storage account create \ --name mystorageaccount \ --resource-group myResourceGroup \ --location eastus \ --sku Standard_LRS
Azure Functions
import azure.functions as func import logging app = func.FunctionApp() @app.function_name(name="HttpTrigger") @app.route(route="hello") def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') name = req.params.get('name') if not name: try: req_body = req.get_json() name = req_body.get('name') except ValueError: pass if name: return func.HttpResponse(f"Hello, {name}!") else: return func.HttpResponse( "Please pass a name", status_code=400 ) @app.function_name(name="QueueTrigger") @app.queue_trigger(arg_name="msg", queue_name="myqueue", connection="AzureWebJobsStorage") def queue_trigger(msg: func.QueueMessage): logging.info(f'Python queue trigger function processed: {msg.get_body().decode("utf-8")}')
Cosmos DB
from azure.cosmos import CosmosClient, PartitionKey endpoint = "https://myaccount.documents.azure.com:443/" key = "YOUR_KEY" client = CosmosClient(endpoint, key) database = client.create_database_if_not_exists(id="myDatabase") container = database.create_container_if_not_exists( id="myContainer", partition_key=PartitionKey(path="/userId") ) # Create item item = { "id": "1", "userId": "user123", "name": "John Doe" } container.create_item(body=item) # Query items query = "SELECT * FROM c WHERE c.userId = @userId" items = container.query_items( query=query, parameters=[{"name": "@userId", "value": "user123"}], enable_cross_partition_query=True ) for item in items: print(item)
ARM Templates
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ { "type": "Microsoft.Web/sites", "apiVersion": "2021-02-01", "name": "[parameters('webAppName')]", "location": "[parameters('location')]", "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]" } } ] }
Best Practices
- Use managed identities
- Implement Azure Key Vault
- Tag resources properly
- Use ARM templates or Bicep
- Monitor with Azure Monitor
- Implement auto-scaling
- Use availability zones
Anti-Patterns
❌ Hardcoded credentials ❌ No resource tagging ❌ Single region deployment ❌ No backup strategy ❌ Ignoring cost optimization ❌ Not using managed services
Resources
- Azure Documentation: https://docs.microsoft.com/azure/
- Azure CLI: https://docs.microsoft.com/cli/azure/