Agent Skills: .NET Aspire

.NET Aspire for cloud-native app orchestration, service discovery, telemetry, and component integrations

UncategorizedID: lobbi-docs/claude/dotnet-aspire

Install this agent skill to your local

pnpm dlx add-skill https://github.com/markus41/claude/tree/HEAD/plugins/dotnet-blazor/skills/dotnet-aspire

Skill Files

Browse the full folder contents for dotnet-aspire.

Download Skill

Loading file tree…

plugins/dotnet-blazor/skills/dotnet-aspire/SKILL.md

Skill Metadata

Name
dotnet-aspire
Description
.NET Aspire for cloud-native app orchestration, service discovery, telemetry, and component integrations

.NET Aspire

What is Aspire?

.NET Aspire is an opinionated, cloud-ready stack for building observable, production-ready, distributed applications. It provides:

  • Orchestration - Coordinate multi-service apps with AppHost
  • Components - Pre-configured NuGet packages for common services (Redis, PostgreSQL, RabbitMQ, etc.)
  • Tooling - Dashboard for logs, traces, metrics; CLI for management
  • Service Defaults - Shared configuration for health checks, telemetry, resilience

AppHost (Orchestrator)

// MyApp.AppHost/Program.cs
var builder = DistributedApplication.CreateBuilder(args);

// Infrastructure resources
var postgres = builder.AddPostgres("postgres").WithDataVolume().WithPgAdmin();
var redis = builder.AddRedis("redis").WithRedisInsight();
var rabbitmq = builder.AddRabbitMQ("messaging").WithManagementPlugin();

// Databases
var appDb = postgres.AddDatabase("appdb");

// Projects (services)
var api = builder.AddProject<Projects.Api>("api")
    .WithReference(appDb)
    .WithReference(redis)
    .WithReference(rabbitmq)
    .WithExternalHttpEndpoints();

var web = builder.AddProject<Projects.Web>("web")
    .WithReference(api)
    .WithReference(redis)
    .WithExternalHttpEndpoints();

var worker = builder.AddProject<Projects.Worker>("worker")
    .WithReference(rabbitmq)
    .WithReference(appDb);

builder.Build().Run();

Service Defaults

// ServiceDefaults/Extensions.cs (shared project)
public static IHostApplicationBuilder AddServiceDefaults(this IHostApplicationBuilder builder)
{
    builder.ConfigureOpenTelemetry();
    builder.AddDefaultHealthChecks();
    builder.Services.AddServiceDiscovery();

    builder.Services.ConfigureHttpClientDefaults(http =>
    {
        http.AddStandardResilienceHandler();
        http.AddServiceDiscovery();
    });

    return builder;
}

Component Integrations

| Component | NuGet Package | AddXxx Method | |-----------|--------------|---------------| | PostgreSQL (EF) | Aspire.Npgsql.EntityFrameworkCore.PostgreSQL | AddNpgsqlDbContext<T>() | | SQL Server (EF) | Aspire.Microsoft.EntityFrameworkCore.SqlServer | AddSqlServerDbContext<T>() | | Redis Cache | Aspire.StackExchange.Redis.DistributedCaching | AddRedisDistributedCache() | | Redis Output Cache | Aspire.StackExchange.Redis.OutputCaching | AddRedisOutputCache() | | RabbitMQ | Aspire.RabbitMQ.Client | AddRabbitMQClient() | | Azure Service Bus | Aspire.Azure.Messaging.ServiceBus | AddAzureServiceBusClient() | | Azure Blob Storage | Aspire.Azure.Storage.Blobs | AddAzureBlobClient() | | Cosmos DB | Aspire.Microsoft.Azure.Cosmos | AddAzureCosmosClient() |

Dashboard

The Aspire dashboard provides:

  • Structured logs from all services
  • Distributed traces across service boundaries
  • Metrics (request rates, latencies, error rates)
  • Resource status and health checks

Access at: https://localhost:18888 (default)

Deployment

# Deploy to Azure Container Apps
azd init
azd provision  # Creates Azure resources
azd deploy     # Deploys all services

# Or use Aspire CLI
aspire publish --publisher azure

Key Patterns

  • Every service project calls builder.AddServiceDefaults()
  • Use WithReference() to establish service dependencies
  • Use WithExternalHttpEndpoints() for publicly accessible services
  • Service discovery uses https+http://service-name URIs
  • All telemetry is automatically correlated across services