TypeScript project structure, strict tsconfig, module resolution, path aliases, shared types, and monorepo patterns
90
84%
Does it follow best practices?
Impact
100%
1.09xAverage score across 5 eval scenarios
Passed
No known issues
{
"instruction": "Use correct module resolution for the target runtime",
"relevant_when": "Agent creates or configures a TypeScript project with tsconfig.json",
"context": "Module resolution must match the runtime: NodeNext for Node.js ESM projects (with \"type\": \"module\" in package.json), bundler for frontend projects using Vite/webpack/Next.js. Using the wrong moduleResolution causes 'cannot find module' errors or incorrect import behavior. The module and moduleResolution fields should be consistent.",
"sources": [
{
"type": "file",
"filename": "skills/typescript-project-structure/SKILL.md",
"tile": "tessl-labs/typescript-project-structure@0.2.0"
}
],
"checklist": [
{
"name": "module-resolution-set",
"rule": "tsconfig.json has an explicit moduleResolution setting — either \"NodeNext\" (for Node.js ESM) or \"bundler\" (for frontend/bundled projects). Not left at default or set to \"node\" (legacy CommonJS resolution).",
"relevant_when": "Agent creates any tsconfig.json"
},
{
"name": "module-matches-resolution",
"rule": "The module and moduleResolution fields are consistent: NodeNext/NodeNext for Node.js ESM, ESNext/bundler for bundled frontend projects. Not mismatched combinations like CommonJS with bundler.",
"relevant_when": "Agent creates any tsconfig.json"
},
{
"name": "package-json-type-module",
"rule": "If using NodeNext module resolution, package.json has \"type\": \"module\"",
"relevant_when": "Agent creates a Node.js project with NodeNext module resolution"
}
]
}evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
skills
typescript-project-structure
verifiers