microsoft-development

📁 practicalswan/agent-skills 📅 1 day ago
2
总安装量
2
周安装量
#75748
全站排名
安装命令
npx skills add https://github.com/practicalswan/agent-skills --skill microsoft-development

Agent 安装分布

opencode 2
gemini-cli 2
claude-code 2
github-copilot 2
codex 2
kimi-cli 2

Skill 文档

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

Comprehensive skill for Microsoft technology development including Azure, .NET, Microsoft 365, Windows, and Power Platform.

When to Use This Skill

  • Querying official Microsoft documentation for Azure, .NET, Microsoft 365, or Windows
  • Verifying Microsoft API methods, packages, and signatures before implementation
  • Finding official code samples for Azure SDKs, Graph, or Power Platform workflows
  • Building or troubleshooting applications on Microsoft cloud/platform services
  • Validating Microsoft-specific limits, configuration, and best practices

Part 1: Microsoft Documentation

When to Use Docs

  • Understanding concepts — “How does Cosmos DB partitioning work?”
  • Learning a service — “Azure Functions overview”, “Container Apps architecture”
  • Finding tutorials — “quickstart”, “getting started”, “step-by-step”
  • Configuration options — “App Service configuration settings”
  • Limits & quotas — “Azure OpenAI rate limits”, “Service Bus quotas”
  • Best practices — “Azure security best practices”

Tools

Tool Use For
microsoft_docs_search Find documentation—concepts, guides, tutorials, configuration
microsoft_docs_fetch Get full page content (when search excerpts aren’t enough)

Query Effective Tips

Good queries are specific:



## Skill Paths

- Workspace skills: `.github/skills/`
- Global skills: `C:/Users/LOQ/.agents/skills/`

"Azure Functions"



## Skill Paths

- Workspace skills: `.github/skills/`
- Global skills: `C:/Users/LOQ/.agents/skills/`

"Azure Functions Python v2 programming model"
"Cosmos DB partition key design best practices"
"Container Apps scaling rules KEDA"

Include Context in Queries

  • Version when relevant (@.NET 8, @EF Core 8)
  • Task intent (quickstart, tutorial, overview, limits)
  • Platform for multi-platform docs (Linux, Windows)

When to Fetch Full Page

Fetch after search when:

  • Tutorials — need complete step-by-step instructions
  • Configuration guides — need all options listed
  • Deep dives — user wants comprehensive coverage
  • API references — need complete method signatures and overloads

Query Examples



## Skill Paths

- Workspace skills: `.github/skills/`
- Global skills: `C:/Users/LOQ/.agents/skills/`

microsoft_docs_search("Azure Static Web Apps deployment patterns")
microsoft_docs_search(".NET Core dependency injection best practices")
microsoft_docs_search("Power BI row-level security implementation")



## Skill Paths

- Workspace skills: `.github/skills/`
- Global skills: `C:/Users/LOQ/.agents/skills/`

microsoft_docs_search("App Service app settings reference")
microsoft_docs_search("Functions host.json configuration options")



## Skill Paths

- Workspace skills: `.github/skills/`
- Global skills: `C:/Users/LOQ/.agents/skills/`

microsoft_docs_search("Azure OpenAI rate limits pricing tiers")
microsoft_docs_search("Azure Storage account limits and quotas")

Part 2: Microsoft Code Reference

Tools

Need Tool Example
API method/class lookup microsoft_docs_search "BlobClient UploadAsync Azure.Storage.Blobs"
Working code sample microsoft_code_sample_search query: "upload blob managed identity", language: "python"
Full API reference microsoft_docs_fetch Fetch URL from search (for overloads, full signatures)

Finding Code Samples

Use microsoft_code_sample_search to get official, working examples:

microsoft_code_sample_search(query="upload file to blob storage", language="csharp")
microsoft_code_sample_search(query="authenticate with managed identity", language="python")
microsoft_code_sample_search(query="send message service bus", language="javascript")
microsoft_code_sample_search(query="Power BI embed report", language="csharp")

When to use code samples:

  • Before writing code — find a working pattern to follow
  • After errors — compare your code against a known-good sample
  • Unsure of initialization/setup — samples show complete context
  • New API usage — see recommended patterns from Microsoft

API Lookups

Use microsoft_docs_search to verify methods exist and find correct usage:

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

“BlobClient UploadAsync Azure.Storage.Blobs” “GraphServiceClient Users Microsoft.Graph”

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

“DefaultAzureCredential class Azure.Identity” “IOptions interface Microsoft.Extensions”

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

“Azure Blob Storage NuGet package” “azure-storage-blob pip package” “Microsoft.Graph SDK npm”

Error Troubleshooting Workflow

When encountering errors with Microsoft APIs:

  1. Search the error: "Service Bus timeout error Azure"
  2. Find code samples with similar scenarios
  3. Verify method signatures: Check parameter types and order
  4. Review best practices: Official docs often show anti-patterns

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

