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

module-resolution.jsonverifiers/

{
  "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"
    }
  ]
}

tile.json