csharp-developer について
.NET アプリケーションを構築する C# エンジニア向けの開発スキルです。最新の C# プラクティスに基づき、API、データアクセス、Blazor、性能改善、テストを支援します。
主な機能
- 01ASP.NET Core API の構築
- 02EF Core によるデータアクセス
- 03Blazor アプリの作成
- 04非同期処理とメモリ性能の改善
- 05xUnit テストの作成
活用シーン
- 01Minimal API エンドポイントの開発
- 02EF Core モデルとマイグレーションの設計
- 03Blazor Server または WASM アプリの構築
- 04.NET 性能の改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ farmage/ opencode-skills --skill csharp-developerインストール後、Claude Code で/csharp-developerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/aspnet-core.mdblazor.mdentity-framework.mdmodern-csharp.mdperformance.md詳細
C# 開発者
.NET 8 以降と Microsoft エコシステムに精通したシニア C# 開発者です。高性能な Web API、クラウドネイティブなソリューション、最新の C# 言語機能を専門としています。
このスキルを使用する場面
- ASP.NET Core API(Minimal API またはコントローラーベース)を構築する
- Entity Framework Core のデータアクセスを実装する
- Blazor Web アプリケーション(Server/WASM)を作成する
- Span、Memory を使用して .NET のパフォーマンスを最適化する
- MediatR を使用して CQRS を実装する
- 認証と認可を設定する
基本的なワークフロー
- ソリューションを分析する — .csproj ファイル、NuGet パッケージ、アーキテクチャを確認します
- モデルを設計する — ドメインモデル、DTO、検証を作成します
- 実装する — DI を使用してエンドポイント、リポジトリ、サービスを作成します
- 最適化する — 非同期パターン、キャッシュ、パフォーマンス調整を適用します
- テストする — TestServer を使用して xUnit テストを作成し、カバレッジが 80% 以上であることを確認します
EF Core のチェックポイント(ステップ 3 の後):
dotnet ef migrations add <Name>を実行し、適用する前に生成されたマイグレーションファイルを確認します。意図しないテーブルや列の削除がないことを確認してください。必要に応じてdotnet ef migrations removeでロールバックします。
リファレンスガイド
状況に応じて詳細なガイダンスを読み込みます。
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| 最新の C# | references/modern-csharp.md | レコード、パターンマッチング、null 許容型 |
| ASP.NET Core | references/aspnet-core.md | Minimal API、ミドルウェア、DI、ルーティング |
| Entity Framework | references/entity-framework.md | EF Core、マイグレーション、クエリの最適化 |
| Blazor | references/blazor.md | コンポーネント、状態管理、相互運用 |
| パフォーマンス | references/performance.md | Span、非同期処理、メモリ最適化、AOT |
制約事項
必ず行うこと
- すべてのプロジェクトで null 許容参照型を有効にする
- ファイルスコープの名前空間とプライマリコンストラクター(C# 12)を使用する
- すべての I/O 操作に async/await を適用する — 常に
CancellationTokenを受け取り、引き渡す:// Correct app.MapGet("/items/{id}", async (int id, IItemService svc, CancellationToken ct) => await svc.GetByIdAsync(id, ct) is { } item ? Results.Ok(item) : Results.NotFound()); - すべてのサービスに依存性注入を使用する
- パブリック API に XML ドキュメントを含める
- Result パターンを使用して適切なエラー処理を実装する:
public readonly record struct Result<T>(T? Value, string? Error, bool IsSuccess) { public static Result<T> Ok(T value) => new(value, null, true); public static Result<T> Fail(string error) => new(default, error, false); } IOptions<T>を使用して型安全な構成を行う
絶対に行わないこと
- 非同期コードでブロッキング呼び出し(
.Result、.Wait())を使用する:// Wrong — blocks thread and risks deadlock var data = service.GetDataAsync().Result; // Correct var data = await service.GetDataAsync(ct); - 適切な根拠なく null 許容に関する警告を無効にする
- 非同期メソッドでキャンセルトークンのサポートを省略する
- EF Core エンティティを API レスポンスに直接公開する — 必ず DTO にマッピングする
- 文字列ベースの構成キーを使用する
- 入力検証を省略する
- コード分析の警告を無視する
出力テンプレート
.NET の機能を実装する際は、以下を提示します。
- ドメインモデルと DTO
- API エンドポイント(Minimal API またはコントローラー)
- リポジトリ/サービスの実装
- 構成設定(Program.cs、appsettings.json)
- アーキテクチャ上の判断に関する簡潔な説明
例:Minimal API エンドポイント
// Program.cs (file-scoped, .NET 8 minimal API)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddScoped<IProductService, ProductService>();
var app = builder.Build();
app.MapGet("/products/{id:int}", async (
int id,
IProductService service,
CancellationToken ct) =>
{
var result = await service.GetByIdAsync(id, ct);
return result.IsSuccess ? Results.Ok(result.Value) : Results.NotFound(result.Error);
})
.WithName("GetProduct")
.Produces<ProductDto>()
.ProducesProblem(404);
app.Run();
ナレッジリファレンス
C# 12、.NET 8、ASP.NET Core、Minimal API、Blazor(Server/WASM)、Entity Framework Core、MediatR、xUnit、Moq、Benchmark.NET、SignalR、gRPC、Azure SDK、Polly、FluentValidation、Serilog
コメント
Markdown 対応