microsoft_docs_search(“request body too large Service Bus”)

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

microsoft_code_sample_search(query=”configure Service Bus message size limit”, language=”python”)

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

microsoft_docs_search(“ServiceBusClient configuration options”)


Part 3: Azure Development Workflows

Azure Storage (Blobs)

Common Tasks

Upload file to blob storage:

// Using Azure.Storage.Blobs
var blobServiceClient = new BlobServiceClient(connectionString);
var blobContainerClient = blobServiceClient.GetBlobContainerClient("mycontainer");
var blobClient = blobContainerClient.GetBlobClient("myfile.txt");

await blobClient.UploadAsync(filePath);
// Using azure-storage-blob
from azure.storage.blob import BlobServiceClient

blob_service_client = BlobServiceClient.from_connection_string(connection_string)
blob_client = blob_service_client.get_blob_client(container="mycontainer", blob="myfile.txt")

with open("myfile.txt", "rb") as data:
    blob_client.upload_blob(data)

Download file:

const { BlobServiceClient } = require("@azure/storage-blob");

const blobServiceClient = BlobServiceClient.fromConnectionString(connectionString);
const containerClient = blobServiceClient.getContainerClient("mycontainer");
const blobClient = containerClient.getBlobClient("myfile.txt");

await blobClient.downloadToFile("downloaded.txt");

List blobs with filtering:

await foreach (var blob in blobContainerClient.GetBlobsAsync())
{
    if (blob.Name.EndsWith(".txt"))
    {
        Console.WriteLine($"{blob.Name} (Size: {blob.Properties.ContentLength})");
    }
}

Azure Functions

HTTP Trigger Function

// .NET 8 Isolated Worker
using Microsoft.Azure.Functions.Worker;

[Function("HttpExample")]
public HttpResponseData Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
    FunctionContext executionContext)
{
    var logger = executionContext.GetLogger("HttpExample");
    logger.LogInformation("C# HTTP trigger function processed a request.");

    var response = new HttpResponseData(HttpStatusCode.OK);
    response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
    response.Body = $"Welcome to Azure Functions, {req.Query["name"]}!";

    return response;
}
// Node.js v4 model
const { app } = require('@azure/functions');

app.http('httpExample', {
    route: 'hello/{name:alpha}',
    methods: ['GET'],
    authLevel: 'function',
    handler: async (request, context) => {
        const name = request.params.name || 'world';
        return { body: `Hello, ${name}!` };
    }
});

Cosmos DB

Basic Document Operations

from azure.cosmos import CosmosClient import azure.cosmos.cosmos_client as cosmos_client

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

client = CosmosClient(url, credential) database = client.get_database_client(“mydatabase”) container = database.get_container_client(“mycontainer”)

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

item = { “id”: “1”, “name”: “John Doe”, “age”: 30 } container.create_item(item)

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

for item in container.query_items( query=”SELECT * FROM c WHERE c.age > @age”, parameters=[{“name”: “@age”, “value”: 25}] ): print(item)

Azure App Service / Static Web Apps

Configuration



## Skill Paths

- Workspace skills: `.github/skills/`
- Global skills: `C:/Users/LOQ/.agents/skills/`

config:
  appLocation: "/"
  outputLocation: "dist"
  apiLocation: "api"

platform:
  apiRuntime: "node:18"

production:
  branch: "main"
  pullRequestPreviewSettings:
    branch: "main"

GitHub Actions



## Skill Paths

- Workspace skills: `.github/skills/`
- Global skills: `C:/Users/LOQ/.agents/skills/`

name: Deploy to Azure

on:
  push:
    branches: [ main ]

env:
  AZURE_WEBAPP_NAME: "myapp"
  AZURE_WEBAPP_PACKAGE_PATH: "./dist"

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "18"

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Deploy to Azure Static Web Apps
        uses: azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          action: "upload"
          app_location: "src"
          api_location: "api"
          output_location: "dist"

Part 4: .NET Development

Common Patterns

Dependency Injection

// Program.cs
var builder = WebApplication.CreateBuilder(args);

// Register services
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(connectionString));

builder.Services.AddScoped<IRepository, EFRepository>();
builder.Services.AddHttpClient();

var app = builder.Build();

// Inject in controllers
app.MapControllers();

app.Run();

Async/Await Best Practices

// ✅ Correct - ConfigureAwait(true)
public async Task<IEnumerable<User>> GetUsersAsync()
{
    var users = await _repository.GetAllAsync().ConfigureAwait(false);
    return users;
}

// ✅ Correct - Use async all the way
public async Task<User> CreateUserAsync(User user)
{
    _dbContext.Users.Add(user);
    await _dbContext.SaveChangesAsync().ConfigureAwait(false);
    return user;
}

Logging

// Constructor injection
public class ProductService
{
    private readonly ILogger<ProductService> _logger;

    public ProductService(ILogger<ProductService> logger)
    {
        _logger = logger;
    }

