CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/separation-of-concerns

Enforce strict three-layer architecture: thin HTTP routes, pure service logic with domain errors, isolated data access with dependency injection.

94

1.08x
Quality

93%

Does it follow best practices?

Impact

97%

1.08x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

no-http-in-services.jsonverifiers/

{
  "instruction": "Service layer must not reference HTTP objects or framework-specific context",
  "relevant_when": "Agent creates a service or business logic layer",
  "context": "Services should be callable from any context (routes, background jobs, CLI, tests, other services). HTTP objects (req, res, request, response, ctx, context) and HTTP-specific concepts (status codes, headers, cookies) tie them to the web framework and prevent reuse.",
  "sources": [
    {
      "type": "file",
      "filename": "skills/separation-of-concerns/SKILL.md",
      "tile": "tessl-labs/separation-of-concerns@0.1.3"
    }
  ],
  "checklist": [
    {
      "name": "no-req-res-in-service",
      "rule": "Service/business logic files do not import, accept as parameters, or reference req/res/request/response/ctx/context HTTP objects",
      "relevant_when": "Agent creates service layer functions"
    },
    {
      "name": "no-http-status-in-service",
      "rule": "Service files do not set or reference HTTP status codes (200, 400, 404, 500 etc.) or import HTTP framework modules",
      "relevant_when": "Agent creates service layer error handling"
    },
    {
      "name": "services-accept-plain-data",
      "rule": "Service functions accept plain objects, primitives, or typed DTOs as input — not HTTP request objects",
      "relevant_when": "Agent defines service function signatures"
    }
  ]
}

tile.json