agent-health
Reads production/traces/agent-metrics.jsonl and displays a per-agent performance summary table for the current or a specified…
Provides .NET and ASP.NET Core patterns for REST APIs, Entity Framework, dependency injection, and middleware. Use when working with C# files (*.cs, *.csproj) or when the user mentions .NET, ASP.NET Core, C#, or Entity Framework.
Claude Code
$ npx -y skills add tranhieutt/software_development_department --skill dotnet-backend-patterns --agent claude-code
Codex
$ npx skills add tranhieutt/software_development_department --skill dotnet-backend-patterns -a codex -y
Cursor
$ npx skills add tranhieutt/software_development_department --skill dotnet-backend-patterns -a cursor -y
Gemini CLI
$ npx skills add tranhieutt/software_development_department --skill dotnet-backend-patterns -a gemini-cli -y
GitHub Copilot
$ npx skills add tranhieutt/software_development_department --skill dotnet-backend-patterns -a github-copilot -y
OpenCode
$ npx skills add tranhieutt/software_development_department --skill dotnet-backend-patterns -a opencode -y
Windsurf
$ npx skills add tranhieutt/software_development_department --skill dotnet-backend-patterns -a windsurf -y
name: dotnet-backend-patterns type: reference description: "Provides .NET and ASP.NET Core patterns for REST APIs, Entity Framework, dependency injection, and middleware. Use when working with C# files (*.cs, *.csproj) or when the user mentions .NET, ASP.NET Core, C#, or Entity Framework." paths: ["**/*.cs", "**/*.csproj", "**/*.sln", "**/appsettings*.json"] effort: 3 allowed-tools: Read, Glob, Grep user-invocable: true when_to_use: "When building C#/.NET backend APIs, MCP servers, or enterprise applications with Entity Framework or Dapper"
C#/.NET patterns for production-grade APIs, MCP servers, and enterprise backends.
\`\`\`csharp // Program.cs - Minimal API var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext<AppDbContext>(o => o.UseNpgsql(connStr)); builder.Services.AddScoped<IOrderService, OrderService>();
var app = builder.Build(); app.MapGet("/orders/{id}", async (int id, IOrderService svc) => await svc.GetByIdAsync(id) is { } order ? Results.Ok(order) : Results.NotFound()); \`\`\`
\`\`\`csharp // Register services builder.Services.AddScoped<IPaymentService, StripePaymentService>(); builder.Services.AddSingleton<ICacheService, RedisCacheService>(); builder.Services.AddHttpClient<IApiClient, ExternalApiClient>(client => { client.BaseAddress = new Uri("https://api.external.com"); }); \`\`\`
Lifetime guide: Singleton (stateless/cache), Scoped (per-request), Transient (stateless utility).
\`\`\`csharp // DbContext with conventions public class AppDbContext : DbContext { public DbSet<Order> Orders => Set<Order>(); protected override void OnModelCreating(ModelBuilder builder) { builder.Entity<Order>().HasIndex(o => o.UserId); builder.Entity<Order>().Property(o => o.Total).HasPrecision(18, 2); } } \`\`\`
Performance tips:
\`\`\`csharp app.UseMiddleware<RequestLoggingMiddleware>(); app.UseAuthentication(); app.UseAuthorization(); app.UseRateLimiter(); app.MapControllers(); \`\`\`
\`\`\`csharp // Global exception handler app.UseExceptionHandler(err => err.Run(async context => { var exception = context.Features.Get<IExceptionHandlerFeature>()?.Error; var (status, message) = exception switch { NotFoundException => (404, exception.Message), UnauthorizedAccessException => (403, "Forbidden"), _ => (500, "Internal server error") }; context.Response.StatusCode = status; await context.Response.WriteAsJsonAsync(new { error = message }); })); \`\`\`
\`\`\`csharp builder.Services.Configure<StripeSettings>( builder.Configuration.GetSection("Stripe"));
// Usage public class PaymentService(IOptions<StripeSettings> opts) { private readonly string _key = opts.Value.SecretKey; } \`\`\`
\`\`\`csharp // Integration test with WebApplicationFactory public class OrderApiTests : IClassFixture<WebApplicationFactory<Program>> { private readonly HttpClient _client; [Fact] public async Task GetOrder_ReturnsOk() { var response = await _client.GetAsync("/orders/1"); response.StatusCode.Should().Be(HttpStatusCode.OK); } } \`\`\`
Reads production/traces/agent-metrics.jsonl and displays a per-agent performance summary table for the current or a specified…
Provides the vendored agent-style v0.3.5 prose rule pack as a portable Claude skill. Use when installing, syncing, applying, or…
Provides Angular best practices for components, modules, services, and reactive patterns. Use when working with Angular…
Records unexpected API behaviors, undocumented caveats, version bugs, or non-obvious workarounds into…
Defines REST and GraphQL API contracts including endpoints, request/response schemas, auth flows, and versioning strategy. Use…
Manages the ADR (Architecture Decision Record) registry. Use when recording tech-stack choices, design patterns, or…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.