Enforce strict three-layer architecture: thin HTTP routes, pure service logic with domain errors, isolated data access with dependency injection.
94
93%
Does it follow best practices?
Impact
97%
1.08xAverage score across 5 eval scenarios
Passed
No known issues
{
"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"
}
]
}evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
skills
separation-of-concerns
verifiers