CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/typescript-project-structure

TypeScript project structure, strict tsconfig, module resolution, path aliases, shared types, and monorepo patterns

90

1.09x
Quality

84%

Does it follow best practices?

Impact

100%

1.09x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-1/

{
  "context": "Tests whether the agent sets up a TypeScript CLI tool project with strict tsconfig, NodeNext ESM, declaration files, test config, path aliases, and proper project organization for an npm-publishable package.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "strict: true",
      "description": "tsconfig.json has \"strict\": true in compilerOptions",
      "max_score": 10
    },
    {
      "name": "noUncheckedIndexedAccess",
      "description": "tsconfig.json has \"noUncheckedIndexedAccess\": true",
      "max_score": 8
    },
    {
      "name": "NodeNext module resolution",
      "description": "tsconfig.json uses module: \"NodeNext\" and moduleResolution: \"NodeNext\" for proper Node.js ESM",
      "max_score": 10
    },
    {
      "name": "type: module in package.json",
      "description": "package.json has \"type\": \"module\" for ESM support",
      "max_score": 8
    },
    {
      "name": "Declaration files enabled",
      "description": "tsconfig.json has \"declaration\": true so type definitions are generated for package consumers",
      "max_score": 8
    },
    {
      "name": "Source in src/ directory",
      "description": "All source code is in src/ with rootDir set to src and outDir set to dist",
      "max_score": 8
    },
    {
      "name": "Test tsconfig extends base",
      "description": "A tsconfig.test.json exists that extends the base tsconfig.json and includes the tests/ directory",
      "max_score": 8
    },
    {
      "name": "Path alias configured",
      "description": "tsconfig.json has path alias configured (e.g., @/* -> ./src/*)",
      "max_score": 6
    },
    {
      "name": "Type-only imports used",
      "description": "At least some type-only imports use 'import type' syntax rather than regular imports",
      "max_score": 8
    },
    {
      "name": "Proper .gitignore",
      "description": ".gitignore includes dist/ and node_modules/",
      "max_score": 6
    },
    {
      "name": "Essential scripts present",
      "description": "package.json has scripts for build, dev, typecheck (tsc --noEmit), and test",
      "max_score": 10
    },
    {
      "name": "Types in dedicated directory",
      "description": "Type definitions are in a dedicated types/ directory or file, not inlined across implementation files",
      "max_score": 6
    },
    {
      "name": "Bin entry in package.json",
      "description": "package.json has a \"bin\" field pointing to the built CLI entry point (dist/index.js or similar)",
      "max_score": 4
    }
  ]
}

evals

scenario-1

criteria.json

task.md

tile.json