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 직업 분류 기준
AI agent development standards including frontmatter structure, naming conventions, tool access patterns, model selection, and reference documentation structure
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.
Comprehensive project planning standards for plans/ directory including folder structure (ideas/, backlog/, in-progress/, done/), stage-aware naming convention (done uses YYYY-MM-DD__identifier/; backlog and in-progress use identifier/ with no date prefix), five-document file organization (README.md, brd.md, prd.md, tech-docs.md, delivery.md for multi-file default; single README.md for trivially-small single-file exception), BRD/PRD content-placement rules, Gherkin acceptance criteria, and the mandatory structured multiple-choice grilling gates (pre-write and post-write) for resolving design decisions with the user. Essential for creating structured, executable project plans.
Workflow pattern standards for creating multi-agent orchestrations including YAML frontmatter (name, goal, termination, inputs, outputs), execution phases (sequential/parallel/conditional), agent coordination patterns, and Gherkin success criteria. Essential for defining reusable, validated workflow processes.
Trunk Based Development workflow - all development on main branch with small frequent commits, minimal branching, and continuous integration. Covers when branches are justified (exceptional cases only), commit patterns, feature flag usage for incomplete work, environment branch rules (deployment only), and AI agent default behavior (the repo-wide default delivery mode is `worktree-to-pr` -- a short-lived plan branch in a disposable worktree pushed to a draft PR; direct push to main remains available as an explicit selection). Essential for understanding repository git workflow and keeping branches short-lived
Common software development workflow patterns shared across all language developer agents
| 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