scaffold-crud
Scaffold complete CRUD cho một entity — tạo tất cả files (Entity, Enum, DTOs, 4 Commands, 2 Queries, Controller, UoW update, Migration)
SKILL.md.claude/skills/dev/be/scaffold-crud/SKILL.md
GitHubScaffold Full CRUD $ARGUMENTS
Usage: /scaffold-crud ServiceName EntityName
Example: /scaffold-crud BatteryService Battery
Skill này tạo tất cả files cho một CRUD feature hoàn chỉnh.
Files sẽ tạo (16 files)
Domain (2)
Domain/Entities/{Entity}.csDomain/Enums/{Entity}StatusEnum.cs
Application (13)
Application/DTOs/Response/{Entity}Response.cs— DTO + nested DTOs + response wrappersApplication/Commands/{Entity}Create/{Entity}CreateCommand.csApplication/Commands/{Entity}Create/{Entity}CreateCommandHandler.csApplication/Commands/{Entity}Update/{Entity}UpdateCommand.csApplication/Commands/{Entity}Update/{Entity}UpdateCommandHandler.csApplication/Commands/{Entity}Delete/{Entity}DeleteCommand.csApplication/Commands/{Entity}Delete/{Entity}DeleteCommandHandler.csApplication/Commands/{Entity}Restore/{Entity}RestoreCommand.csApplication/Commands/{Entity}Restore/{Entity}RestoreCommandHandler.csApplication/Queries/{Entity}GetList/{Entity}GetListQuery.csApplication/Queries/{Entity}GetList/{Entity}GetListQueryHandler.csApplication/Queries/{Entity}GetById/{Entity}GetByIdQuery.csApplication/Queries/{Entity}GetById/{Entity}GetByIdQueryHandler.cs
Api (1)
Api/Controllers/{Entity}Controller.cs
Files Updated (3)
Infrastructure/Persistence/ApplicationDbContext.cs— add DbSetApplication/Interfaces/I{Service}UnitOfWork.cs— add repositoryInfrastructure/Implements/UnitOfWork.cs— init repository
Migration (1)
dotnet ef migrations add Add{Entity}
Thứ tự thực hiện
Chạy các skills theo thứ tự:
/scaffold-entity {Service} {Entity}/scaffold-dto {Service} {Entity}/scaffold-cqrs-command {Service} {Entity} Create/scaffold-cqrs-command {Service} {Entity} Update/scaffold-cqrs-command {Service} {Entity} Delete/scaffold-cqrs-command {Service} {Entity} Restore/scaffold-cqrs-query {Service} {Entity} GetList/scaffold-cqrs-query {Service} {Entity} GetById/scaffold-controller {Service} {Entity}/run-migration {Service} Add{Entity}
API Endpoints sau khi hoàn thành
| Method | Route | Auth | Handler |
|---|---|---|---|
| GET | /api/{entities} |
Public | {Entity}GetListQueryHandler |
| GET | /api/{entities}/{id} |
Public | {Entity}GetByIdQueryHandler |
| POST | /api/{entities} |
Auth | {Entity}CreateCommandHandler |
| PUT | /api/{entities}/{id} |
Auth | {Entity}UpdateCommandHandler |
| DELETE | /api/{entities}/{id} |
Admin | {Entity}DeleteCommandHandler |
| PATCH | /api/{entities}/{id} |
Admin | {Entity}RestoreCommandHandler |
Query Params cho GetList
?searchTerm=abc— text search?status=1— enum filter?parentId=guid— FK filter?isDeleted=false— soft delete filter?isDescending=true— ordering?fields=id,name,status— data shaping?hasParent=true— conditional include?pageNumber=1&pageSize=10— pagination