.NET Aspire for local development orchestration and service defaults. Covers AppHost configuration, service discovery, and local resource provisioning. Trigger: Aspire, orchestration, service defaults, local development, AppHost.
From dotnet-ai-kitnpx claudepluginhub faysilalshareef/dotnet-ai-kit --plugin dotnet-ai-kitThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
.NET Aspire orchestrates all microservices for local developmentAppHost project defines the service topologyServiceDefaults project provides shared configuration (OpenTelemetry, health checks)// {Company}.{Domain}.AppHost/Program.cs
var builder = DistributedApplication.CreateBuilder(args);
// Infrastructure resources
var sqlServer = builder.AddSqlServer("sql")
.WithDataVolume("sql-data");
var commandDb = sqlServer.AddDatabase("command-db");
var queryDb = sqlServer.AddDatabase("query-db");
var serviceBus = builder.AddAzureServiceBus("servicebus")
.RunAsEmulator();
// Command service
var commandService = builder.AddProject<Projects.{Company}_{Domain}_Command>("command")
.WithReference(commandDb)
.WithReference(serviceBus);
// Query service
var queryService = builder.AddProject<Projects.{Company}_{Domain}_Query>("query")
.WithReference(queryDb)
.WithReference(serviceBus);
// Processor service
var processor = builder.AddProject<Projects.{Company}_{Domain}_Processor>("processor")
.WithReference(serviceBus)
.WithReference(commandService)
.WithReference(queryService);
// Gateway
var gateway = builder.AddProject<Projects.{Company}_{Domain}_Gateway>("gateway")
.WithReference(commandService)
.WithReference(queryService)
.WithExternalHttpEndpoints();
builder.Build().Run();
// {Company}.{Domain}.ServiceDefaults/Extensions.cs
public static class Extensions
{
public static IHostApplicationBuilder AddServiceDefaults(
this IHostApplicationBuilder builder)
{
builder.ConfigureOpenTelemetry();
builder.AddDefaultHealthChecks();
builder.Services.AddServiceDiscovery();
builder.Services.ConfigureHttpClientDefaults(http =>
{
http.AddStandardResilienceHandler();
http.AddServiceDiscovery();
});
return builder;
}
public static IHostApplicationBuilder ConfigureOpenTelemetry(
this IHostApplicationBuilder builder)
{
builder.Logging.AddOpenTelemetry(logging =>
{
logging.IncludeFormattedMessage = true;
logging.IncludeScopes = true;
});
builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddRuntimeInstrumentation();
})
.WithTracing(tracing =>
{
tracing.AddAspNetCoreInstrumentation()
.AddGrpcClientInstrumentation()
.AddHttpClientInstrumentation();
});
builder.AddOpenTelemetryExporters();
return builder;
}
public static IHostApplicationBuilder AddDefaultHealthChecks(
this IHostApplicationBuilder builder)
{
builder.Services.AddHealthChecks()
.AddCheck("self", () => HealthCheckResult.Healthy());
return builder;
}
}
// Program.cs of any service
var builder = WebApplication.CreateBuilder(args);
builder.AddServiceDefaults();
// ... service-specific configuration ...
var app = builder.Build();
app.MapDefaultEndpoints(); // Maps /health/ready and /health/live
// In AppHost
var cosmos = builder.AddAzureCosmosDB("cosmos")
.RunAsEmulator();
var cosmosDb = cosmos.AddDatabase("domain-db");
builder.AddProject<Projects.CosmosQuery>("cosmos-query")
.WithReference(cosmosDb);
| Anti-Pattern | Correct Approach |
|---|---|
| Hardcoded connection strings locally | Use Aspire service discovery |
| Running infrastructure manually | Use Aspire to provision resources |
| Separate observability setup per service | Use ServiceDefaults project |
| Missing health endpoints | Call AddServiceDefaults() + MapDefaultEndpoints() |
# Find AppHost project
find . -name "*AppHost*" -type d
# Find ServiceDefaults
find . -name "*ServiceDefaults*" -type d
# Find Aspire references
grep -r "AddServiceDefaults\|DistributedApplication" --include="*.cs" src/
# Find Aspire packages
grep -r "Aspire" --include="*.csproj" src/
ServiceDefaults project from new servicesAddProject<T> and appropriate references