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

separate-data-layer.jsonverifiers/

{
  "instruction": "Data access must live in dedicated repository or store modules, not in service files",
  "relevant_when": "Agent creates services that need to read or write data from a database",
  "context": "SQL queries, ORM calls, and database operations must be isolated in dedicated repository/store files (e.g., userRepo.ts, orderStore.ts). Services call repository functions instead of writing SQL directly. Repositories return domain objects or null, not raw database rows, and never make business decisions.",
  "sources": [
    {
      "type": "file",
      "filename": "skills/separation-of-concerns/SKILL.md",
      "tile": "tessl-labs/separation-of-concerns@0.1.3"
    }
  ],
  "checklist": [
    {
      "name": "repo-module-exists",
      "rule": "Data access is in a dedicated repository/store module file, separate from service files",
      "relevant_when": "Agent creates services that interact with a database"
    },
    {
      "name": "no-sql-in-services",
      "rule": "Service files do not contain SQL queries, ORM query builders, or direct database client calls",
      "relevant_when": "Agent writes service layer code that needs data"
    },
    {
      "name": "repo-returns-domain-objects",
      "rule": "Repository functions return typed domain objects or null, mapping from raw database rows",
      "relevant_when": "Agent creates repository/data access functions"
    }
  ]
}

tile.json