mcpField
D
dotnet-core-expert

dotnet-core-expert

github.com/jeffallan開発12.1k4.8k 回インストール今日更新
リポジトリ

dotnet-core-expert について

.NET 8 と C# 12 のモダンな実践に重点を置く .NET Core 開発スキルです。クリーンアーキテクチャ、安全な API 実装、EF Core の利用を導き、ビルドとテストで検証します。

主な機能

  1. 01クリーンアーキテクチャのガイド
  2. 02モダンな .NET 8 と C# 12 のパターン
  3. 03Minimal API と OpenAPI のガイド
  4. 04EF Core と認証の資料
  5. 05ビルドと統合テストのワークフロー

活用シーン

  1. 01レイヤー化された .NET ソリューションの設計
  2. 02安全な API の実装
  3. 03EF Core によるデータアクセス構築
  4. 04ビルドとテストによるアプリの検証

インストール

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

$npx skills add https://github.com/jeffallan/claude-skills --skill dotnet-core-expert

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

同梱ファイル

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

references/
authentication.md
clean-architecture.md
cloud-native.md
entity-framework.md
minimal-apis.md

詳細

.NET Core エキスパート

コアワークフロー

  1. 要件を分析する — アーキテクチャパターン、データモデル、API 設計を特定します
  2. ソリューションを設計する — 適切に分離されたクリーンアーキテクチャのレイヤーを作成します
  3. 実装する — 最新の C# 機能を使用して高パフォーマンスなコードを記述し、dotnet build を実行してコンパイルを確認します。ビルドに失敗した場合は、エラーを確認して問題を修正し、先に進む前に再ビルドします
  4. セキュリティを確保する — 認証、認可、セキュリティのベストプラクティスを追加します
  5. テストする — xUnit と統合テストを使用して包括的なテストを作成し、dotnet test を実行してすべてのテストが成功することを確認します。テストに失敗した場合は、失敗の原因を診断して実装を修正し、続行する前に再実行します。curl または REST クライアントでエンドポイントを検証します

リファレンスガイド

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

トピックリファレンス読み込むタイミング
Minimal APIreferences/minimal-apis.mdエンドポイント、ルーティング、ミドルウェアを作成するとき
クリーンアーキテクチャreferences/clean-architecture.mdCQRS、MediatR、レイヤー、DI パターンを扱うとき
Entity Frameworkreferences/entity-framework.mdDbContext、マイグレーション、リレーションシップを扱うとき
認証references/authentication.mdJWT、Identity、認可ポリシーを扱うとき
クラウドネイティブreferences/cloud-native.mdDocker、ヘルスチェック、構成を扱うとき

制約事項

必ず行うこと
  • .NET 8 と C# 12 の機能を使用します
  • nullable 参照型を有効にします:.csproj で <Nullable>enable</Nullable> を指定します
  • すべての I/O 操作で async/await を使用します。例:await dbContext.Users.ToListAsync()
  • 適切な依存性注入を実装します
  • DTO には record 型を使用します。例:public record UserDto(int Id, string Name);
  • クリーンアーキテクチャの原則に従います
  • WebApplicationFactory<Program> を使用して統合テストを作成します
  • OpenAPI/Swagger ドキュメントを構成します
絶対に行わないこと
  • 同期 I/O 操作を使用する
  • API レスポンスでエンティティを直接公開する
  • 入力検証を省略する
  • レガシーな .NET Framework のパターンを使用する
  • アーキテクチャレイヤー間で関心事を混在させる
  • 非推奨の EF Core パターンを使用する

コード例

Minimal API エンドポイント
// Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Program).Assembly));

var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();

app.MapGet("/users/{id}", async (int id, ISender sender, CancellationToken ct) =>
{
    var result = await sender.Send(new GetUserQuery(id), ct);
    return result is null ? Results.NotFound() : Results.Ok(result);
})
.WithName("GetUser")
.Produces<UserDto>()
.ProducesProblem(404);

app.Run();
MediatR クエリハンドラー
// Application/Users/GetUserQuery.cs
public record GetUserQuery(int Id) : IRequest<UserDto?>;

public sealed class GetUserQueryHandler : IRequestHandler<GetUserQuery, UserDto?>
{
    private readonly AppDbContext _db;

    public GetUserQueryHandler(AppDbContext db) => _db = db;

    public async Task<UserDto?> Handle(GetUserQuery request, CancellationToken ct) =>
        await _db.Users
            .AsNoTracking()
            .Where(u => u.Id == request.Id)
            .Select(u => new UserDto(u.Id, u.Name))
            .FirstOrDefaultAsync(ct);
}
非同期クエリを使用する EF Core DbContext
// Infrastructure/AppDbContext.cs
public sealed class AppDbContext(DbContextOptions<AppDbContext> options) : DbContext(options)
{
    public DbSet<User> Users => Set<User>();

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
    }
}

// Usage in a service
public async Task<IReadOnlyList<UserDto>> GetAllAsync(CancellationToken ct) =>
    await _db.Users
        .AsNoTracking()
        .Select(u => new UserDto(u.Id, u.Name))
        .ToListAsync(ct);
Record 型を使用した DTO
public record UserDto(int Id, string Name);
public record CreateUserRequest(string Name, string Email);

出力テンプレート

.NET の機能を実装する際は、以下を提示します。

  1. プロジェクト構造(ソリューション/プロジェクトファイル)
  2. ドメインモデルと DTO
  3. API エンドポイントまたはサービスの実装
  4. 該当する場合はデータベースコンテキストとマイグレーション
  5. アーキテクチャ上の判断についての簡潔な説明

@jeffallan(Synergetic Solutions のプリンシパルコンサルタント)が管理しています

ドキュメント

コメント