home / skills / duc01226 / easyplatform / generate-dto
/.claude/skills/generate-dto
This skill generates a DTO for a given entity in C#, mapping core properties and enabling optional load methods.
npx playbooks add skill duc01226/easyplatform --skill generate-dtoReview the files below or copy the command above to add this skill to your agents.
---
name: generate-dto
description: "[Implementation] Generate entity DTO from an existing entity"
infer: true
---
Generate DTO for entity: $ARGUMENTS
## Instructions
1. **Parse arguments**:
- Entity name (required): e.g., `Employee`, `TextSnippetText`
- Options: `--with-mapping` (include MapToEntity), `--minimal` (core props only)
2. **Find the entity**:
- Search in `*.Domain/Entities/` folders
- Read the entity class to understand its properties
3. **Generate DTO following platform patterns**:
Location: `*.Application/EntityDtos/<EntityName>Dto.cs`
Template:
```csharp
public class {Entity}Dto : PlatformEntityDto<{Entity}, string>
{
// Empty constructor required
public {Entity}Dto() { }
// Constructor maps from entity
public {Entity}Dto({Entity} entity) : base(entity)
{
// Map core properties
}
// CORE PROPERTIES
public string? Id { get; set; }
// ... other properties from entity
// OPTIONAL LOAD PROPERTIES (for With* methods)
public RelatedDto? Related { get; set; }
// WITH* FLUENT METHODS
public {Entity}Dto WithRelated(RelatedEntity related)
{
Related = new RelatedDto(related);
return this;
}
// PLATFORM OVERRIDES
protected override object? GetSubmittedId() => Id;
protected override string GenerateNewId() => Ulid.NewUlid().ToString();
protected override {Entity} MapToEntity({Entity} entity, MapToEntityModes mode)
{
// Map DTO properties back to entity
return entity;
}
}
```
4. **Read the template file** for complete pattern:
- `.github/prompts/create-entity-dto.prompt.md`
5. **After generation**:
- Show the generated DTO
- Ask if any properties should be excluded or modified
- Offer to create the file
## IMPORTANT Task Planning Notes
- Always plan and break many small todo tasks
- Always add a final review todo task to review the works done at the end to find any fix or enhancement needed
This skill generates a C# Data Transfer Object (DTO) for an existing domain entity. It reads the entity class, follows platform DTO patterns, and produces a ready-to-use DTO file with constructors, core properties, optional load properties, fluent With* methods, and platform overrides. It can optionally include a MapToEntity implementation or emit a minimal DTO with core properties only.
The skill parses command-line arguments to identify the entity name and options (--with-mapping, --minimal). It searches project folders for the entity under *.Domain/Entities/, reads the class to extract properties and navigation relations, then applies the platform DTO template to generate a file at *.Application/EntityDtos/<EntityName>Dto.cs. After generation it presents the DTO content, prompts for exclusions or modifications, and offers to create the file.
What does --with-mapping do?
It includes a MapToEntity implementation in the DTO so the DTO can map its values back onto an existing entity instance.
What is produced with --minimal?
The minimal option emits only core properties (typically Id and primitive scalar props) and omits optional load properties and fluent With* methods.