mcpField
D
dotnet-core-expert

dotnet-core-expert

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

dotnet-core-expert について

APIやサービスを実装する開発者向けの、.NET 8とC# 12の開発スキルです。クリーンアーキテクチャの指針に、ビルド、セキュリティ、テストの手順を組み合わせています。

主な機能

  1. 01クリーンアーキテクチャ設計の指針
  2. 02Minimal APIとEF Coreのリファレンス
  3. 03非同期I/Oと依存性注入の実践
  4. 04ビルドと統合テストの手順
  5. 05セキュリティとOpenAPIの指針

活用シーン

  1. 01レイヤー化した.NETアプリ構成の設計
  2. 02APIエンドポイントの実装と検証
  3. 03認証と認可の追加
  4. 04xUnitとWebApplicationFactoryによるサービスのテスト

インストール

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

$npx skills add https://github.com/farmage/opencode-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 の機能を使用します
  • .csproj で <Nullable>enable</Nullable> を設定し、null 許容参照型を有効にします
  • すべての 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. アーキテクチャ上の判断についての簡潔な説明

ドキュメント

コメント