    public void ProcessProducts()
    {
        _logger.LogInformation("Starting product processing");
        // ... code
        _logger.LogWarning("Product count exceeds threshold: {Count}", count);
    }
}

Part 5: Microsoft Graph

Microsoft Graph Authentication

// Using Azure.Identity and Microsoft.Graph
using Azure.Identity;
using Microsoft.Graph;

var credential = new ClientSecretCredential(
    tenantId,
    clientId,
    clientSecret);

var graphClient = new GraphServiceClient(credential, new[] { "https://graph.microsoft.com/.default" });
// Using @azure/identity and @microsoft/microsoft-graph-client
const { ClientSecretCredential } = require("@azure/identity");
const { Client } = require("@microsoft/microsoft-graph-client");

const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
const client = Client.initWithMiddleware({
    authenticationProvider: credential,
});

Common Operations

Get user:

var user = await graphClient.Users["user@example.com"].GetAsync();
Console.WriteLine($"User: {user.DisplayName} ({user.Mail})");

Send email:

var message = new Message
{
    Subject = "Meeting Tomorrow",
    Body = new ItemBody
    {
        ContentType = BodyType.Text,
        Content = "Don't forget about our meeting at 2 PM."
    },
    ToRecipients = new[] { new Recipient { EmailAddress = new EmailAddress { Address = "recipient@example.com" } } }
};

await graphClient.Me.SendMailAsync(message);

Part 6: Development Best Practices

Azure Best Practices

  • Use Managed Identities instead of hardcoded credentials
  • Configure diagnostics and logging from the start
  • Follow resource naming conventions for organization
  • Use resource tags for cost tracking and organization
  • Set up RBAC with principle of least privilege
  • Implement retry policies for transient failures
  • Monitor application health with Application Insights

.NET Best Practices

  • Use async/await properly – ConfigureAwait for non-UI code
  • Validate inputs early – fail fast with meaningful errors
  • Use dependency injection – don’t create service instances manually
  • Implement proper logging – structured logging with correlation IDs
  • Follow SOLID principles – design for testability
  • Use configuration patterns – IOptions for configuration
  • Implement proper exception handling – don’t catch base Exception

Microsoft Graph Best Practices

  • Use batch requests – combine multiple operations
  • Select specific properties – avoid $select=* when possible
  • Use delta queries – for syncing changes
  • Implement proper error handling – handle throttling (429 responses)
  • Cache frequently accessed data – reduce API calls

Part 7: Troubleshooting Guide

Common Error Patterns

Authentication Errors

Error: "The remote server returned an error: (401) Unauthorized"

Solutions:
1. Verify credentials are correct
2. Check token hasn't expired
3. Verify right permissions/scopes are granted
4. For Azure: check Managed Identity is properly configured

Configuration Errors

Error: "Configuration value not found" or "Invalid connection string"

Solutions:
1. Verify key names in appsettings.json / environment variables
2. Check connection string format (semicolon-separated key=value pairs)
3. For Azure: Use GetConnectionString() or proper secret reference

API Limiting

Error: "Request rate limit exceeded" or HTTP 429

Solutions:
1. Implement retry with exponential backoff
2. Use batching for multiple operations
3. Increase service tier if needed
4. Implement caching to reduce unnecessary calls

Debugging Steps

  1. Enable verbose logging – increase log level to DEBUG
  2. Use Application Insights – monitor live metrics and dependencies
  3. Check official documentation – search error message or scenario
  4. Review code samples – compare working example to your code
  5. Verify configuration – all connection strings, credentials, URLs correct

Quick Reference: Microsoft Development

Azure Services Common Packages

Service NuGet Package pip Package npm Package
Blob Storage Azure.Storage.Blobs azure-storage-blob @azure/storage-blob
Cosmos DB Microsoft.Azure.Cosmos azure-cosmos @azure/cosmos
Functions Microsoft.Azure.Functions.Worker azure-functions @azure/functions
App Service none (built-in) none (built-in) none (built-in)
Key Vault Azure.Security.KeyVault.Secrets azure-keyvault-secrets @azure/keyvault-secrets

.NET Common Namespaces

// Core
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Configuration;

// Azure
using Azure.Identity;
using Azure.Storage.Blobs;
using Microsoft.Azure.Cosmos;

// General
using System.Net;
using System.Text.Json;

Common Search Queries

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

“Azure Storage best practices” “Azure Functions performance optimization” “Cosmos DB partitioning design” “Azure App Service deployment”

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

“.NET Core dependency injection patterns” “Entity Framework Core async best practices” “.NET 8 performance improvements” “C# async await ConfigureAwait”

Skill Paths

  • Workspace skills: .github/skills/
  • Global skills: C:/Users/LOQ/.agents/skills/

“Microsoft Graph API authentication” “Microsoft Graph batch requests” “Graph Explorer usage”

References & Resources

Documentation

Scripts

Examples