swe-programming-csharp
C# coding standards from authoritative docs/explanation/software-engineering/programming-languages/c-sharp/ documentation
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
C# coding standards from authoritative docs/explanation/software-engineering/programming-languages/c-sharp/ documentation
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
UI development skill covering design token usage, shadcn/ui + Radix composition patterns, accessibility requirements, anti-patterns catalog, and brand context for OrganicLever and OSE Platform. Auto-loads when working on TSX components, CSS, or UI design tasks.
F# coding standards from authoritative docs/explanation/software-engineering/programming-languages/f-sharp/ documentation
Go coding standards quick reference for agents authoring Go code (primarily for downstream ose-primer; ose-public itself has no active Go apps)
Rust coding standards from authoritative docs/explanation/software-engineering/programming-languages/rust/ documentation
Comprehensive guide for creating by-example tutorials - code-first learning path with 75-85 heavily annotated examples achieving 95% language coverage. Covers five-part example structure, annotation density standards (1.0-2.25 comments per code line PER EXAMPLE), self-containment rules, and multiple code blocks for comparisons. Essential for creating by-example tutorials for programming languages on educational platforms
Comprehensive guide for creating in-the-field production implementation guides - production-ready code with 20-40 guides following standard library first principle, framework integration, and enterprise patterns. Essential for creating production tutorials for programming languages on educational platforms
| name | swe-programming-csharp |
| description | C# coding standards from authoritative docs/explanation/software-engineering/programming-languages/c-sharp/ documentation |
Progressive disclosure of C# coding standards for agents writing C# code.
Usage: Auto-loaded for agents when writing C# code. Provides quick reference to idioms, best practices, and antipatterns.
Authoritative Source: docs/explanation/software-engineering/programming-languages/c-sharp/README.md
IMPORTANT: This skill provides OSE Platform-specific style guides, not educational tutorials.
Complete the AyoKoding C# learning path first:
See: Programming Language Documentation Separation
Classes/Interfaces/Methods/Properties: PascalCase
ZakatCalculator, IZakatRepository, CalculateAmount(), TotalWealthLocal Variables/Parameters: camelCase
zakatAmount, nisabThreshold, paymentDatePrivate Fields: _camelCase prefix
private readonly IZakatRepository _repository;Constants: PascalCase
public const decimal ZakatRate = 0.025m;// CORRECT: Enable nullable in .csproj
// <Nullable>enable</Nullable>
// CORRECT: Non-nullable by default
public string ContractId { get; init; } = string.Empty;
// CORRECT: Nullable when intentional
public string? Notes { get; init; }
// CORRECT: Null-forgiving with justification
var value = GetValue()!; // Safe because we validated above
// CORRECT: Record for immutable value object
public record ZakatCalculation(
decimal Wealth,
decimal Nisab,
decimal Amount,
DateOnly CalculationDate
)
{
public static ZakatCalculation Calculate(decimal wealth, decimal nisab)
{
var amount = wealth >= nisab ? wealth * 0.025m : 0m;
return new ZakatCalculation(wealth, nisab, amount, DateOnly.FromDateTime(DateTime.UtcNow));
}
}
// CORRECT: async Task with CancellationToken
public async Task<ZakatCalculation> CalculateAsync(
decimal wealth,
CancellationToken cancellationToken = default)
{
var nisab = await _repository.GetCurrentNisabAsync(cancellationToken);
return ZakatCalculation.Calculate(wealth, nisab);
}
// WRONG: Blocking async code
public ZakatCalculation Calculate(decimal wealth)
{
var nisab = _repository.GetCurrentNisabAsync().Result; // DEADLOCK RISK!
return ZakatCalculation.Calculate(wealth, nisab);
}
// CORRECT: ProblemDetails for HTTP errors (RFC 7807)
app.UseExceptionHandler(exceptionHandlerApp =>
exceptionHandlerApp.Run(async context =>
{
context.Response.ContentType = "application/problem+json";
var problemDetails = new ProblemDetails
{
Status = StatusCodes.Status500InternalServerError,
Title = "An unexpected error occurred"
};
await context.Response.WriteAsJsonAsync(problemDetails);
}));
// CORRECT: Result pattern for domain errors
public Result<ZakatCalculation> Calculate(decimal wealth, decimal nisab)
{
if (wealth < 0)
return Result.Failure<ZakatCalculation>("Wealth cannot be negative");
return Result.Success(ZakatCalculation.Calculate(wealth, nisab));
}
public class ZakatCalculatorTests
{
[Theory]
[InlineData(10000, 5000, 250)]
[InlineData(3000, 5000, 0)]
public async Task CalculateAsync_ReturnsCorrectAmount(
decimal wealth, decimal nisab, decimal expectedAmount)
{
// Arrange
var mockRepo = new Mock<IZakatRepository>();
mockRepo.Setup(r => r.GetCurrentNisabAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(nisab);
var calculator = new ZakatCalculator(mockRepo.Object);
// Act
var result = await calculator.CalculateAsync(wealth);
// Assert
result.Amount.Should().Be(expectedAmount);
}
}
Authoritative Index: docs/explanation/software-engineering/programming-languages/c-sharp/README.md