Get idiomatic C# and .NET guidance for architecture, async, and dependency injection.
The material indicates this is essentially a prompt/documentation-style skill for C#/.NET development, with no required secrets and no declared remote connectivity, local execution, or data read/write capabilities. Combined with its open-source GitHub source and strong community adoption, the overall risk is low.
The material explicitly states that no keys or environment variables are required; as a prompt/documentation-style skill, there is no evident path for credential collection, storage, or misuse.
No remote endpoints or networking capabilities are declared, and the material consists only of development patterns and sample code, with no sign of exfiltrating user data.
The system labels it as prompt-only, and the README appears to be static development guidance; there is no indication of spawning local processes, running scripts, or invoking system capabilities.
No filesystem, database, clipboard, or other local/remote data access permissions are declared; based on the material, its role is limited to providing coding guidance.
The source is an open-source GitHub repository, making it auditable, and it shows very strong community adoption (about 210k stars), both of which are strong positive signals. The missing license declaration and unknown maintenance status are worth noting, but without other red flags they do not justify a higher risk rating.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "dotnet-patterns" skill from askskill: 1. Download https://raw.githubusercontent.com/affaan-m/ECC/main/skills/dotnet-patterns/SKILL.md 2. Save it as ~/.claude/skills/dotnet-patterns/SKILL.md 3. Reload skills and tell me it's ready
Design a clean layered architecture for an ASP.NET Core Web API with Controller, Application, Domain, and Infrastructure layers. Explain each layer’s responsibility, dependency direction, and provide dependency injection registration advice with sample code.
A layered architecture outline, project organization advice, and idiomatic .NET DI configuration with sample code.
The following C# asynchronous code may cause blocking and inconsistent exception handling. Refactor it using .NET best practices, and explain when to use Task, ValueTask, CancellationToken, and ConfigureAwait. Code: [paste code here]
Refactored async code, analysis of the issues, and best-practice guidance for async/await usage.
Review this .NET project’s code style and architectural conventions across naming, exception handling, logging, configuration management, dependency injection, and testability. Provide an actionable improvement checklist. [paste project snippets or folder structure here]
A review of .NET project conventions, identified risks, and prioritized improvement recommendations.
Idiomatic C# and .NET patterns for building robust, performant, and maintainable applications.
Use records and init-only properties for data models. Mutability should be an explicit, justified choice.
// Good: Immutable value object
public sealed record Money(decimal Amount, string Currency);
// Good: Immutable DTO with init setters
public sealed class CreateOrderRequest
{
public required string CustomerId { get; init; }
public required IReadOnlyList<OrderItem> Items { get; init; }
}
// Bad: Mutable model with public setters
public class Order
{
public string CustomerId { get; set; }
public List<OrderItem> Items { get; set; }
}
Be clear about nullability, access modifiers, and intent.
// Good: Explicit access modifiers and nullability
public sealed class UserService
{
private readonly IUserRepository _repository;
private readonly ILogger<UserService> _logger;
public UserService(IUserRepository repository, ILogger<UserService> logger)
{
_repository = repository ?? throw new ArgumentNullException(nameof(repository));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public async Task<User?> FindByIdAsync(Guid id, CancellationToken cancellationToken)
{
return await _repository.FindByIdAsync(id, cancellationToken);
}
}
Use interfaces for service boundaries. Register via DI container.
// Good: Interface-based dependency
public interface IOrderRepository
{
Task<Order?> FindByIdAsync(Guid id, CancellationToken cancellationToken);
Task<IReadOnlyList<Order>> FindByCustomerAsync(string customerId, CancellationToken cancellationToken);
Task AddAsync(Order order, CancellationToken cancellationToken);
}
// Registration
builder.Services.AddScoped<IOrderRepository, SqlOrderRepository>();
// Good: Async all the way, with CancellationToken
public async Task<OrderSummary> GetOrderSummaryAsync(
Guid orderId,
CancellationToken cancellationToken)
{
var order = await _repository.FindByIdAsync(orderId, cancellationToken)
?? throw new NotFoundException($"Order {orderId} not found");
var customer = await _customerService.GetAsync(order.CustomerId, cancellationToken);
return new OrderSummary(order, customer);
}
// Bad: Blocking on async
public OrderSummary GetOrderSummary(Guid orderId)
{
var order = _repository.FindByIdAsync(orderId, CancellationToken.None).Result; // Deadlock risk
return new OrderSummary(order);
}
// Good: Concurrent independent operations
public async Task<DashboardData> LoadDashboardAsync(CancellationToken cancellationToken)
{
var ordersTask = _orderService.GetRecentAsync(cancellationToken);
var metricsTask = _metricsService.GetCurrentAsync(cancellationToken);
var alertsTask = _alertService.GetActiveAsync(cancellationToken);
await Task.WhenAll(ordersTask, metricsTask, alertsTask);
return new DashboardData(
Orders: await ordersTask,
Metrics: await metricsTask,
Alerts: await alertsTask);
}
Bind configuration sections to strongly-typed objects.
public sealed class SmtpOptions
{
public const string SectionName = "Smtp";
public required string Host { get; init; }
public required int Port { get; init; }
public required string Username { get; init; }
public bool UseSsl { get; init; } = true;
}
// Registration
builder.Services.Configure<SmtpOptions>(
builder.Configuration.GetSection(SmtpOptions.SectionName));
// Usage via injection
…
Run repo tasks, debug CI, and deliver fixes with verified evidence.
Process documents with OCR, conversion, extraction, redaction, signing, and form filling.
Build robust Django tests with pytest-django, TDD, mocks, factories, and API coverage.
Research prediction market signals for products, dashboards, agents, and decision intelligence.
Learn frontend patterns for React, Next.js, state, performance, and UI best practices.
Handle HIPAA privacy, security, PHI, and breach compliance tasks correctly.
Apply idiomatic Kotlin patterns to build robust, efficient, maintainable applications.
Learn idiomatic Go patterns and best practices for robust, maintainable applications.
Learn idiomatic Rust patterns, ownership, concurrency, and robust error handling practices.
Learn Pythonic patterns, type hints, and best practices for maintainable code.
Apply NestJS architecture patterns to build maintainable production-ready TypeScript backends.
Build, review, refactor, and architect modern ASP.NET Core web applications.