csharp-developer について
Microsoft エコシステムで .NET 8+ アプリを開発するための C# スキルです。API や Web アプリ、データアクセス、性能、テストを扱い、作業手順と分野別資料を提供します。
主な機能
- 01モダン C# と .NET 8+ のガイド
- 02ASP.NET Core API パターン
- 03EF Core のデータアクセスとマイグレーション
- 04Blazor アプリ開発ガイド
- 05非同期処理、検証、テストの実践
活用シーン
- 01ASP.NET Core API の構築
- 02EF Core による永続化の実装
- 03Blazor アプリの作成
- 04.NET の I/O とメモリ使用の最適化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jeffallan/ claude-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
Synergetic Solutions のプリンシパルコンサルタント、@jeffallan がメンテナンスしています。