xiaohongshu
xiaohongshu
abp-contract-scaffolding
Generate ABP Application.Contracts layer scaffolding (interfaces, DTOs, permissions) from technical design. Enables parallel development by abp-developer and qa-engineer. Use when: (1) backend-architect needs to generate contracts, (2) preparing for parallel implementation workflow, (3) creating ...
Full skill instructions
Generate Application.Contracts layer code to enable parallel development workflows.
Contract scaffolding separates interface design from implementation, enabling:
abp-developer to implement against defined interfacesqa-engineer to write tests against interfaces (before implementation exists)/add-feature workflow{Project}.Application.Contracts/
├── {Feature}/
│ ├── I{Entity}AppService.cs # Service interface
│ ├── {Entity}Dto.cs # Output DTO
│ ├── Create{Entity}Dto.cs # Create input
│ ├── Update{Entity}Dto.cs # Update input
│ └── Get{Entity}sInput.cs # List filter/pagination
└── Permissions/
└── {Entity}Permissions.cs # Permission constants
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace {ProjectName}.{Feature};
/// <summary>
/// Application service interface for {Entity} management.
/// </summary>
public interface I{Entity}AppService : IApplicationService
{
/// <summary>
/// Gets a paginated list of {entities}.
/// </summary>
Task<PagedResultDto<{Entity}Dto>> GetListAsync(Get{Entity}sInput input);
/// <summary>
/// Gets a single {entity} by ID.
/// </summary>
Task<{Entity}Dto> GetAsync(Guid id);
/// <summary>
/// Creates a new {entity}.
/// </summary>
Task<{Entity}Dto> CreateAsync(Create{Entity}Dto input);
/// <summary>
/// Updates an existing {entity}.
/// </summary>
Task<{Entity}Dto> UpdateAsync(Guid id, Update{Entity}Dto input);
/// <summary>
/// Deletes a {entity} by ID.
/// </summary>
Task DeleteAsync(Guid id);
}
using System;
using Volo.Abp.Application.Dtos;
namespace {ProjectName}.{Feature};
/// <summary>
/// DTO for {Entity} output.
/// Inherits audit fields from FullAuditedEntityDto.
/// </summary>
public class {Entity}Dto : FullAuditedEntityDto<Guid>
{
/// <summary>
/// {Property description}
/// </summary>
public {Type} {PropertyName} { get; set; }
// Add properties matching entity definition
}
using System;
namespace {ProjectName}.{Feature};
/// <summary>
/// DTO for creating a new {Entity}.
/// Validation is handled by FluentValidation in Application layer.
/// </summary>
public class Create{Entity}Dto
{
/// <summary>
/// {Property description}
/// </summary>
/// <remarks>Required. Max length: {N} characters.</remarks>
public string {PropertyName} { get; set; } = string.Empty;
// Add required properties for creation
}
using System;
namespace {ProjectName}.{Feature};
/// <summary>
/// DTO for updating an existing {Entity}.
/// Validation is handled by FluentValidation in Application layer.
/// </summary>
public class Update{Entity}Dto
{
/// <summary>
/// {Property description}
/// </summary>
public string {PropertyName} { get; set; } = string.Empty;
// Add updatable properties
}
using Volo.Abp.Application.Dtos;
namespace {ProjectName}.{Feature};
/// <summary>
/// Input DTO for filtering and paginating {Entity} list.
/// </summary>
public class Get{Entity}sInput : PagedAndSortedResultRequestDto
{
/// <summary>
/// Optional text filter for searching by name or description.
/// </summary>
public string? Filter { get; set; }
/// <summary>
/// Optional filter by active status.
/// </summary>
public bool? IsActive { get; set; }
// Add entity-specific filters
}
namespace {ProjectName}.Permissions;
/// <summary>
/// Permission constants for {Entity} management.
/// These are registered in {ProjectName}PermissionDefinitionProvider.
/// </summary>
public static class {Entity}Permissions
{
/// <summary>
/// Permission group name.
/// </summary>
public const string GroupName = "{ProjectName}.{Entities}";
/// <summary>
/// Default permission (view/list).
/// </summary>
public const string Default = GroupName;
/// <summary>
/// Permission to create new {entities}.
/// </summary>
public const string Create = GroupName + ".Create";
/// <summary>
/// Permission to edit existing {entities}.
/// </summary>
public const string Edit = GroupName + ".Edit";
/// <summary>
/// Permission to delete {entities}.
/// </summary>
public const string Delete = GroupName + ".Delete";
}
When entity supports activation lifecycle:
// In interface
Task<{Entity}Dto> ActivateAsync(Guid id);
Task<{Entity}Dto> DeactivateAsync(Guid id);
// In permissions
public const string Activate = GroupName + ".Activate";
public const string Deactivate = GroupName + ".Deactivate";
// In filter DTO
public bool? IsActive { get; set; }
When entity has parent-child relationships:
// In output DTO
public Guid? ParentId { get; set; }
public string? ParentName { get; set; }
public List<{Entity}Dto> Children { get; set; } = new();
// In interface
Task<List<{Entity}Dto>> GetChildrenAsync(Guid parentId);
Task MoveAsync(Guid id, Guid? newParentId);
// In filter DTO
public Guid? ParentId { get; set; }
public bool IncludeChildren { get; set; }
For dropdown lists and references:
// Lightweight DTO for dropdowns
public class {Entity}LookupDto
{
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
}
// In interface
Task<List<{Entity}LookupDto>> GetLookupAsync();
When bulk operations are needed:
// In interface
Task<int> DeleteManyAsync(List<Guid> ids);
Task<List<{Entity}Dto>> CreateManyAsync(List<Create{Entity}Dto> inputs);
// In permissions
public const string DeleteMany = GroupName + ".DeleteMany";
When generating contracts, verify:
IApplicationService{ProjectName}.{Feature}FullAuditedEntityDto<Guid> (or appropriate base)PagedAndSortedResultRequestDto{Project}.{Resource}.{Action} pattern= new() or = [])This skill is used by backend-architect agent in Phase 1 of /add-feature:
Phase 1: backend-architect generates:
├── docs/features/{feature}/technical-design.md
├── Application.Contracts/{Feature}/I{Entity}AppService.cs
├── Application.Contracts/{Feature}/{Entity}Dto.cs
├── Application.Contracts/{Feature}/Create{Entity}Dto.cs
├── Application.Contracts/{Feature}/Update{Entity}Dto.cs
├── Application.Contracts/{Feature}/Get{Entity}sInput.cs
└── Application.Contracts/Permissions/{Entity}Permissions.cs
Phase 2 (parallel):
├── abp-developer: Implements against interface
└── qa-engineer: Writes tests against interface
| Component | Pattern | Example |
|---|---|---|
| Interface | I{Entity}AppService | IBookAppService |
| Output DTO | {Entity}Dto | BookDto |
| Create DTO | Create{Entity}Dto | CreateBookDto |
| Update DTO | Update{Entity}Dto | UpdateBookDto |
| Filter DTO | Get{Entity}sInput | GetBooksInput |
| Lookup DTO | {Entity}LookupDto | BookLookupDto |
| Permissions | {Entity}Permissions | BookPermissions |
abp-framework-patterns - Full ABP patterns including implementationtechnical-design-patterns - Technical design document templatesapi-design-principles - REST API design best practicesxiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience