Back to list
ademceper

cqrs-scaffolder

by ademceper

1🍴 0📅 Jan 23, 2026

SKILL.md


name: cqrs-scaffolder description: Scaffolds complete CQRS command or query with handler, validator, and DTO following Merge project patterns

CQRS Scaffolder Skill

Bu skill, Merge E-Commerce Backend projesi için tam CQRS yapısı oluşturur.

Ne Zaman Kullan

  • Kullanıcı "command oluştur", "query oluştur" dediğinde
  • Yeni bir CRUD operasyonu eklenirken
  • "handler yaz", "validator ekle" gibi isteklerde

Command Oluşturma

Merge.Application/{Module}/Commands/{Name}/
├── {Name}Command.cs
├── {Name}CommandHandler.cs
└── {Name}CommandValidator.cs

Command Template

public record {Name}Command(
    // Properties from user
) : IRequest<{ReturnType}>;

Handler Template

public class {Name}CommandHandler(
    IRepository<{Entity}> repository,
    IUnitOfWork unitOfWork,
    IMapper mapper,
    ILogger<{Name}CommandHandler> logger)
    : IRequestHandler<{Name}Command, {ReturnType}>
{
    public async Task<{ReturnType}> Handle(
        {Name}Command request,
        CancellationToken ct)
    {
        logger.LogInformation("Processing {Command}", nameof({Name}Command));

        // Implementation

        await unitOfWork.SaveChangesAsync(ct);
        return mapper.Map<{ReturnType}>(entity);
    }
}

Validator Template

public class {Name}CommandValidator : AbstractValidator<{Name}Command>
{
    public {Name}CommandValidator()
    {
        RuleFor(x => x.Property)
            .NotEmpty()
            .WithMessage("Property is required");
    }
}

Query Oluşturma

Merge.Application/{Module}/Queries/{Name}/
├── {Name}Query.cs
└── {Name}QueryHandler.cs

Query Template

public record {Name}Query(Guid Id) : IRequest<{ReturnType}?>;

Query Handler Template

public class {Name}QueryHandler(
    IRepository<{Entity}> repository,
    IMapper mapper,
    ICacheService cache,
    ILogger<{Name}QueryHandler> logger)
    : IRequestHandler<{Name}Query, {ReturnType}?>
{
    public async Task<{ReturnType}?> Handle(
        {Name}Query request,
        CancellationToken ct)
    {
        var cacheKey = $"{entity}:{request.Id}";

        return await cache.GetOrCreateAsync(cacheKey, async () =>
        {
            var entity = await repository.GetByIdAsync(request.Id, ct);
            return entity is null ? null : mapper.Map<{ReturnType}>(entity);
        }, TimeSpan.FromMinutes(5), ct);
    }
}

Kurallar

  1. Primary constructor kullan
  2. CancellationToken her async metotta olmalı
  3. Logger injection zorunlu
  4. Validator her command için oluşturulmalı
  5. Query'lerde cache kullan

Score

Total Score

40/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon