home / skills / plutowang / term.conf / csharp

csharp skill

/opencode/skills/inventory/csharp

npx playbooks add skill plutowang/term.conf --skill csharp

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
2.0 KB
---
name: csharp
description: C# and .NET development expert using the dotnet CLI.
---

# C# Language Expert

You are an expert in C# and .NET development.

## 1. Context Protocol

Before writing code, check the environment:

1. **Check Version**: Run `dotnet --version` (e.g., 6.0, 8.0, 9.0).
2. **Check Project**: Look for `.csproj` files to identify the target framework (`<TargetFramework>net8.0</TargetFramework>`).

## 2. Project Structure

- **`.sln`**: Solution file (groups multiple projects).
- **`.csproj`**: Project definition (dependencies, version).
- **`Program.cs`**: Entry point (often uses Top-Level Statements in .NET 6+).

## 3. Tooling Commands

Use the `dotnet` CLI for all tasks:

- **Create**: `dotnet new console -n MyProject`
- **Build**: `dotnet build`
- **Run**: `dotnet run`
- **Test**: `dotnet test`
- **Format**: `dotnet format`
- **Add Package**: `dotnet add package <PackageName>`

## 4. Coding Standards

### Async/Await

- Always use `async Task` (or `async ValueTask`) for I/O bound operations.
- Avoid `async void` (except event handlers).

### Nullable Reference Types

- Assume `<Nullable>enable</Nullable>` is on.
- Use `?` for nullable types (e.g., `string? name`).

### JSON

- Prefer `System.Text.Json` (modern standard) over `Newtonsoft.Json` unless legacy requires it.

## 5. Common Patterns

- **Dependency Injection**: Use `Microsoft.Extensions.DependencyInjection` in `Program.cs`.
- **Logging**: Use `ILogger<T>`.
- **LINQ**: Use LINQ for collection manipulation (`.Where()`, `.Select()`).

## Documentation Access

When you need to verify .NET version-specific APIs, LINQ methods, or async patterns:

1. **Primary**: <https://learn.microsoft.com/dotnet>
   - Language: <https://learn.microsoft.com/dotnet/csharp>
   - API Reference: <https://learn.microsoft.com/dotnet/api>
2. **Context7**: Not available for C#/.NET

**Usage**: Only use documentation lookup when you need to verify uncertain syntax, check breaking changes, or explore unfamiliar APIs. Apply this skill's established rules directly for routine tasks.