# Csharp

> Use when: write or review modern, idiomatic C# with async, nullable reference types, and clean structure.

- Skill: `kimtth/csharp` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kimtth/csharp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kimtth/csharp/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kimtth (https://skillmd.com/u/kimtth)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kimtth/csharp

---


Goal: modern C# that is null-safe, async-correct, and testable.

Use for:
- new classes, services, or APIs in C#/.NET
- reviewing async usage, nullability, and structure
- modernizing legacy patterns to current language features

Workflow:
1. Enable nullable reference types and honor the warnings.
2. Use async/await end to end; never block on async code.
3. Model data with records and pattern matching.
4. Prefer immutable types and expression-bodied members.
5. Inject dependencies; program to interfaces, not concretions.
6. Verify with the test runner, analyzers, and dotnet format.

Idioms:
- records for value-like data
- LINQ for transformations over manual loops
- pattern matching and switch expressions
- using declarations for IDisposable
- CancellationToken threaded through async APIs

Rules:
- never call .Result/.Wait() on a Task; await it
- treat nullable warnings as errors to fix
- pass CancellationToken to cancellable operations
- keep methods small; depend on abstractions for testability

