NYC

azure-expert

SKILL.md

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

Weekly Installs
20
First Seen
Jan 24, 2026
Installed on
opencode16
claude-code15
codex14
gemini-cli13
antigravity11
github-copilot10