CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/aspnet-project-structure

ASP.NET Core project structure — minimal APIs vs controllers, layer

95

2.50x
Quality

93%

Does it follow best practices?

Impact

100%

2.50x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

aspnet-organized.jsonverifiers/

{
  "instruction": "Separate controllers/endpoints, services, models, DTOs, and middleware into dedicated folders",
  "relevant_when": "Agent builds an ASP.NET Core application with multiple classes",
  "context": "ASP.NET Core projects must separate concerns into folders: Controllers/ or Endpoints/, Services/, Models/, DTOs/, Data/, Exceptions/, Middleware/, and Extensions/. Business logic lives in services, not controllers.",
  "sources": [
    {
      "type": "file",
      "filename": "skills/aspnet-project-structure/SKILL.md",
      "tile": "tessl-labs/aspnet-project-structure@0.1.3"
    }
  ],
  "checklist": [
    {
      "name": "controller-service-separated",
      "rule": "Agent creates separate Controller (or Endpoint) and Service classes in their own folders",
      "relevant_when": "Agent builds a multi-class ASP.NET Core application"
    },
    {
      "name": "models-dtos-separated",
      "rule": "Agent places EF Core entity classes in Models/ and DTO records in DTOs/, never exposing entities directly in API responses",
      "relevant_when": "Agent defines both database entities and API response shapes"
    },
    {
      "name": "exceptions-middleware-folders",
      "rule": "Agent creates Exceptions/ folder with typed exception classes and Middleware/ folder with centralized error handling",
      "relevant_when": "Agent builds an ASP.NET Core application with error handling"
    },
    {
      "name": "data-folder-dbcontext",
      "rule": "Agent places DbContext in a Data/ folder, not in the project root or alongside controllers",
      "relevant_when": "Agent configures Entity Framework Core in an ASP.NET Core project"
    }
  ]
}

tile.json