mcpField
C
csharp-developer

csharp-developer

github.com/farmage開発224282 回インストール5 週間前に更新
リポジトリ

csharp-developer について

.NET アプリケーションを構築する C# エンジニア向けの開発スキルです。最新の C# プラクティスに基づき、API、データアクセス、Blazor、性能改善、テストを支援します。

主な機能

  1. 01ASP.NET Core API の構築
  2. 02EF Core によるデータアクセス
  3. 03Blazor アプリの作成
  4. 04非同期処理とメモリ性能の改善
  5. 05xUnit テストの作成

活用シーン

  1. 01Minimal API エンドポイントの開発
  2. 02EF Core モデルとマイグレーションの設計
  3. 03Blazor Server または WASM アプリの構築
  4. 04.NET 性能の改善

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/farmage/opencode-skills --skill csharp-developer

インストール後、Claude Code で/csharp-developerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
aspnet-core.md
blazor.md
entity-framework.md
modern-csharp.md
performance.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 を実装する
  • 認証と認可を設定する

基本的なワークフロー

  1. ソリューションを分析する — .csproj ファイル、NuGet パッケージ、アーキテクチャを確認します
  2. モデルを設計する — ドメインモデル、DTO、検証を作成します
  3. 実装する — DI を使用してエンドポイント、リポジトリ、サービスを作成します
  4. 最適化する — 非同期パターン、キャッシュ、パフォーマンス調整を適用します
  5. テストする — TestServer を使用して xUnit テストを作成し、カバレッジが 80% 以上であることを確認します

EF Core のチェックポイント(ステップ 3 の後): dotnet ef migrations add <Name> を実行し、適用する前に生成されたマイグレーションファイルを確認します。意図しないテーブルや列の削除がないことを確認してください。必要に応じて dotnet ef migrations remove でロールバックします。

リファレンスガイド

状況に応じて詳細なガイダンスを読み込みます。

トピックリファレンス読み込むタイミング
最新の C#references/modern-csharp.mdレコード、パターンマッチング、null 許容型
ASP.NET Corereferences/aspnet-core.mdMinimal API、ミドルウェア、DI、ルーティング
Entity Frameworkreferences/entity-framework.mdEF Core、マイグレーション、クエリの最適化
Blazorreferences/blazor.mdコンポーネント、状態管理、相互運用
パフォーマンスreferences/performance.mdSpan、非同期処理、メモリ最適化、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 の機能を実装する際は、以下を提示します。

  1. ドメインモデルと DTO
  2. API エンドポイント(Minimal API またはコントローラー)
  3. リポジトリ/サービスの実装
  4. 構成設定(Program.cs、appsettings.json)
  5. アーキテクチャ上の判断に関する簡潔な説明

例: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

ドキュメント

コメント